Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
elpa
elpa
Commits
db77d245
Commit
db77d245
authored
Jul 11, 2016
by
Andreas Marek
Browse files
Merge branch 'master' into ELPA_GPU
parents
f686272f
612ed368
Changes
15
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
.gitlab-ci.yml
View file @
db77d245
This diff is collapsed.
Click to expand it.
Makefile.am
View file @
db77d245
...
...
@@ -53,7 +53,7 @@ EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
src/redist_band.X90
lib_LTLIBRARIES
=
libelpa@SUFFIX@.la
libelpa@SUFFIX@
_la_LINK
=
$(FCLINK)
$(AM_LDFLAGS)
-version-info
$(ELPA_SO_VERSION)
-lstdc
++
libelpa@SUFFIX@
_la_LINK
=
$(FCLINK)
$(AM_LDFLAGS)
-version-info
$(ELPA_SO_VERSION)
libelpa@SUFFIX@
_la_LIBADD
=
libelpa@SUFFIX@_public.la libelpa@SUFFIX@_private.la
libelpa@SUFFIX@
_la_SOURCES
=
...
...
@@ -302,20 +302,13 @@ noinst_PROGRAMS = \
elpa2_test_complex@SUFFIX@
\
elpa2_test_complex_default@SUFFIX@
\
elpa2_test_complex_api@SUFFIX@
\
elpa1_real_toeplitz@SUFFIX@
#if WITH_OPENMP
# nothing yet
#endif
if
!WITH_OPENMP
noinst_PROGRAMS
+=
\
elpa1_real_toeplitz@SUFFIX@
\
elpa1_test_real_with_c@SUFFIX@
\
elpa1_test_real_c_version@SUFFIX@
\
elpa1_test_complex_c_version@SUFFIX@
\
elpa2_test_real_c_version@SUFFIX@
\
elpa2_test_complex_c_version@SUFFIX@
endif
if
WANT_SINGLE_PRECISION_COMPLEX
noinst_PROGRAMS
+=
\
...
...
@@ -374,11 +367,9 @@ libelpatest@SUFFIX@_la_SOURCES += \
test
/shared/redirect.F90
endif
if
!WITH_OPENMP
elpa1_test_real_c_version@SUFFIX@
_SOURCES
=
test
/C/elpa1_test_real_c_version.c
elpa1_test_real_c_version@SUFFIX@
_LDADD
=
$(build_lib)
elpa1_test_real_c_version@SUFFIX@
_LDADD
=
$(build_lib)
$(FCLIBS)
elpa1_test_real_c_version@SUFFIX@
_FCFLAGS
=
$(AM_FCFLAGS)
@FC_MODOUT@private_modules @FC_MODINC@private_modules
elpa1_test_real_c_version@SUFFIX@
_LINK
=
$(LINK)
$(FCLIBS)
EXTRA_elpa1_test_real_c_version@SUFFIX@
_DEPENDENCIES
=
test
/Fortran/elpa_print_headers.X90
elpa1_test_real_with_c@SUFFIX@
_SOURCES
=
test
/Fortran/test_real_with_c.F90
...
...
@@ -387,23 +378,19 @@ elpa1_test_real_with_c@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) @FC_MODOUT@private_module
EXTRA_elpa1_test_real_with_c@SUFFIX@
_DEPENDENCIES
=
test
/Fortran/elpa_print_headers.X90
elpa1_test_complex_c_version@SUFFIX@
_SOURCES
=
test
/C/elpa1_test_complex_c_version.c
elpa1_test_complex_c_version@SUFFIX@
_LDADD
=
$(build_lib)
elpa1_test_complex_c_version@SUFFIX@
_LDADD
=
$(build_lib)
$(FCLIBS)
elpa1_test_complex_c_version@SUFFIX@
_FCFLAGS
=
$(AM_FCFLAGS)
@FC_MODOUT@private_modules @FC_MODINC@private_modules
elpa1_test_complex_c_version@SUFFIX@
_LINK
=
$(LINK)
$(FCLIBS)
EXTRA_elpa1_test_complex_c_version@SUFFIX@
_DEPENDENCIES
=
test
/Fortran/elpa_print_headers.X90
elpa2_test_real_c_version@SUFFIX@
_SOURCES
=
test
/C/elpa2_test_real_c_version.c
elpa2_test_real_c_version@SUFFIX@
_LDADD
=
$(build_lib)
elpa2_test_real_c_version@SUFFIX@
_LDADD
=
$(build_lib)
$(FCLIBS)
elpa2_test_real_c_version@SUFFIX@
_FCFLAGS
=
$(AM_FCFLAGS)
@FC_MODOUT@private_modules @FC_MODINC@private_modules
elpa2_test_real_c_version@SUFFIX@
_LINK
=
$(LINK)
$(FCLIBS)
EXTRA_elpa2_test_real_c_version@SUFFIX@
_DEPENDENCIES
=
test
/Fortran/elpa_print_headers.X90
elpa2_test_complex_c_version@SUFFIX@
_SOURCES
=
test
/C/elpa2_test_complex_c_version.c
elpa2_test_complex_c_version@SUFFIX@
_LDADD
=
$(build_lib)
elpa2_test_complex_c_version@SUFFIX@
_LDADD
=
$(build_lib)
$(FCLIBS)
elpa2_test_complex_c_version@SUFFIX@
_FCFLAGS
=
$(AM_FCFLAGS)
@FC_MODOUT@private_modules @FC_MODINC@private_modules
elpa2_test_complex_c_version@SUFFIX@
_LINK
=
$(LINK)
$(FCLIBS)
EXTRA_elpa2_test_complex_c_version@SUFFIX@
_DEPENDENCIES
=
test
/Fortran/elpa_print_headers.X90
endif
elpa1_test_real@SUFFIX@
_SOURCES
=
test
/Fortran/test_real.F90
elpa1_test_real@SUFFIX@
_LDADD
=
$(build_lib)
...
...
@@ -556,17 +543,12 @@ check_SCRIPTS = \
elpa2_test_real_api@SUFFIX@.sh
\
elpa2_test_complex_api@SUFFIX@.sh
\
elpa1_real_toeplitz@SUFFIX@.sh
\
elpa2_print_kernels@SUFFIX@
if
!WITH_OPENMP
check_SCRIPTS
+=
\
elpa1_test_real_with_c@SUFFIX@.sh
\
elpa2_print_kernels@SUFFIX@
\
elpa1_test_real_c_version@SUFFIX@.sh
\
elpa1_test_complex_c_version@SUFFIX@.sh
\
elpa2_test_real_c_version@SUFFIX@.sh
\
elpa2_test_complex_c_version@SUFFIX@.sh
endif
if
WANT_SINGLE_PRECISION_REAL
check_SCRIPTS
+=
\
...
...
configure.ac
View file @
db77d245
...
...
@@ -300,26 +300,26 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
)
AC_MSG_RESULT([${can_compile_avx}])
#
if test "${can_compile_avx}" = "yes" ; then
#
AC_MSG_CHECKING([whether we can compile AVX intrinsics in C++])
#
AC_LANG_PUSH([C++])
#
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#
#include <x86intrin.h>
#
int main(int argc, char **argv){
#
double* q;
#
__m256d a1_1 = _mm256_load_pd(q);
#
return 0;
#
}
#
])],
#
[can_compile_avx=yes],
#
[can_compile_avx=no]
#
)
#
AC_LANG_POP([C++])
#
AC_MSG_RESULT([${can_compile_avx}])
#
if test "${can_compile_avx}" = "no" ; then
#
AC_MSG_WARN([Cannot compile C++ with AVX: disabling AVX alltogether])
#
fi
#
fi
dnl
if test "${can_compile_avx}" = "yes" ; then
dnl
AC_MSG_CHECKING([whether we can compile AVX intrinsics in C++])
dnl
AC_LANG_PUSH([C++])
dnl
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
dnl
#include <x86intrin.h>
dnl
int main(int argc, char **argv){
dnl
double* q;
dnl
__m256d a1_1 = _mm256_load_pd(q);
dnl
return 0;
dnl
}
dnl
])],
dnl
[can_compile_avx=yes],
dnl
[can_compile_avx=no]
dnl
)
dnl
AC_LANG_POP([C++])
dnl
AC_MSG_RESULT([${can_compile_avx}])
dnl
if test "${can_compile_avx}" = "no" ; then
dnl
AC_MSG_WARN([Cannot compile C++ with AVX: disabling AVX alltogether])
dnl
fi
dnl
fi
AC_MSG_CHECKING([whether we can compile AVX2 intrinsics in C])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
...
...
@@ -335,27 +335,28 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
[can_compile_avx2=no]
)
AC_MSG_RESULT([${can_compile_avx2}])
#if test "${can_compile_avx2}" = "yes" ; then
# AC_MSG_CHECKING([whether we can compile AVX2 intrinsics in C++])
# AC_LANG_PUSH([C++])
# AC_COMPILE_IFELSE([AC_LANG_SOURCE([
# #include <x86intrin.h>
# int main(int argc, char **argv){
# double* q;
# __m256d q1 = _mm256_load_pd(q);
# __m256d y1 = _mm256_fmadd_pd(q1, q1, q1);
# return 0;
# }
# ])],
# [can_compile_avx2=yes],
# [can_compile_avx2=no]
# )
# AC_LANG_POP([C++])
# AC_MSG_RESULT([${can_compile_avx2}])
# if test "${can_compile_avx2}" = "no" ; then
# AC_MSG_WARN([Cannot compile C++ with AVX2!])
# fi
#fi
dnl if test "${can_compile_avx2}" = "yes" ; then
dnl AC_MSG_CHECKING([whether we can compile AVX2 intrinsics in C++])
dnl AC_LANG_PUSH([C++])
dnl AC_COMPILE_IFELSE([AC_LANG_SOURCE([
dnl #include <x86intrin.h>
dnl int main(int argc, char **argv){
dnl double* q;
dnl __m256d q1 = _mm256_load_pd(q);
dnl __m256d y1 = _mm256_fmadd_pd(q1, q1, q1);
dnl return 0;
dnl }
dnl ])],
dnl [can_compile_avx2=yes],
dnl [can_compile_avx2=no]
dnl )
dnl AC_LANG_POP([C++])
dnl AC_MSG_RESULT([${can_compile_avx2}])
dnl if test "${can_compile_avx2}" = "no" ; then
dnl AC_MSG_WARN([Cannot compile C++ with AVX2!])
dnl fi
dnl fi
if test "${can_compile_avx}" = "yes" ; then
install_real_avx_block2=yes
...
...
@@ -586,6 +587,9 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
[fortran_can_check_environment=no]
)
AC_MSG_RESULT([${fortran_can_check_environment}])
if test x"${fortran_can_check_environment}" = x"yes" ; then
AC_DEFINE([HAVE_ENVIRONMENT_CHECKING],[1],[Fortran can query environment variables])
fi
dnl check whether GPU version is requested
...
...
@@ -687,10 +691,32 @@ else
install_complex_bgq=no
fi
dnl environment variable setting of kernel
if test x"${fortran_can_check_environment}" = x"yes" ; then
AC_DEFINE([HAVE_ENVIRONMENT_CHECKING],[1],[Fortran can querry environment variables])
dnl Test possibility of 'use mpi', if requested
if test x"${with_mpi}" = x"yes" ; then
AC_ARG_ENABLE([mpi-module],
AS_HELP_STRING([--disable-mpi-module],
[Do not use the Fortran MPI module, get interfaces by 'include "mpif.h')]),
[],
[enable_mpi_module=yes])
if test x"${enable_mpi_module}" = x"yes" ; then
AC_MSG_CHECKING(whether Fortran mpi module can be used)
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
program test_mpi_module
use mpi
real :: time
time = MPI_WTime()
end program
])],
[can_use_fortran_mpi_module=yes],
[can_use_fortran_mpi_module=no]
)
AC_MSG_RESULT([${can_use_fortran_mpi_module}])
if test x"${can_use_fortran_mpi_module}" = x"yes" ; then
AC_DEFINE([HAVE_MPI_MODULE],[1],[can use the Fortran mpi module])
else
AC_MSG_ERROR([Could not compile a Fortran program with an 'use mpi' statement. You can try again with --disable-mpi-module])
fi
fi
fi
dnl default value
...
...
elpa.spec
View file @
db77d245
...
...
@@ -39,17 +39,15 @@ License: LGPL-3.0
Group: System/Libraries
Url: https://elpa.rzg.mpg.de/
Source0: https://elpa.mpcdf.mpg.de/html/Releases/%{version}/%{name}-%{version}.tar.gz
Requires:
openmpi
Build
Requires:
c_compiler
# For SLE_11_SP4:
%if %{sle_11_sp4} == 1
BuildRequires: gcc48-c++
BuildRequires: gcc48-fortran
%else
BuildRequires: gcc-c++ >= 4.8
BuildRequires: gcc-fortran >= 4.8
%endif
BuildRequires: strace
BuildRequires: openmpi-devel
Requires: openmpi
BuildRequires: blas-devel
BuildRequires: lapack-devel
BuildRequires: pkg-config
...
...
@@ -123,7 +121,6 @@ Summary: Development files for %{name}
Group: Development/Libraries
Requires: %{name} = %{version}
Requires: openmpi
Requires: libstdc++-devel
Requires: lapack-devel
Requires: blas-devel
Requires: libscalapack2-openmpi-devel
...
...
@@ -169,7 +166,6 @@ Summary: Development files for %{name}_openmp
Group: Development/Libraries
Requires: %{name}_openmp = %{version}
Requires: openmpi
Requires: libstdc++-devel
Requires: lapack-devel
Requires: blas-devel
Requires: libscalapack2-openmpi-devel
...
...
@@ -229,7 +225,12 @@ pushd build
ln -s ../configure .
%endif
%configure --docdir=%{_docdir}/%{name}-%{version}
%configure \
%if %{sle_11_sp4} == 1
--disable-mpi-module \
%endif
--docdir=%{_docdir}/%{name}-%{version}
make %{?_smp_mflags} V=1
popd
...
...
@@ -245,10 +246,17 @@ pushd build_openmp
ln -s ../configure .
%endif
%configure --docdir=%{_docdir}/%{name}_openmp-%{version} --enable-openmp
%configure \
%if %{sle_11_sp4} == 1
--disable-mpi-module \
%endif
--docdir=%{_docdir}/%{name}_openmp-%{version} \
--enable-openmp
make %{?_smp_mflags} V=1
popd
%endif
%endif # OpenMP
%check
...
...
fdep/fortran_dependencies.mk
View file @
db77d245
...
...
@@ -11,6 +11,9 @@ endef
_f90_verbose
=
$
(
_f90_verbose_
$(V)
)
_f90_verbose_
=
$
(
_f90_verbose_
$(AM_DEFAULT_VERBOSITY)
)
_f90_verbose_0
=
@echo
"
$1
"
;
_f90_only_verbose
=
$
(
_f90_only_verbose_
$(V)
)
_f90_only_verbose_
=
@
_f90_only_verbose_0
=
@
_f90_targets
=
$(
call
translate_name,
$(PROGRAMS)
$(LTLIBRARIES)
)
FORTRAN_CPP
?=
cpp
-P
-traditional
-Wall
-Werror
...
...
@@ -92,9 +95,26 @@ endef
ifneq
($(call is_clean),1)
include
$(_f90_depfile)
endif
# $1 string
# $2 file
define
append_to
$(_f90_only_verbose)echo
'$1'
>>
$2
endef
# $1 program
define
program_dependencies
$(_f90_only_verbose)rm
-f
.$p.dep.args
$(foreach
argument,$(_$p_use_mods)
$(_$p_def_mods)
$(foreach
l,$(call
recursive_lib_deps,$p),$(_$l_use_mods)
$(_$l_def_mods)),$(call
append_to,$(argument),.$p.dep.args))
$(_f90_only_verbose)$(top_srcdir)/fdep/fortran_dependencies.pl
$p
<
.$p.dep.args
>>
$@
||
{
rm
$@;
exit
1;
}
$(_f90_only_verbose)rm
-f
.$p.dep.args
endef
$(_f90_depfile)
:
$(top_srcdir)/fdep/fortran_dependencies.pl $(foreach p
,
$(_f90_targets)
,
$(_$p_use_mods) $(_$p_def_mods)) | $(foreach p
,
$(_f90_targets)
,
$(_f90_depdir)/$p)
$(
call
_f90_verbose,F90 DEPS
$@
)
echo
>
$@
;
$(
foreach
p,
$(_f90_targets)
,
$(
top_srcdir)
/fdep/fort
ra
n
_dependencies
.pl
$p
$
(
_
$p_use_mods
)
$
(
_
$p_def_mods
)
$(
foreach
l,
$(
call
recursive_lib_deps,
$p
)
,
$
(
_
$l_use_mods
)
$
(
_
$l_def_mods
))
>>
$@
;
$(newline
)
)
$(
foreach
p,
$(_f90_targets)
,
$(
call
prog
ra
m
_dependencies
,
$p
))
$(_f90_depdir)
:
@
mkdir
$@
...
...
fdep/fortran_dependencies.pl
View file @
db77d245
...
...
@@ -42,7 +42,8 @@ sub add_def {
my
$target
=
shift
;
foreach
my
$file
(
@ARGV
)
{
foreach
my
$file
(
<>
)
{
chomp
(
$file
);
if
(
exists
$files
{
$file
})
{
next
;
}
else
{
...
...
m4/ax_elpa_openmp.m4
View file @
db77d245
...
...
@@ -78,7 +78,7 @@ AC_DEFUN([AX_ELPA_OPENMP],
dnl will fail (since we know that it failed without the option),
dnl therefore the loop will continue searching for an option, and
dnl no output file called 'penmp' or 'mp' is created.
for ac_option in -
qopenmp -
openmp -
f
openmp -xopenmp -mp -omp -qsmp=omp; do
for ac_option in -
f
openmp -
q
openmp -xopenmp -mp -omp -qsmp=omp
-openmp
; do
ac_save_[]_AC_LANG_PREFIX[]FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $ac_option"
AC_LINK_IFELSE([AC_LANG_SOURCE([_AX_ELPA_LANG_OPENMP])],
...
...
src/elpa1_compute_real_template.X90
View file @
db77d245
...
...
@@ -1235,7 +1235,7 @@
integer(kind=ik) :: np_off, nprocs
integer(kind=ik) :: np1, np2, noff, nlen, nmid, n
#ifdef WITH_MPI
integer(kind=ik) :: mpi_status(mpi_status_size)
integer(kind=ik) ::
my_
mpi_status(mpi_status_size)
#endif
logical, intent(in) :: wantDebug
logical, intent(out) :: success
...
...
@@ -1284,9 +1284,9 @@
#ifdef WITH_MPI
#ifdef DOUBLE_PRECISION_REAL
call mpi_recv(d(noff+1), nmid, MPI_REAL8, np_off, 1, mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(d(noff+1), nmid, MPI_REAL8, np_off, 1, mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call mpi_recv(d(noff+1), nmid, MPI_REAL4, np_off, 1, mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(d(noff+1), nmid, MPI_REAL4, np_off, 1, mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -1312,9 +1312,9 @@
#ifdef WITH_MPI
#ifdef DOUBLE_PRECISION_REAL
call mpi_recv(d(noff+nmid+1), nlen-nmid, MPI_REAL8, np_off+np1, 1,mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(d(noff+nmid+1), nlen-nmid, MPI_REAL8, np_off+np1, 1,mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call mpi_recv(d(noff+nmid+1), nlen-nmid, MPI_REAL4, np_off+np1, 1,mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(d(noff+nmid+1), nlen-nmid, MPI_REAL4, np_off+np1, 1,mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -1847,7 +1847,7 @@
integer(kind=ik) :: my_proc, n_procs, my_prow, my_pcol, np_rows, &
np_cols, mpierr
#ifdef WITH_MPI
integer(kind=ik) :: mpi_status(mpi_status_size)
integer(kind=ik) ::
my_
mpi_status(mpi_status_size)
#endif
integer(kind=ik) :: np_next, np_prev, np_rem
integer(kind=ik) :: idx(na), idx1(na), idx2(na)
...
...
@@ -2545,11 +2545,11 @@
#ifdef DOUBLE_PRECISION_REAL
call MPI_Sendrecv_replace(qtmp1, l_rows*max_local_cols, MPI_REAL8, &
np_next, 1111, np_prev, 1111, &
mpi_comm_cols, mpi_status, mpierr)
mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call MPI_Sendrecv_replace(qtmp1, l_rows*max_local_cols, MPI_REAL4, &
np_next, 1111, np_prev, 1111, &
mpi_comm_cols, mpi_status, mpierr)
mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#endif /* WITH_MPI */
...
...
@@ -2801,9 +2801,9 @@
#ifdef WITH_MPI
#ifdef DOUBLE_PRECISION_REAL
call mpi_recv(qtmp(1,nc), l_rows, MPI_REAL8, pc1, mod(i,4096), mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(qtmp(1,nc), l_rows, MPI_REAL8, pc1, mod(i,4096), mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call mpi_recv(qtmp(1,nc), l_rows, MPI_REAL4, pc1, mod(i,4096), mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(qtmp(1,nc), l_rows, MPI_REAL4, pc1, mod(i,4096), mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -2868,11 +2868,11 @@
#ifdef DOUBLE_PRECISION_REAL
call mpi_sendrecv(q(l_rqs,lc1), l_rows, MPI_REAL8, pc2, 1, &
tmp, l_rows, MPI_REAL8, pc2, 1, &
mpi_comm_cols, mpi_status, mpierr)
mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call mpi_sendrecv(q(l_rqs,lc1), l_rows, MPI_REAL4, pc2, 1, &
tmp, l_rows, MPI_REAL4, pc2, 1, &
mpi_comm_cols, mpi_status, mpierr)
mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -2886,11 +2886,11 @@
#ifdef DOUBLE_PRECISION_REAL
call mpi_sendrecv(q(l_rqs,lc2), l_rows, MPI_REAL8, pc1, 1, &
tmp, l_rows, MPI_REAL8, pc1, 1, &
mpi_comm_cols, mpi_status, mpierr)
mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call mpi_sendrecv(q(l_rqs,lc2), l_rows, MPI_REAL4, pc1, 1, &
tmp, l_rows, MPI_REAL4, pc1, 1, &
mpi_comm_cols, mpi_status, mpierr)
mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -2966,10 +2966,10 @@
#ifdef DOUBLE_PRECISION_REAL
call MPI_Sendrecv_replace(z, n, MPI_REAL8, np_next, 1111, np_prev, 1111, &
mpi_comm_cols, mpi_status, mpierr)
mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call MPI_Sendrecv_replace(z, n, MPI_REAL4, np_next, 1111, np_prev, 1111, &
mpi_comm_cols, mpi_status, mpierr)
mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#endif /* WITH_MPI */
...
...
@@ -3039,9 +3039,9 @@
#ifdef WITH_MPI
#ifdef DOUBLE_PRECISION_REAL
call mpi_recv(tmp, n, MPI_REAL8, np, 1111, mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(tmp, n, MPI_REAL8, np, 1111, mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call mpi_recv(tmp, n, MPI_REAL4, np, 1111, mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(tmp, n, MPI_REAL4, np, 1111, mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -3065,10 +3065,10 @@
#ifdef DOUBLE_PRECISION_REAL
call mpi_send(tmp, n, MPI_REAL8, npc_0, 1111, mpi_comm_cols, mpierr)
call mpi_recv(z ,n, MPI_REAL8, npc_0, 1111, mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(z ,n, MPI_REAL8, npc_0, 1111, mpi_comm_cols,
my_
mpi_status, mpierr)
#else
call mpi_send(tmp, n, MPI_REAL4, npc_0, 1111, mpi_comm_cols, mpierr)
call mpi_recv(z ,n, MPI_REAL4, npc_0, 1111, mpi_comm_cols, mpi_status, mpierr)
call mpi_recv(z ,n, MPI_REAL4, npc_0, 1111, mpi_comm_cols,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
src/elpa2_compute_complex_template.X90
View file @
db77d245
...
...
@@ -1768,7 +1768,7 @@
integer(kind=ik) :: max_threads, my_thread, my_block_s, my_block_e, iter
integer(kind=ik) :: omp_get_max_threads
#ifdef WITH_MPI
integer(kind=ik) :: mpi_status(MPI_STATUS_SIZE)
integer(kind=ik) ::
my_
mpi_status(MPI_STATUS_SIZE)
#endif
complex(kind=COMPLEX_DATATYPE), allocatable :: hv_t(:,:), tau_t(:)
#endif
...
...
@@ -2138,9 +2138,9 @@
#ifdef WITH_MPI
#ifdef DOUBLE_PRECISION_COMPLEX
call mpi_recv(hv, nb, MPI_COMPLEX16, my_pe-1, 2, mpi_comm, mpi_status, mpierr)
call mpi_recv(hv, nb, MPI_COMPLEX16, my_pe-1, 2, mpi_comm,
my_
mpi_status, mpierr)
#else
call mpi_recv(hv, nb, MPI_COMPLEX8, my_pe-1, 2, mpi_comm, mpi_status, mpierr)
call mpi_recv(hv, nb, MPI_COMPLEX8, my_pe-1, 2, mpi_comm,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -2357,7 +2357,7 @@
! Send our first column to previous PE
if (my_pe>0 .and. na_s <= na) then
#ifdef WITH_MPI
call mpi_wait(ireq_ab,mpi_status,mpierr)
call mpi_wait(ireq_ab,
my_
mpi_status,mpierr)
#endif
ab_s(1:nb+1) = ab(1:nb+1,na_s-n_off)
#ifdef WITH_MPI
...
...
@@ -2378,9 +2378,9 @@
#ifdef WITH_MPI
#ifdef DOUBLE_PRECISION_COMPLEX
call mpi_recv(ab(1,ne-n_off), nb+1, MPI_COMPLEX16, my_pe+1, 1, mpi_comm, mpi_status, mpierr)
call mpi_recv(ab(1,ne-n_off), nb+1, MPI_COMPLEX16, my_pe+1, 1, mpi_comm,
my_
mpi_status, mpierr)
#else
call mpi_recv(ab(1,ne-n_off), nb+1, MPI_COMPLEX8, my_pe+1, 1, mpi_comm, mpi_status, mpierr)
call mpi_recv(ab(1,ne-n_off), nb+1, MPI_COMPLEX8, my_pe+1, 1, mpi_comm,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -2397,7 +2397,7 @@
if (istep>=max_threads .and. ne < na) then
#ifdef WITH_MPI
call mpi_wait(ireq_hv,mpi_status,mpierr)
call mpi_wait(ireq_hv,
my_
mpi_status,mpierr)
#endif
hv_s(1) = tau_t(max_threads)
hv_s(2:) = hv_t(2:,max_threads)
...
...
@@ -2512,7 +2512,7 @@
#ifdef WITH_MPI
#ifdef WITH_OPENMP
call mpi_recv(ab(1,ne), nb+1, MPI_COMPLEX16, my_pe+1, 1, mpi_comm, mpi_status, mpierr)
call mpi_recv(ab(1,ne), nb+1, MPI_COMPLEX16, my_pe+1, 1, mpi_comm,
my_
mpi_status, mpierr)
#else
call mpi_recv(ab(1,ne), nb+1, MPI_COMPLEX16, my_pe+1, 1, mpi_comm, MPI_STATUS_IGNORE, mpierr)
...
...
@@ -2544,7 +2544,7 @@
#ifdef WITH_MPI
#ifdef WITH_OPENMP
call mpi_recv(ab(1,ne), nb+1, MPI_COMPLEX8, my_pe+1, 1, mpi_comm, mpi_status, mpierr)
call mpi_recv(ab(1,ne), nb+1, MPI_COMPLEX8, my_pe+1, 1, mpi_comm,
my_
mpi_status, mpierr)
#else
call mpi_recv(ab(1,ne), nb+1, MPI_COMPLEX8, my_pe+1, 1, mpi_comm, MPI_STATUS_IGNORE, mpierr)
...
...
@@ -2612,7 +2612,7 @@
#ifdef WITH_MPI
#ifdef WITH_OPENMP
call mpi_wait(ireq_hv,mpi_status,mpierr)
call mpi_wait(ireq_hv,
my_
mpi_status,mpierr)
#else
call mpi_wait(ireq_hv,MPI_STATUS_IGNORE,mpierr)
#endif
...
...
@@ -2670,7 +2670,7 @@
#ifdef WITH_MPI
#ifdef WITH_OPENMP
call mpi_wait(ireq_ab,mpi_status,mpierr)
call mpi_wait(ireq_ab,
my_
mpi_status,mpierr)
#else
call mpi_wait(ireq_ab,MPI_STATUS_IGNORE,mpierr)
#endif
...
...
@@ -2797,7 +2797,7 @@
if (hh_cnt(iblk) == snd_limits(hh_dst(iblk)+1,iblk)-snd_limits(hh_dst(iblk),iblk)) then
! Wait for last transfer to finish
#ifdef WITH_MPI
call mpi_wait(ireq_hhs(iblk), mpi_status, mpierr)
call mpi_wait(ireq_hhs(iblk),
my_
mpi_status, mpierr)
#endif
! Copy vectors into send buffer
hh_send(:,1:hh_cnt(iblk),iblk) = hh_gath(:,1:hh_cnt(iblk),iblk)
...
...
@@ -2835,8 +2835,8 @@
#ifdef WITH_OPENMP
#ifdef WITH_MPI
call mpi_wait(ireq_ab,mpi_status,mpierr)
call mpi_wait(ireq_hv,mpi_status,mpierr)
call mpi_wait(ireq_ab,
my_
mpi_status,mpierr)
call mpi_wait(ireq_hv,
my_
mpi_status,mpierr)
allocate(mpi_statuses(MPI_STATUS_SIZE,max(nblocks,num_chunks)), stat=istat, errmsg=errorMessage)
if (istat .ne. 0) then
...
...
@@ -3114,7 +3114,7 @@
#ifdef WITH_OPENMP
integer(kind=ik), allocatable :: mpi_statuses(:,:)
#ifdef WITH_MPI
integer(kind=ik) :: mpi_status(MPI_STATUS_SIZE)
integer(kind=ik) ::
my_
mpi_status(MPI_STATUS_SIZE)
#endif
#endif
...
...
@@ -3478,9 +3478,9 @@
#ifdef WITH_MPI
#ifdef DOUBLE_PRECISION_COMPLEX
call MPI_Recv(row, l_nev, MPI_COMPLEX16, src, 0, mpi_comm_rows, mpi_status, mpierr)
call MPI_Recv(row, l_nev, MPI_COMPLEX16, src, 0, mpi_comm_rows,
my_
mpi_status, mpierr)
#else
call MPI_Recv(row, l_nev, MPI_COMPLEX8, src, 0, mpi_comm_rows, mpi_status, mpierr)
call MPI_Recv(row, l_nev, MPI_COMPLEX8, src, 0, mpi_comm_rows,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -3683,9 +3683,9 @@
#ifdef WITH_MPI
#ifdef DOUBLE_PRECISION_COMPLEX
call MPI_Recv(row, l_nev, MPI_COMPLEX16, src, 0, mpi_comm_rows, mpi_status, mpierr)
call MPI_Recv(row, l_nev, MPI_COMPLEX16, src, 0, mpi_comm_rows,
my_
mpi_status, mpierr)
#else
call MPI_Recv(row, l_nev, MPI_COMPLEX8, src, 0, mpi_comm_rows, mpi_status, mpierr)
call MPI_Recv(row, l_nev, MPI_COMPLEX8, src, 0, mpi_comm_rows,
my_
mpi_status, mpierr)
#endif
#else /* WITH_MPI */
...
...
@@ -4235,7 +4235,7 @@
stop
endif
#ifdef WITH_MPI
call MPI_Wait(bottom_recv_request(i), mpi_status, mpierr)
call MPI_Wait(bottom_recv_request(i),
my_
mpi_status, mpierr)
#endif
#else /* WITH_OPENMP */
...
...
@@ -4370,7 +4370,7 @@
stop
endif
#ifdef WITH_MPI
call MPI_Wait(top_recv_request(i), mpi_status, mpierr)
call MPI_Wait(top_recv_request(i),
my_
mpi_status, mpierr)
#endif
#else /* WITH_OPENMP */
...
...
@@ -4493,7 +4493,7 @@
stop
endif
#ifdef WITH_MPI
call MPI_Wait(bottom_send_request(i), mpi_status, mpierr)
call MPI_Wait(bottom_send_request(i),
my_
mpi_status, mpierr)
#endif
#else /* WITH_OPENMP */
...
...
@@ -4669,7 +4669,7 @@
stop
endif
#ifdef WITH_MPI