NAMD
Functions
TestArray.h File Reference
#include <type_traits>

Go to the source code of this file.

Functions

void NAMD_die (const char *)
 
int TestArray_write_helper (const char *filename, const char *label, const void *array, int elemsize, int length, int isfp)
 
template<typename T >
int TestArray_write (const char *filename, const char *label, const T *array, int length)
 

Function Documentation

◆ NAMD_die()

void NAMD_die ( const char *  )

Definition at line 148 of file common.C.

References Node::Object().

Referenced by Controller::adaptTempInit(), ConfigList::add_element(), ComputeMsmMgr::addPotential(), after_backend_init(), Sequencer::algorithm(), Controller::algorithm(), CollectiveDeviceBuffer< T >::allocate_no_check(), AnisoElem::AnisoElem(), msm::PatchData::anterpolation(), msm::PatchData::anterpolationC1Hermite(), Parameters::assign_angle_index(), Parameters::assign_bond_index(), Parameters::assign_crossterm_index(), Parameters::assign_dihedral_index(), Parameters::assign_improper_index(), Parameters::assign_vdw_index(), WorkDistrib::assignNodeToPatch(), Molecule::build_go_arrays(), Molecule::build_go_params(), Molecule::build_go_sigmas(), Molecule::build_go_sigmas2(), Molecule::build_gridforce_params(), buildBondData(), HomePatch::buildRattleList(), ReductionMgr::buildSpanTree(), ParallelIOMgr::calcAtomsInEachPatch(), ComputeQMMgr::calcMOPAC(), ComputeQMMgr::calcORCA(), GlobalMasterTest::calculate(), GlobalMasterTcl::calculate(), GlobalMaster::calculate(), ComputeQMMgr::calcUSR(), Calloc(), GlobalMaster::check(), GroupRestraintParam::CheckParam(), ComputeMsmMgr::compute(), PmeRealSpace::compute_forces(), LjPmeRealSpace::compute_scaledForces(), OneFourNbTholeElem::computeForce(), AngleElem::computeForce(), LjPmeCompute::computeLJpotential(), ComputeTclBC::ComputeTclBC(), ConfigList::ConfigList(), NamdState::configListInit(), ConfigList::ConfigListNode::ConfigListNode(), Sequencer::correctMomentum(), Controller::correctMomentum(), WorkDistrib::createAtomLists(), cuda_errcheck(), cuda_getargs(), CudaComputeNonbonded::CudaComputeNonbonded(), cudaDie(), CudaGlobalMaster::CUDAGM_NS::CudaGlobalMasterClient::CudaGlobalMasterClient(), CudaGlobalMasterServer::CudaGlobalMasterServer(), curandDie(), ComputeMsmMgr::d_stencil_1d(), Molecule::delete_qm_bonded(), ComputeGridForce::doForce(), ComputeNonbondedSelf::doForce(), HomePatch::doMarginCheck(), HomePatch::doMarginCheck_SOA(), Parameters::done_reading_files(), ComputeFullDirect::doWork(), ComputeTclBC::doWork(), ARestraint::EarlyExit(), Node::earlyExit(), GlobalMasterMisc::easy_calc(), msm::Array< msm::PatchDiagram >::elem(), msm::GridFixed< T, N >::elem(), msm::Grid< Vtype >::elem(), colvarproxy_namd::error(), ScriptTcl::eval(), PmeZPencil::fft_init(), PmeYPencil::fft_init(), PmeXPencil::fft_init(), LjPmeRealSpace::fill_charges(), PmeRealSpace::fill_charges(), Ambertoppar::get(), Molecule::get_atom_from_index_in_residue(), Molecule::get_atom_from_name(), Molecule::get_atomtype(), Parameters::get_dihedral_params(), Molecule::get_fep_bonded_type(), Parameters::get_improper_params(), Molecule::get_residue_size(), Parameters::get_vdw_params(), IndexFile::getAllElements(), ComputeLjPmeSerialMgr::getLJparameters(), OneFourNbTholeElem::getMoleculePointers(), AngleElem::getMoleculePointers(), ImproperElem::getMoleculePointers(), CrosstermElem::getMoleculePointers(), DihedralElem::getMoleculePointers(), TholeElem::getMoleculePointers(), AnisoElem::getMoleculePointers(), ExclElem::getMoleculePointers(), BondElem::getMoleculePointers(), GromacsPairElem::getMoleculePointers(), IndexFile::getNElements(), OneFourNbTholeElem::getTupleInfo(), TholeElem::getTupleInfo(), AnisoElem::getTupleInfo(), GlobalMasterIMD::GlobalMasterIMD(), GlobalMasterSymmetry::GlobalMasterSymmetry(), LjPmeMgr::gridCalculation(), GromacsTopFile::GromacsTopFile(), IndexFile::IndexFile(), BackEnd::init(), LjPmeCompute::initialize(), LjPmeMgr::initialize(), LdbCoordinator::initialize(), DeviceCUDA::initialize(), GridforceFullMainGrid::initialize(), GridforceFullSubGrid::initialize(), GridforceLiteGrid::initialize(), ComputeMsmMgr::initialize(), ComputePmeMgr::initialize(), SimParameters::initialize_config_data(), msm::PatchData::interpolation(), msm::PatchData::interpolationC1Hermite(), LjPmeKSpace::LjPmeKSpace(), ScriptTcl::load(), NamdState::loadStructure(), ludcmp(), main::main(), Malloc(), Node::mallocTest(), WorkDistrib::mapComputes(), HomePatch::minimize_rattle2(), Molecule::Molecule(), HomePatch::mollyAverage(), HomePatch::mollyMollify(), NAMD_new_handler(), NAMD_read_int(), NAMD_read_line(), NAMD_seek(), NAMD_write(), ComputeMsmMgr::ndsplitting(), OneFourNbTholeElem::OneFourNbTholeElem(), IndexFile::open(), LjPmeMgr::optimizeFFT(), Node::outputPatchComputeMaps(), MGridforceParamsList::pack_data(), WorkDistrib::patchMapInit(), PDB::PDB(), PDBUnknown::PDBUnknown(), Ambertoppar::preadln(), Molecule::prepare_qm(), ProblemParsing(), MsmBlockProxyMsg::put(), MsmC1HermiteBlockProxyMsg::put(), HomePatch::rattle1old(), HomePatch::rattle2(), Molecule::read_alch_unpert_angles(), Molecule::read_alch_unpert_bonds(), Molecule::read_alch_unpert_dihedrals(), read_binary_file(), Parameters::read_charmm_parameter_file(), Parameters::read_ener_table(), Parameters::read_energy_type(), Parameters::read_energy_type_bothcubspline(), Parameters::read_energy_type_cubspline(), Molecule::read_go_file(), Parameters::read_parameter_file(), Parameters::read_parm(), SimParameters::readExtendedSystem(), AmberParm7Reader::readparm(), GridforceFullBaseGrid::readSubgridHierarchy(), Realloc(), CollectiveDeviceBuffer< T >::reallocate_no_check(), RecBisection::RecBisection(), Molecule::receive_GoMolecule(), Parameters::receive_Parameters(), CollectionMaster::receiveDataStream(), ParallelIOMgr::recvAtomsCntPerPatch(), Controller::recvCheckpointReq(), HomePatch::recvCheckpointReq(), ComputeMgr::recvComputeDPMEData(), ComputeMgr::recvComputeDPMEResults(), ComputeMgr::recvComputeEwaldData(), ComputeMgr::recvComputeEwaldResults(), ComputeMgr::recvComputeGlobalData(), ComputeMgr::recvComputeGlobalResults(), ComputeMsmSerialMgr::recvCoord(), ComputeExtMgr::recvCoord(), ComputeLjPmeSerialMgr::recvCoord(), ComputeFmmSerialMgr::recvCoord(), ComputeMgr::recvCudaGlobalMasterCreateMsg(), ComputeMgr::recvCudaGlobalMasterRemoveMsg(), ComputeMgr::recvCudaGlobalMasterUpdateMsg(), SynchronousCollectives::recvIndexData(), ComputeQMMgr::recvPartQM(), ComputeQMMgr::recvPntChrg(), Output::recvReplicaDcdData(), Node::reloadCharges(), Node::reloadGridforceGrid(), ReductionMgr::remoteRegister(), ReductionMgr::remoteUnregister(), ReductionSet::removeData(), Sequencer::rescaleaccelMD(), Controller::rescaleaccelMD(), ScriptTcl::run(), ComputeMsm::saveResults(), SimParameters::scriptSet(), ComputeNonbondedUtil::select(), GlobalMasterIMD::send_box(), GlobalMasterIMD::send_energies(), GlobalMasterIMD::send_fcoords(), GlobalMasterIMD::send_forces(), Molecule::send_GoMolecule(), Parameters::send_Parameters(), GlobalMasterIMD::send_time(), GlobalMasterIMD::send_velocities(), ComputeMgr::sendComputeDPMEData(), ComputeMgr::sendComputeEwaldData(), StringList::set(), GroupRestraintParam::SetGroup1AtomFileIndices(), GroupRestraintParam::SetGroup1AtomListIndices(), GroupRestraintParam::SetGroup1RefPosition(), GroupRestraintParam::SetGroup2AtomFileIndices(), GroupRestraintParam::SetGroup2AtomListIndices(), GroupRestraintParam::SetGroupName(), msm::Array< msm::PatchDiagram >::setmax(), GroupRestraintParam::SetResCenter(), GroupRestraintParam::SetResDirection(), ComputeMsmMgr::setup_hgrid_1d(), ComputeMsmMgr::setup_periodic_blocksize(), SimParameters::setupIDWS(), PatchMap::sizeGrid(), ComputeMsmMgr::splitting(), ComputeMsmMgr::stencil_1d(), NamdCentLB::Strategy(), StringList::StringList(), ScriptTcl::tclmain(), TestArray_write(), TholeElem::TholeElem(), ComputeLonepairsCUDA::updateAtoms(), Node::updateGridScale(), ReductionMgr::willRequire(), and ReductionMgr::willSubmit().

149 {
150  if ( ! err_msg ) err_msg = "(unknown error)";
151  CkPrintf("FATAL ERROR: %s\n", err_msg);
152  fflush(stdout);
153  char repstr[24] = "";
154  if (CmiNumPartitions() > 1 ||
155  (Node::Object()->simParameters != 0 &&
156  Node::Object()->simParameters->CUDASOAintegrateMode)) {
157  sprintf(repstr,"REPLICA %d ", CmiMyPartition());
158  // CkAbort ensures that all replicas die
159  CkAbort("%sFATAL ERROR: %s\n", repstr, err_msg);
160  }
161  CkError("%sFATAL ERROR: %s\n", repstr, err_msg);
162 #if CHARM_VERSION < 61000
163  CkExit();
164 #else
165  CkExit(1);
166 #endif
167 }
static Node * Object()
Definition: Node.h:86

◆ TestArray_write()

template<typename T >
int TestArray_write ( const char *  filename,
const char *  label,
const T *  array,
int  length 
)

Write an array to file for later analysis. The array type needs to be a standard arithmetic type, as designated true by std::is_arithmetic<T>.

File format is:

  • label is padded to 116 characters including null terminator
  • nonzero 4-byte int if array is floating point
  • number of bytes per element stored as 4-byte int
  • length of the array stored as 4-byte int
  • the array data

Returns zero for success or nonzero for error.

Parameters
filenamesave to file name
labellabel for array (truncated to 120 characters)
arraypoints to the array to save
lengthlength of the array

Definition at line 32 of file TestArray.h.

References NAMD_die(), and TestArray_write_helper().

37  {
38  if ( ! std::is_arithmetic<T>::value ) {
39  NAMD_die("Called TestArray_write with non-aritmetic type");
40  }
41  int isfp = std::is_floating_point<T>::value;
42  return TestArray_write_helper(filename, label,
43  (const void *)array, sizeof(T), length, isfp);
44 }
int TestArray_write_helper(const char *filename, const char *label, const void *array, int elemsize, int length, int isfp)
Definition: TestArray.C:10
void NAMD_die(const char *)
Definition: common.C:148

◆ TestArray_write_helper()

int TestArray_write_helper ( const char *  filename,
const char *  label,
const void *  array,
int  elemsize,
int  length,
int  isfp 
)

Definition at line 10 of file TestArray.C.

References LABEL_SIZE.

Referenced by TestArray_write().

17  {
18  const char *stype = "unknown";
19  if ( isfp && elemsize==8 ) stype = "double";
20  else if ( isfp && elemsize==4 ) stype = "float";
21  else if ( !isfp && elemsize==8 ) stype = "int64";
22  else if ( !isfp && elemsize==4 ) stype = "int32";
23  else if ( !isfp && elemsize==2 ) stype = "int16";
24  else if ( !isfp && elemsize==1 ) stype = "int8";
25  printf("Writing %s array of length %d to binary file %s\n",
26  stype, length, filename);
27  FILE *fp = fopen(filename, "wb");
28  if ( fp == 0 ) return -1;
29  char padbuf[LABEL_SIZE] = { 0 };
30  strncpy(padbuf, label, LABEL_SIZE-1);
31  fwrite(padbuf, 1, LABEL_SIZE, fp);
32  fwrite(&isfp, sizeof(int), 1, fp);
33  fwrite(&elemsize, sizeof(int), 1, fp);
34  fwrite(&length, sizeof(int), 1, fp);
35  fwrite(array, elemsize, length, fp);
36  fclose(fp);
37  fflush(stdout);
38  return 0;
39 }
static const int LABEL_SIZE
Definition: TestArray.C:8