Loading build/Makefile.in +1 −0 Original line number Diff line number Diff line Loading @@ -456,6 +456,7 @@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGFLAGS = @DEBUGFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ Loading build/configure +23 −1 Original line number Diff line number Diff line Loading @@ -669,6 +669,7 @@ OFFLOADFLAGS BUILDFORTRAN_FALSE BUILDFORTRAN_TRUE ENABLE_ILP64 DEBUGFLAGS HDF5_LDFLAGS CXXCPP LT_SYS_LIBRARY_PATH Loading Loading @@ -813,6 +814,7 @@ with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_debug enable_ilp64 enable_fortran enable_offload Loading Loading @@ -1479,6 +1481,7 @@ Optional Features: --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-debug=FEATURE enable debug of FEATURE [default=no] --enable-ilp64 enable 64-bit indexing [default=yes] --enable-fortran enable legacy FORTRAN compilation [default=auto] --enable-offload enable target offloading (requires g++ version >= Loading Loading @@ -24936,6 +24939,25 @@ esac fi # Configure the optional features # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; if test "x$enableval" = "xAM"; then DEBUGFLAGS="-DDEBUG_AM" fi else case e in #( e) DEBUGFLAGS="" ;; esac fi # Check whether --enable-ilp64 was given. if test ${enable_ilp64+y} then : Loading Loading @@ -25647,7 +25669,7 @@ else case e in #( ;; esac fi CXXFLAGS="$CLANGFLAGS $OPTFLAGS -ggdb $OFFLOADFLAGS $USER_INCLUDE -I$HDF5_INCLUDE $OMPFLAGS $MPIFLAGS $LAPACKFLAGS $MAGMAFLAGS $NVTXFLAGS" CXXFLAGS="$CLANGFLAGS $OPTFLAGS -ggdb $DEBUGFLAGS $OFFLOADFLAGS $USER_INCLUDE -I$HDF5_INCLUDE $OMPFLAGS $MPIFLAGS $LAPACKFLAGS $MAGMAFLAGS $NVTXFLAGS" SUBDIRS="cluster libnptm sphere testing trapping" # Generate the output build/configure.ac +14 −1 Original line number Diff line number Diff line Loading @@ -405,6 +405,19 @@ AS_IF( ) # Configure the optional features AC_ARG_ENABLE( [debug], [AS_HELP_STRING([--enable-debug=FEATURE], [enable debug of FEATURE [default=no]])], [ if test "x$enableval" = "xAM"; then AC_SUBST([DEBUGFLAGS], ["-DDEBUG_AM"]) fi ], [ AC_SUBST([DEBUGFLAGS], [""]) ] ) AC_ARG_ENABLE( [ilp64], [AS_HELP_STRING([--enable-ilp64], [enable 64-bit indexing [default=yes]])], Loading Loading @@ -641,7 +654,7 @@ AS_IF( [AC_SUBST([OMPFLAGS], [""])], [AC_SUBST([OMPFLAGS], [$OMPFLAGS])] ) CXXFLAGS="$CLANGFLAGS $OPTFLAGS -ggdb $OFFLOADFLAGS $USER_INCLUDE -I$HDF5_INCLUDE $OMPFLAGS $MPIFLAGS $LAPACKFLAGS $MAGMAFLAGS $NVTXFLAGS" CXXFLAGS="$CLANGFLAGS $OPTFLAGS -ggdb $DEBUGFLAGS $OFFLOADFLAGS $USER_INCLUDE -I$HDF5_INCLUDE $OMPFLAGS $MPIFLAGS $LAPACKFLAGS $MAGMAFLAGS $NVTXFLAGS" SUBDIRS="cluster libnptm sphere testing trapping" # Generate the output Loading src/cluster/cluster.cpp +66 −9 Original line number Diff line number Diff line Loading @@ -83,10 +83,6 @@ #include "../include/file_io.h" #endif #ifndef INCLUDE_UTILS_H_ #include "../include/utils.h" #endif using namespace std; // I would like to put it all in a struct, but then I'd have to write a constructor for it, due to members defined as references, creating a worse nightmare than the one I'd like to simplify... Loading Loading @@ -374,7 +370,7 @@ void cluster(const string& config_file, const string& data_file, const string& o int myjxi488startoffset = 0; int myMPIstride = ompnumthreads; int myMPIblock = ompnumthreads; // Define here shared arrays of virtual ascii and binary files, so that thread 0 will be able to access the all later // Define here shared arrays of virtual ascii and binary files, so that thread 0 will be able to access them all later VirtualAsciiFile **p_outarray = NULL; VirtualBinaryFile **vtppoanarray = NULL; Loading Loading @@ -766,8 +762,41 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf interval_start = chrono::high_resolution_clock::now(); #ifdef USE_NVTX nvtxRangePush("Calculate inverted matrix"); #endif #ifdef DEBUG_AM /* now, before cms, output am to p_outam0 */ VirtualAsciiFile *outam0 = new VirtualAsciiFile(); string outam0_name = output_path + "/c_AM0_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix before CMS\n"); outam0->append_line(virtual_line); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); outam0->append_line(virtual_line); for (int iam=0; iam<ndit; iam++) { for (int jam=0; jam<ndit; jam++) { sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam])); outam0->append_line(virtual_line); } } outam0->write_to_disk(outam0_name); delete outam0; #endif cms(cid->am, cid->c1, cid->c1ao, cid->c4, cid->c6); #ifdef DEBUG_AM VirtualAsciiFile *outam1 = new VirtualAsciiFile(); string outam1_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after CMS before LUCIN\n"); outam1->append_line(virtual_line); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); outam1->append_line(virtual_line); for (int iam=0; iam<ndit; iam++) { for (int jam=0; jam<ndit; jam++) { sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam])); outam1->append_line(virtual_line); } } outam1->write_to_disk(outam1_name); delete outam1; #endif #ifdef USE_NVTX nvtxRangePop(); #endif Loading @@ -775,15 +804,27 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf elapsed = interval_end - interval_start; message = "INFO: matrix calculation for scale " + to_string(jxi488) + " took " + to_string(elapsed.count()) + "s.\n"; logger->log(message); if (jxi488 == 1) { string am_file_name = "c_am_jxi_1.txt"; write_dcomplex_matrix(am_file_name, cid->am, 624, 624); } interval_start = chrono::high_resolution_clock::now(); #ifdef USE_NVTX nvtxRangePush("Invert the matrix"); #endif invert_matrix(cid->am, ndit, jer, mxndm, cid->proc_device); #ifdef DEBUG_AM VirtualAsciiFile *outam2 = new VirtualAsciiFile(); string outam2_name = output_path + "/c_AM2_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after LUCIN before ZTM\n"); outam2->append_line(virtual_line); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); outam2->append_line(virtual_line); for (int iam=0; iam<ndit; iam++) { for (int jam=0; jam<ndit; jam++) { sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam])); outam2->append_line(virtual_line); } } outam2->write_to_disk(outam2_name); delete outam2; #endif #ifdef USE_NVTX nvtxRangePop(); #endif Loading @@ -802,6 +843,22 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf nvtxRangePush("Average calculation"); #endif ztm(cid->am, cid->c1, cid->c1ao, cid->c4, cid->c6, cid->c9); #ifdef DEBUG_AM VirtualAsciiFile *outam3 = new VirtualAsciiFile(); string outam3_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after ZTM\n"); outam3->append_line(virtual_line); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); outam3->append_line(virtual_line); for (int iam=0; iam<ndit; iam++) { for (int jam=0; jam<ndit; jam++) { sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam])); outam3->append_line(virtual_line); } } outam3->write_to_disk(outam3_name); delete outam3; #endif if (idfc >= 0) { if (jxi488 == jwtm) { int nlemt = 2 * cid->c4->nlem; Loading Loading
build/Makefile.in +1 −0 Original line number Diff line number Diff line Loading @@ -456,6 +456,7 @@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEBUGFLAGS = @DEBUGFLAGS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ Loading
build/configure +23 −1 Original line number Diff line number Diff line Loading @@ -669,6 +669,7 @@ OFFLOADFLAGS BUILDFORTRAN_FALSE BUILDFORTRAN_TRUE ENABLE_ILP64 DEBUGFLAGS HDF5_LDFLAGS CXXCPP LT_SYS_LIBRARY_PATH Loading Loading @@ -813,6 +814,7 @@ with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock enable_debug enable_ilp64 enable_fortran enable_offload Loading Loading @@ -1479,6 +1481,7 @@ Optional Features: --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-debug=FEATURE enable debug of FEATURE [default=no] --enable-ilp64 enable 64-bit indexing [default=yes] --enable-fortran enable legacy FORTRAN compilation [default=auto] --enable-offload enable target offloading (requires g++ version >= Loading Loading @@ -24936,6 +24939,25 @@ esac fi # Configure the optional features # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; if test "x$enableval" = "xAM"; then DEBUGFLAGS="-DDEBUG_AM" fi else case e in #( e) DEBUGFLAGS="" ;; esac fi # Check whether --enable-ilp64 was given. if test ${enable_ilp64+y} then : Loading Loading @@ -25647,7 +25669,7 @@ else case e in #( ;; esac fi CXXFLAGS="$CLANGFLAGS $OPTFLAGS -ggdb $OFFLOADFLAGS $USER_INCLUDE -I$HDF5_INCLUDE $OMPFLAGS $MPIFLAGS $LAPACKFLAGS $MAGMAFLAGS $NVTXFLAGS" CXXFLAGS="$CLANGFLAGS $OPTFLAGS -ggdb $DEBUGFLAGS $OFFLOADFLAGS $USER_INCLUDE -I$HDF5_INCLUDE $OMPFLAGS $MPIFLAGS $LAPACKFLAGS $MAGMAFLAGS $NVTXFLAGS" SUBDIRS="cluster libnptm sphere testing trapping" # Generate the output
build/configure.ac +14 −1 Original line number Diff line number Diff line Loading @@ -405,6 +405,19 @@ AS_IF( ) # Configure the optional features AC_ARG_ENABLE( [debug], [AS_HELP_STRING([--enable-debug=FEATURE], [enable debug of FEATURE [default=no]])], [ if test "x$enableval" = "xAM"; then AC_SUBST([DEBUGFLAGS], ["-DDEBUG_AM"]) fi ], [ AC_SUBST([DEBUGFLAGS], [""]) ] ) AC_ARG_ENABLE( [ilp64], [AS_HELP_STRING([--enable-ilp64], [enable 64-bit indexing [default=yes]])], Loading Loading @@ -641,7 +654,7 @@ AS_IF( [AC_SUBST([OMPFLAGS], [""])], [AC_SUBST([OMPFLAGS], [$OMPFLAGS])] ) CXXFLAGS="$CLANGFLAGS $OPTFLAGS -ggdb $OFFLOADFLAGS $USER_INCLUDE -I$HDF5_INCLUDE $OMPFLAGS $MPIFLAGS $LAPACKFLAGS $MAGMAFLAGS $NVTXFLAGS" CXXFLAGS="$CLANGFLAGS $OPTFLAGS -ggdb $DEBUGFLAGS $OFFLOADFLAGS $USER_INCLUDE -I$HDF5_INCLUDE $OMPFLAGS $MPIFLAGS $LAPACKFLAGS $MAGMAFLAGS $NVTXFLAGS" SUBDIRS="cluster libnptm sphere testing trapping" # Generate the output Loading
src/cluster/cluster.cpp +66 −9 Original line number Diff line number Diff line Loading @@ -83,10 +83,6 @@ #include "../include/file_io.h" #endif #ifndef INCLUDE_UTILS_H_ #include "../include/utils.h" #endif using namespace std; // I would like to put it all in a struct, but then I'd have to write a constructor for it, due to members defined as references, creating a worse nightmare than the one I'd like to simplify... Loading Loading @@ -374,7 +370,7 @@ void cluster(const string& config_file, const string& data_file, const string& o int myjxi488startoffset = 0; int myMPIstride = ompnumthreads; int myMPIblock = ompnumthreads; // Define here shared arrays of virtual ascii and binary files, so that thread 0 will be able to access the all later // Define here shared arrays of virtual ascii and binary files, so that thread 0 will be able to access them all later VirtualAsciiFile **p_outarray = NULL; VirtualBinaryFile **vtppoanarray = NULL; Loading Loading @@ -766,8 +762,41 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf interval_start = chrono::high_resolution_clock::now(); #ifdef USE_NVTX nvtxRangePush("Calculate inverted matrix"); #endif #ifdef DEBUG_AM /* now, before cms, output am to p_outam0 */ VirtualAsciiFile *outam0 = new VirtualAsciiFile(); string outam0_name = output_path + "/c_AM0_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix before CMS\n"); outam0->append_line(virtual_line); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); outam0->append_line(virtual_line); for (int iam=0; iam<ndit; iam++) { for (int jam=0; jam<ndit; jam++) { sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam])); outam0->append_line(virtual_line); } } outam0->write_to_disk(outam0_name); delete outam0; #endif cms(cid->am, cid->c1, cid->c1ao, cid->c4, cid->c6); #ifdef DEBUG_AM VirtualAsciiFile *outam1 = new VirtualAsciiFile(); string outam1_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after CMS before LUCIN\n"); outam1->append_line(virtual_line); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); outam1->append_line(virtual_line); for (int iam=0; iam<ndit; iam++) { for (int jam=0; jam<ndit; jam++) { sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam])); outam1->append_line(virtual_line); } } outam1->write_to_disk(outam1_name); delete outam1; #endif #ifdef USE_NVTX nvtxRangePop(); #endif Loading @@ -775,15 +804,27 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf elapsed = interval_end - interval_start; message = "INFO: matrix calculation for scale " + to_string(jxi488) + " took " + to_string(elapsed.count()) + "s.\n"; logger->log(message); if (jxi488 == 1) { string am_file_name = "c_am_jxi_1.txt"; write_dcomplex_matrix(am_file_name, cid->am, 624, 624); } interval_start = chrono::high_resolution_clock::now(); #ifdef USE_NVTX nvtxRangePush("Invert the matrix"); #endif invert_matrix(cid->am, ndit, jer, mxndm, cid->proc_device); #ifdef DEBUG_AM VirtualAsciiFile *outam2 = new VirtualAsciiFile(); string outam2_name = output_path + "/c_AM2_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after LUCIN before ZTM\n"); outam2->append_line(virtual_line); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); outam2->append_line(virtual_line); for (int iam=0; iam<ndit; iam++) { for (int jam=0; jam<ndit; jam++) { sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam])); outam2->append_line(virtual_line); } } outam2->write_to_disk(outam2_name); delete outam2; #endif #ifdef USE_NVTX nvtxRangePop(); #endif Loading @@ -802,6 +843,22 @@ int cluster_jxi488_cycle(int jxi488, ScattererConfiguration *sconf, GeometryConf nvtxRangePush("Average calculation"); #endif ztm(cid->am, cid->c1, cid->c1ao, cid->c4, cid->c6, cid->c9); #ifdef DEBUG_AM VirtualAsciiFile *outam3 = new VirtualAsciiFile(); string outam3_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".txt"; sprintf(virtual_line, " AM matrix after ZTM\n"); outam3->append_line(virtual_line); sprintf(virtual_line, " I1+1 I2+1 Real Imag\n"); outam3->append_line(virtual_line); for (int iam=0; iam<ndit; iam++) { for (int jam=0; jam<ndit; jam++) { sprintf(virtual_line, " %d %d %17.8lE %17.8lE\n", iam, jam, real(cid->am[iam][jam]), imag(cid->am[iam][jam])); outam3->append_line(virtual_line); } } outam3->write_to_disk(outam3_name); delete outam3; #endif if (idfc >= 0) { if (jxi488 == jwtm) { int nlemt = 2 * cid->c4->nlem; Loading