Commit fca1a3df authored by Giovanni La Mura's avatar Giovanni La Mura
Browse files

Merge branch 'script_devel' into 'master'

AM debug output

See merge request giacomo.mulas/np_tmcode!116
parents c57fee92 fc1ff178
Loading
Loading
Loading
Loading
+59 −59
Original line number Diff line number Diff line
@@ -876,7 +876,7 @@ int cluster_jxi488_cycle(
#ifdef USE_NVTX
  nvtxRangePop();
#endif
#ifdef DEBUG_AM
  if (rs.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";
@@ -889,7 +889,7 @@ int cluster_jxi488_cycle(
    write_dcomplex_matrix(outam0, cid->am, ndit, ndit);
    outam0->write_to_disk(outam0_name);
    delete outam0;
#endif // DEBUG_AM
  }
  if (rs.use_offload) {
    // whenever rs.use_offload == true, USE_TARGET_OFFLOAD is defined, but we
    // have to check for the compilation flag in order to avoid the compiler
@@ -968,7 +968,7 @@ int cluster_jxi488_cycle(
#endif
    interval_start = chrono::high_resolution_clock::now();
    cms(cid->am[0], cid->c1);
#ifdef DEBUG_AM
    if (rs.debug_am) {
      VirtualAsciiFile *outam1 = new VirtualAsciiFile();
      string outam1_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".txt";
      string outam1_ppm_name = output_path + "/c_AM1_JXI" + to_string(jxi488) + ".ppm";
@@ -982,7 +982,7 @@ int cluster_jxi488_cycle(
      outam1->write_to_disk(outam1_name);
      delete outam1;
      write_matrix_as_ppm(cid->am[0], ndit, ndit, outam1_ppm_name);
#endif // DEBUG_AM
    }
#ifdef USE_NVTX
    nvtxRangePop();
#endif // USE_NVTX
@@ -995,7 +995,7 @@ int cluster_jxi488_cycle(
    nvtxRangePush("Invert the matrix");
#endif // USE_NVTX
    invert_matrix(cid->am, ndit, jer, output_path, jxi488, mxndm, cid->proc_device, rs);
#ifdef DEBUG_AM
    if (rs.debug_am) {
      VirtualAsciiFile *outam2 = new VirtualAsciiFile();
      string outam2_name = output_path + "/c_AM2_JXI" + to_string(jxi488) + ".txt";
      string outam2_ppm_name = output_path + "/c_AM2_JXI" + to_string(jxi488) + ".ppm";
@@ -1009,7 +1009,7 @@ int cluster_jxi488_cycle(
      outam2->write_to_disk(outam2_name);
      delete outam2;
      write_matrix_as_ppm(cid->am[0], ndit, ndit, outam2_ppm_name);
#endif // DEBUG_AM
    }
#ifdef USE_NVTX
    nvtxRangePop();
#endif // USE_NVTX
@@ -1024,7 +1024,7 @@ int cluster_jxi488_cycle(
      // break; // jxi488 loop: goes to memory clean
    }
    ztm(cid->am, cid->c1);
#ifdef DEBUG_AM
    if (rs.debug_am) {
      VirtualAsciiFile *outam3 = new VirtualAsciiFile();
      string outam3_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".txt";
      string outam3_ppm_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".ppm";
@@ -1038,7 +1038,7 @@ int cluster_jxi488_cycle(
      outam3->write_to_disk(outam3_name);
      delete outam3;
      write_matrix_as_ppm(cid->c1->am0m[0], 2 * cid->c1->nlem, 2 * cid->c1->nlem, outam3_ppm_name);
#endif // DEBUG_AM
    }
  }
  interval_start = chrono::high_resolution_clock::now();
#ifdef USE_NVTX
+8 −0
Original line number Diff line number Diff line
@@ -134,6 +134,8 @@ protected:
  int _ref_iters;
  //! \brief Flag to use target offload, if available.
  bool _offload_flag;
  //! \brief Flag to control AM matrix debug output.
  bool _debug_am;

public:
  //! \brief Read-only view on number of spherical components.
@@ -200,6 +202,8 @@ public:
  const int& ref_iters = _ref_iters;
  //! \brief Read-only view on flag to use target offload, if available.
  const bool& offload_flag = _offload_flag;
  //! \brief Read-only view on flag to control AM matrix debug output.
  const bool& debug_am = _debug_am;
  
  /**
   * \brief Build a scattering geometry configuration structure.
@@ -341,6 +345,8 @@ protected:
  short _invert_mode;
  //! \brief Target matrix inversion accuracy.
  double _accuracy_goal;
  //! \brief AM debug flag.
  bool _debug_am;
  //! \brief GPU memory in GiB.
  double _gpu_ram_gb;
  //! \brief Host system memory in GiB.
@@ -366,6 +372,8 @@ public:
  const short& invert_mode = _invert_mode;
  //! \brief Read-only view on target matrix inversion accuracy.
  const double& accuracy_goal = _accuracy_goal;
  //! \brief Read-only view on AM debug flag.
  const bool& debug_am = _debug_am;
  //! \brief Read-only view on GPU memory in GiB.
  const double& gpu_ram_gb = _gpu_ram_gb;
  //! \brief Read-only view on host system memory in GiB.
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@
#define INCLUDE_LOGGING_H_

//! \brief Code version.
#define NPTM_VERSION "0.10.9"
#define NPTM_VERSION "0.10.10"

//! \brief Debug level logging (maximum verbosity).
#define LOG_DEBG 0
+34 −34
Original line number Diff line number Diff line
@@ -852,7 +852,7 @@ int inclusion_jxi488_cycle(
#ifdef USE_NVTX
  nvtxRangePush("Calculate inverted matrix");
#endif
#ifdef DEBUG_AM
  if (rs.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";
@@ -863,9 +863,9 @@ int inclusion_jxi488_cycle(
    write_dcomplex_matrix(outam0, cid->am, cid->c1->ndm, cid->c1->ndm);
    outam0->write_to_disk(outam0_name);
    delete outam0;
#endif
  }
  incms(cid->am, enti, cid->c1);
#ifdef DEBUG_AM
  if (rs.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");
@@ -875,7 +875,7 @@ int inclusion_jxi488_cycle(
    write_dcomplex_matrix(outam1, cid->am, cid->c1->ndm, cid->c1->ndm, " %5d %5d (%17.8lE,%17.8lE)\n", 1);
    outam1->write_to_disk(outam1_name);
    delete outam1;
#endif
  }
#ifdef USE_NVTX
  nvtxRangePop();
#endif
@@ -907,7 +907,7 @@ int inclusion_jxi488_cycle(
  nvtxRangePush("Average calculation");
#endif
  exma(cid->am, cid->c1);
#ifdef DEBUG_AM
  if (rs.debug_am) {
    VirtualAsciiFile *outam3 = new VirtualAsciiFile();
    string outam3_name = output_path + "/c_AM3_JXI" + to_string(jxi488) + ".txt";
    sprintf(virtual_line, " AM matrix after EXMA\n");
@@ -917,7 +917,7 @@ int inclusion_jxi488_cycle(
    write_dcomplex_matrix(outam3, cid->am, cid->c1->ndm, cid->c1->ndm);
    outam3->write_to_disk(outam3_name);
    delete outam3;
#endif
  }
  if (idfc >= 0) {
    if (jxi488 == jwtm) {
      int nlemt = 2 * cid->c1->nlem;
+13 −0
Original line number Diff line number Diff line
@@ -112,6 +112,7 @@ GeometryConfiguration::GeometryConfiguration(
  _accuracy_goal = 1.0e-07;
  _ref_iters = 5;
  _offload_flag = false;
  _debug_am = false;
}

GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs)
@@ -156,6 +157,7 @@ GeometryConfiguration::GeometryConfiguration(const GeometryConfiguration& rhs)
  _accuracy_goal = rhs._accuracy_goal;
  _ref_iters = rhs._ref_iters;
  _offload_flag = rhs._offload_flag;
  _debug_am = rhs._debug_am;
}

#ifdef MPI_VERSION
@@ -200,6 +202,7 @@ GeometryConfiguration::GeometryConfiguration(const mixMPI *mpidata) {
  MPI_Bcast(&_accuracy_goal, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
  MPI_Bcast(&_ref_iters, 1, MPI_INT, 0, MPI_COMM_WORLD);
  MPI_Bcast(&_offload_flag, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD);
  MPI_Bcast(&_debug_am, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD);
}

void GeometryConfiguration::mpibcast(const mixMPI *mpidata) {
@@ -240,6 +243,7 @@ void GeometryConfiguration::mpibcast(const mixMPI *mpidata) {
  MPI_Bcast(&_accuracy_goal, 1, MPI_DOUBLE, 0, MPI_COMM_WORLD);
  MPI_Bcast(&_ref_iters, 1, MPI_INT, 0, MPI_COMM_WORLD);
  MPI_Bcast(&_offload_flag, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD);
  MPI_Bcast(&_debug_am, 1, MPI_C_BOOL, 0, MPI_COMM_WORLD);
}
#endif

@@ -448,6 +452,13 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil
	}
      }
    }
    if (str_target.size() > 9) {
      if (str_target.substr(0, 9).compare("DEBUG_AM=") == 0) {
	int debug_flag = (int)stoi(str_target.substr(9, str_target.length()));
	conf->_debug_am = (debug_flag == 0) ? false : true;
	is_parsed = true;
      }
    }
    if (!is_parsed) {
      if (str_target.size() > 0) {
	if (str_target.substr(0, 1).compare("#") != 0) {
@@ -468,6 +479,7 @@ GeometryConfiguration* GeometryConfiguration::from_legacy(const std::string& fil
RuntimeSettings::RuntimeSettings() {
  _invert_mode = RuntimeSettings::INV_MODE_LU;
  _accuracy_goal = 1.0e-07;
  _debug_am = false;
  _gpu_ram_gb = 0.0;
  _host_ram_gb = 0.0;
  _max_ref_iters = 5;
@@ -482,6 +494,7 @@ RuntimeSettings::RuntimeSettings() {
RuntimeSettings::RuntimeSettings(GeometryConfiguration *gconf, Logger *ptr_logger) {
  _invert_mode = gconf->invert_mode;
  _accuracy_goal = gconf->accuracy_goal;
  _debug_am = gconf->debug_am;
  _gpu_ram_gb = gconf->gpu_ram_gb;
  _host_ram_gb = gconf->host_ram_gb;
  _max_ref_iters = gconf->ref_iters;
Loading