Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Get HemeLB RBC code running on Cirrus post merge into main #775

Open
mobernabeu opened this issue Nov 9, 2021 · 39 comments
Open

Get HemeLB RBC code running on Cirrus post merge into main #775

mobernabeu opened this issue Nov 9, 2021 · 39 comments
Assignees

Comments

@mobernabeu
Copy link
Contributor

Similar to #770.

Let's start by compiling the code manually on the login nodes of the machine and then we will try to sort out builds with Fabric afterwards.

Document module configuration here.

@CharlesQiZhou
Copy link
Contributor

Minimum requirement for the dependencies to be compiled on cirrus:

module load cmake/3.17.3
module load gcc/8.2.0
module load intel-mpi-19/19.0.0.117

@mobernabeu @rupertnash
Currently, dependencies fail during MAKE with the errors below:
stderr.txt

  • rm -rf autom4te.cache
  • autoreconf --force --install --warnings all,no-obsolete
    configure.ac:25: installing './ar-lib'
    configure.ac:24: installing './compile'
    configure.ac:18: installing './config.guess'
    configure.ac:18: installing './config.sub'
    configure.ac:19: installing './install-sh'
    configure.ac:19: installing './missing'
    Makefile.am: installing './INSTALL'
    Makefile.am:69: error: Libtool library used but 'LIBTOOL' is undefined
    Makefile.am:69: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
    Makefile.am:69: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
    Makefile.am:69: If 'LT_INIT' is in 'configure.ac', make sure
    Makefile.am:69: its definition is in aclocal's search path.
    Makefile.am: installing './depcomp'
    parallel-tests: installing './test-driver'
    autoreconf: automake failed with exit status: 1
  • rm -rf autom4te.cache
  • autoreconf --force --install --warnings all,no-obsolete
    Makefile.am:69: error: Libtool library used but 'LIBTOOL' is undefined
    Makefile.am:69: The usual way to define 'LIBTOOL' is to add 'LT_INIT'
    Makefile.am:69: to 'configure.ac' and run 'aclocal' and 'autoconf' again.
    Makefile.am:69: If 'LT_INIT' is in 'configure.ac', make sure
    Makefile.am:69: its definition is in aclocal's search path.
    autoreconf: automake failed with exit status: 1
    make[2]: *** [CMakeFiles/ctemplate.dir/build.make:142: ctemplate-prefix/src/ctemplate-stamp/ctemplate-autogen] Error 1
    make[1]: *** [CMakeFiles/Makefile2:155: CMakeFiles/ctemplate.dir/all] Error 2
    make: *** [Makefile:104: all] Error 2

stdout.txt

Scanning dependencies of target ctemplate
[ 11%] Creating directories for 'ctemplate'
[ 22%] Performing download step (download, verify and extract) for 'ctemplate'
-- Downloading...
dst='/lustre/home/ec136/qizhou/hemelb/dependencies/build/ctemplate-prefix/src/ctemplate-2.4.tar.gz'
timeout='none'
-- Using src='http://github.com/OlafvdSpek/ctemplate/archive/ctemplate-2.4.tar.gz'
-- [download 100% complete]
-- Downloading... done
-- extracting...
src='/lustre/home/ec136/qizhou/hemelb/dependencies/build/ctemplate-prefix/src/ctemplate-2.4.tar.gz'
dst='/lustre/home/ec136/qizhou/hemelb/dependencies/build/ctemplate-prefix/src/ctemplate'
-- extracting... [tar xfz]
-- extracting... [analysis]
-- extracting... [rename]
-- extracting... [clean up]
-- extracting... done
[ 33%] Performing patch step for 'ctemplate'
noalign
novacopy
[ 44%] Running ./autogen.sh, possibly twice

@mobernabeu
Copy link
Contributor Author

mobernabeu commented Nov 11, 2021

@rupertnash is there any good reason not to go with gcc 10.2 in Cirrus? (rather than ancient 8.2)

@CharlesQiZhou
Copy link
Contributor

CharlesQiZhou commented Nov 11, 2021

Just tried gcc 10.2, namely with the below modules

module load cmake/3.17.3
module load gcc/10.2.0
module load intel-mpi-19/19.0.0.117

Dependencies (make after cmake -DHEMELB_BUILD_RBC=ON ..) failed with seemingly the same errors as using gcc 8.2 (Note that previously the red_blood_cells/merge branch successfully compiled on Cirrus with gcc 8.2).

See the complete stderr.txt and stdout.txt below for this attempt with gcc 10.2:
stderr.txt
stdout.txt
:

@rupertnash
Copy link
Member

I'm pro updating to 10: newer is usually better for the compilers

@rupertnash
Copy link
Member

I think you need to load the libtool module on Cirrus: module load libtool/2.4.6

@CharlesQiZhou
Copy link
Contributor

CharlesQiZhou commented Nov 12, 2021

Thanks @rupertnash. Adding module load libtool/2.4.6 works for the dependencies to compile without errors. The Code also compiles and hemelb executable is generated, but with the errors (stderr.txt) below:

/lustre/home/ec136/qizhou/hemelb/Code/redblood/Mesh.cc:691:2: warning: multi-line comment [-Wcomment]
691 | // | \ |
| ^
/lustre/home/ec136/qizhou/hemelb/Code/redblood/MeshIO.cc: In member function ‘virtual hemelb::redblood::MeshIO::MeshPtr hemelb::redblood::KruegerMeshIO::read(hemelb::redblood::MeshIO::Mode, const string&, bool) const’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/MeshIO.cc:207:5: warning: control reaches end of non-void function [-Wreturn-type]
207 | }
| ^
/lustre/home/ec136/qizhou/hemelb/Code/redblood/MeshIO.cc: In member function ‘virtual std::string hemelb::redblood::KruegerMeshIO::write(hemelb::redblood::MeshIO::Mode, const string&, const Vertices&, const Facets&, const hemelb::util::UnitConverter&, const PointScalarData&) const’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/MeshIO.cc:264:5: warning: control reaches end of non-void function [-Wreturn-type]
264 | }
| ^
/lustre/home/ec136/qizhou/hemelb/Code/redblood/MeshIO.cc: In member function ‘virtual std::string hemelb::redblood::VTKMeshIO::write(hemelb::redblood::MeshIO::Mode, const string&, const Vertices&, const Facets&, const hemelb::util::UnitConverter&, const PointScalarData&) const’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/MeshIO.cc:356:51: warning: control reaches end of non-void function [-Wreturn-type]
356 | auto pd = vtkSmartPointer::New();
| ^
/lustre/home/ec136/qizhou/hemelb/Code/redblood/Cell.cc: In member function ‘hemelb::LatticeEnergy hemelb::redblood::Cell::facetBending() const’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/Cell.cc:64:24: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
64 | if (neighbor > static_caststd::size_t(current_facet))
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/redblood/Cell.cc: In member function ‘hemelb::LatticeEnergy hemelb::redblood::Cell::facetBending(std::vector<hemelb::util::Vector3D >&) const’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/Cell.cc:92:24: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
92 | if (neighbor > current_facet)
| ~~~~~~~~~^~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/redblood/xmlIO.cc:90:23: warning: ‘hemelb::LatticePosition hemelb::redblood::{anonymous}::GetPosition(const hemelb::io::xml::Element&, const string&, const hemelb::util::UnitConverter&)’ defined but not used [-Wunused-function]
90 | LatticePosition GetPosition(const io::xml::Element& parent, const std::string &elemname,
| ^~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/redblood/parallel/CellParallelization.cc: In member function ‘void hemelb::redblood::parallel::ExchangeCells::AddDisownedToLocalSendBuffers(int, int, std::set<std::shared_ptrhemelb::redblood::CellBase, hemelb::redblood::details::CellUUIDComparison>::const_reference, const mapped_type&)’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/parallel/CellParallelization.cc:355:23: warning: unused variable ‘inserted’ [-Wunused-variable]
355 | auto const &inserted = formelyOwned[neighbor].emplace(std::move(lentCell));
| ^~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/extraction/LocalPropertyOutput.cc: In member function ‘void hemelb::extraction::LocalPropertyOutput::Write(long unsigned int)’:
/lustre/home/ec136/qizhou/hemelb/Code/extraction/LocalPropertyOutput.cc:280:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
280 | for (int i = 0; i < numComponents; i++)
| ~~^~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/extraction/LocalDistributionInput.cc: In member function ‘void hemelb::extraction::LocalDistributionInput::LoadDistribution(hemelb::geometry::LatticeData*, boost::optional&)’:
/lustre/home/ec136/qizhou/hemelb/Code/extraction/LocalDistributionInput.cc:153:20: warning: comparison of integer expressions of different signedness: ‘int’ and ‘const unsigned int’ [-Wsign-compare]
153 | for (int i = 0; i < NUMVECTORS; i++) {
| ~~^~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/extraction/LocalDistributionInput.cc: In member function ‘void hemelb::extraction::LocalDistributionInput::ReadOffsets(const string&)’:
/lustre/home/ec136/qizhou/hemelb/Code/extraction/LocalDistributionInput.cc:274:13: warning: comparison of integer expressions of different signedness: ‘uint32_t’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
274 | if (nRanks != comms.Size())
| ~~~~~~~^~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/lb/iolets/InOutLetFile.cc: In member function ‘void hemelb::lb::iolets::InOutLetFile::CalculateTable(hemelb::LatticeTimeStep, hemelb::PhysicalTime)’:
/lustre/home/ec136/qizhou/hemelb/Code/lb/iolets/InOutLetFile.cc:109:13: warning: unused variable ‘TimeStepsInInletPressureProfile’ [-Wunused-variable]
109 | int TimeStepsInInletPressureProfile = times.back() / timeStepLength;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/net/MpiCommunicator.cc:9:
/lustre/home/ec136/qizhou/hemelb/Code/net/MpiCommunicator.h: In constructor ‘hemelb::net::MpiCommunicator::MpiCommunicator(int, int)’:
/lustre/home/ec136/qizhou/hemelb/Code/net/MpiCommunicator.h:229:13: warning: ‘hemelb::net::MpiCommunicator::localRankInCommunicator’ will be initialized after [-Wreorder]
229 | int localRankInCommunicator;
| ^~~~~~~~~~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/net/MpiCommunicator.h:227:13: warning: ‘int hemelb::net::MpiCommunicator::communicatorSize’ [-Wreorder]
227 | int communicatorSize;
| ^~~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/net/MpiCommunicator.cc:68:5: warning: when initialized here [-Wreorder]
68 | MpiCommunicator::MpiCommunicator(int localRankInCommunicator, int communicatorSize) :
| ^~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/io/writers/xdr/XdrFileReader.cc: In member function ‘virtual const char* hemelb::io::writers::xdr::XdrFileReader::get_bytes(size_t)’:
/lustre/home/ec136/qizhou/hemelb/Code/io/writers/xdr/XdrFileReader.cc:33:9: warning: unused variable ‘nread’ [-Wunused-variable]
33 | auto nread = std::fread(buf.data(), 1, n, fh);
| ^~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/colloids/BoundaryConditions.cc:7:
/lustre/home/ec136/qizhou/hemelb/Code/colloids/LubricationBC.h: In member function ‘virtual const bool hemelb::colloids::LubricationBC::DoSomethingToParticle(hemelb::colloids::Particle&, std::vector<hemelb::util::Vector3D >)’:
/lustre/home/ec136/qizhou/hemelb/Code/colloids/LubricationBC.h:34:27: warning: ‘lubricationVelocityAdjustment.hemelb::util::Vector3D::x’ may be used uninitialized in this function [-Wmaybe-uninitialized]
34 | LatticeVelocity lubricationVelocityAdjustment;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/colloids/LubricationBC.h:34:27: warning: ‘lubricationVelocityAdjustment.hemelb::util::Vector3D::y’ may be used uninitialized in this function [-Wmaybe-uninitialized]
In file included from /lustre/home/ec136/qizhou/hemelb/Code/colloids/BoundaryConditions.h:13,
from /lustre/home/ec136/qizhou/hemelb/Code/colloids/BoundaryConditions.cc:6:
/lustre/home/ec136/qizhou/hemelb/Code/colloids/Particle.h:175:41: warning: ‘lubricationVelocityAdjustment.hemelb::util::Vector3D::z’ may be used uninitialized in this function [-Wmaybe-uninitialized]
175 | lubricationVelocityAdjustment = adjustment;
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/colloids/BoundaryConditions.cc:7:
/lustre/home/ec136/qizhou/hemelb/Code/colloids/LubricationBC.h:34:27: note: ‘lubricationVelocityAdjustment.hemelb::util::Vector3D::z’ was declared here
34 | LatticeVelocity lubricationVelocityAdjustment;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/main.cc:10:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/SimulationMasterTests.cc:9:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/tests/extraction/LocalPropertyOutputTests.cc:19:
/lustre/home/ec136/qizhou/hemelb/Code/tests/extraction/DummyDataSource.h:126:23: warning: invalid covariant return type for ‘virtual hemelb::distribn_t
hemelb::tests::DummyDataSource::GetDistribution() const’
126 | distribn_t
GetDistribution() const
| ^~~~~~~~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/extraction/GeometrySelector.h:10,
from /lustre/home/ec136/qizhou/hemelb/Code/extraction/PropertyOutputFile.h:13,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/extraction/LocalPropertyOutputTests.cc:13:
/lustre/home/ec136/qizhou/hemelb/Code/extraction/IterableDataSource.h:98:35: note: overridden function is ‘virtual const distribn_t* hemelb::extraction::IterableDataSource::GetDistribution() const’
98 | virtual const distribn_t* GetDistribution() const = 0;
| ^~~~~~~~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/tests/extraction/LocalPropertyOutputTests.cc:19:
/lustre/home/ec136/qizhou/hemelb/Code/tests/extraction/DummyDataSource.h: In member function ‘virtual hemelb::distribn_t* hemelb::tests::DummyDataSource::GetDistribution() const’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/extraction/DummyDataSource.h:130:20: warning: function returns address of local variable [-Wreturn-local-addr]
130 | return p_fval;
| ^~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/tests/extraction/DummyDataSource.h:128:20: note: declared here
128 | double fval = 1.0;
| ^~~~
/lustre/home/ec136/qizhou/hemelb/Code/tests/io/xdr_test_data.cc: In function ‘float hemelb::tests::{anonymous}::binflt(uint32_t)’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/io/xdr_test_data.cc:18:17: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
18 | return reinterpret_cast<float>(&x);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/tests/io/xdr_test_data.cc: In function ‘double hemelb::tests::{anonymous}::bindbl(uint64_t)’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/io/xdr_test_data.cc:21:17: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
21 | return reinterpret_cast<double>(&x);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/tests/io/XdrReaderTests.cc: In function ‘void hemelb::tests::____C_A_T_C_H____T_E_S_T____6()’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/io/XdrReaderTests.cc:66:12: warning: variable ‘make_ones’ set but not used [-Wunused-but-set-variable]
66 | auto make_ones = [](size_t n) -> UPC {
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/tests/lb/BroadcastMocks.cc:6:
/lustre/home/ec136/qizhou/hemelb/Code/tests/lb/BroadcastMocks.h:125: warning: ignoring ‘#pragma intel optimization_level’ [-Wunknown-pragmas]
125 | #pragma intel optimization_level 0
|
In file included from /lustre/home/ec136/qizhou/hemelb/Code/tests/lb/IncompressibilityCheckerTests.cc:10:
/lustre/home/ec136/qizhou/hemelb/Code/tests/lb/BroadcastMocks.h:125: warning: ignoring ‘#pragma intel optimization_level’ [-Wunknown-pragmas]
125 | #pragma intel optimization_level 0
|
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/multiscale/MultiscaleSimulationMaster.h:10,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/multiscale/MockIntercommunicatorTests.cc:11:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/tests/reporting/ReporterTests.cc:20:
/lustre/home/ec136/qizhou/hemelb/Code/tests/lb/BroadcastMocks.h:125: warning: ignoring ‘#pragma intel optimization_level’ [-Wunknown-pragmas]
125 | #pragma intel optimization_level 0
|
In file included from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/CellArmyTests.cc:8:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q15, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/CellArmyTests.cc:215:26: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc: In instantiation of ‘void hemelb::tests::____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____9() [with TestType = hemelb::redblood::stencil::FourPoint]’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:226:5: required from ‘void hemelb::tests::{anonymous}::ns_____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____10::____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____10::reg_tests() [with Types = {hemelb::redblood::stencil::FourPoint, hemelb::redblood::stencil::CosineApprox, hemelb::redblood::stencil::ThreePoint, hemelb::redblood::stencil::TwoPoint}]’
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:226:5: required from here
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:256:27: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
256 | LatticeDistance const x(*reinterpret_cast<LatticeDistance const *>(&ux));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc: In instantiation of ‘void hemelb::tests::____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____9() [with TestType = hemelb::redblood::stencil::CosineApprox]’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:226:5: required from ‘void hemelb::tests::{anonymous}::ns_____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____10::____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____10::reg_tests() [with Types = {hemelb::redblood::stencil::FourPoint, hemelb::redblood::stencil::CosineApprox, hemelb::redblood::stencil::ThreePoint, hemelb::redblood::stencil::TwoPoint}]’
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:226:5: required from here
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:256:27: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc: In instantiation of ‘void hemelb::tests::____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____9() [with TestType = hemelb::redblood::stencil::ThreePoint]’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:226:5: required from ‘void hemelb::tests::{anonymous}::ns_____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____10::____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____10::reg_tests() [with Types = {hemelb::redblood::stencil::FourPoint, hemelb::redblood::stencil::CosineApprox, hemelb::redblood::stencil::ThreePoint, hemelb::redblood::stencil::TwoPoint}]’
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:226:5: required from here
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:256:27: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc: In instantiation of ‘void hemelb::tests::____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____F_U_N_C____9() [with TestType = hemelb::redblood::stencil::TwoPoint]’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:226:5: required from ‘void hemelb::tests::{anonymous}::ns_____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____10::____C_A_T_C_H____T_E_M_P_L_A_T_E____T_E_S_T____10::reg_tests() [with Types = {hemelb::redblood::stencil::FourPoint, hemelb::redblood::stencil::CosineApprox, hemelb::redblood::stencil::ThreePoint, hemelb::redblood::stencil::TwoPoint}]’
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:226:5: required from here
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/InterpolationTests.cc:256:27: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/LoadDeformedCellTests.cc:11:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/NodeIntegrationTests.cc:13:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::TwoPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::TwoPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::CosineApprox>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::CosineApprox>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/CellIntegrationTests.cc:11:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/FadeInOutIntegrationTests.cc:10:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/SadCellIntegrationTests.cc:10:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/MulticellBenchmarkTests.cc:10:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/FedosovValidationTests.cc:10:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/ParallelFixtureTests.cc:16:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/MPISpreadForcesTests.cc:13:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::TwoPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::TwoPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::CosineApprox>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::CosineApprox>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/MPIIntegrateVelocities.cc:14:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::TwoPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::TwoPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::CosineApprox>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::CosineApprox>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/MPILockStepTests.cc:13:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::TwoPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::TwoPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::CosineApprox>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::CosineApprox>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.impl.h:33,
from /lustre/home/ec136/qizhou/hemelb/Code/SimulationMaster.h:151,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/ParallelFixtures.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/GraphCommsTests.cc:9:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/RBCInserterWithPerturbationParallelTests.cc: In member function ‘void hemelb::tests::{anonymous}::____C_A_T_C_H____T_E_S_T____0::test()’:
/lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/RBCInserterWithPerturbationParallelTests.cc:42:18: warning: unused variable ‘r’ [-Wunused-variable]
42 | auto volatile r = rand();
| ^
In file included from /lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:11,
from /lustre/home/ec136/qizhou/hemelb/Code/tests/redblood/parallel/MPIParallelIntegrationTests.cc:12:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h: In instantiation of ‘void hemelb::redblood::CellArmy::CellRemoval() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’:
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:49:40: required from ‘void hemelb::redblood::CellController::EndIteration() [with TRAITS = hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::FourPoint>]’
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellController.h:45:14: required from here
/lustre/home/ec136/qizhou/hemelb/Code/redblood/CellArmy.h:328:22: warning: unused variable ‘numErased’ [-Wunused-variable]
328 | auto const numErased = nodeDistributions.erase((*i_current)->GetTag());
| ^~~~~~~~~
_ZNSt17_Function_handlerIFSt3setIiSt4lessIiESaIiEERKN6hemelb4util8Vector3DIdEEEZNS5_8redblood8parallel7detailsL17AssessMPIFunctionINSC_7stencil10ThreePointEEESt8functionISB_ERKSt3mapINS7_IlEEiNSD_29VectorLexicographicalOrderingISL_EESaISt4pairIKSL_iEEEEUlSA_E_E9_M_invokeERKSt9_Any_dataSA_' referenced in section .rodata.cst8' of CMakeFiles/mpi_redblood_tests.dir/redblood/parallel/GraphCommsTests.cc.o: defined in discarded section .text._ZNSt17_Function_handlerIFSt3setIiSt4lessIiESaIiEERKN6hemelb4util8Vector3DIdEEEZNS5_8redblood8parallel7detailsL17AssessMPIFunctionINSC_7stencil10ThreePointEEESt8functionISB_ERKSt3mapINS7_IlEEiNSD_29VectorLexicographicalOrderingISL_EESaISt4pairIKSL_iEEEEUlSA_E_E9_M_invokeERKSt9_Any_dataSA_[_ZN6hemelb8redblood8CellArmyINS_6TraitsINS_2lb8lattices5D3Q19ENS3_14GuoForcingLBGKENS3_10collisions6NormalENS3_9streamers22SimpleCollideAndStreamENS3_3BFLENS3_9LADDIOLETENS3_28NASHZEROTHORDERPRESSUREIOLETENS3_12LADDIOLETBFLENS3_26NASHZEROTHORDERPRESSUREBFLENS0_7stencil9FourPointEEEEC5ERNS_8geometry11LatticeDataERKSt3setISt10shared_ptrINS0_8CellBaseEENS0_7details18CellUUIDComparisonESaISQ_EESO_ISt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESQ_St4lessIS13_ESaISt4pairIKS13_SQ_EEEERNS_9reporting10TimersBaseINS1C_17HemeLBClockPolicyENS1C_14MPICommsPolicyEEEdRKNS0_14Node2NodeForceES1K_RKNS_3net15MpiCommunicatorE]' of CMakeFiles/mpi_redblood_tests.dir/redblood/parallel/GraphCommsTests.cc.o ZNSt17_Function_handlerIFSt3setIiSt4lessIiESaIiEERKN6hemelb4util8Vector3DIdEEEZNS5_8redblood8parallel7detailsL17AssessMPIFunctionINSC_7stencil10ThreePointEEESt8functionISB_ERKSt3mapINS7_IlEEiNSD_29VectorLexicographicalOrderingISL_EESaISt4pairIKSL_iEEEEUlSA_E_E9_M_invokeERKSt9_Any_dataSA' referenced in section .rodata.cst8' of CMakeFiles/mpi_redblood_tests.dir/redblood/parallel/MPIParallelIntegrationTests.cc.o: defined in discarded section .text.ZNSt17_Function_handlerIFSt3setIiSt4lessIiESaIiEERKN6hemelb4util8Vector3DIdEEEZNS5_8redblood8parallel7detailsL17AssessMPIFunctionINSC_7stencil10ThreePointEEESt8functionISB_ERKSt3mapINS7_IlEEiNSD_29VectorLexicographicalOrderingISL_EESaISt4pairIKSL_iEEEEUlSA_E_E9_M_invokeERKSt9_Any_dataSA[_ZN6hemelb8redblood8CellArmyINS_6TraitsINS_2lb8lattices5D3Q19ENS3_14GuoForcingLBGKENS3_10collisions6NormalENS3_9streamers22SimpleCollideAndStreamENS3_3BFLENS3_9LADDIOLETENS3_28NASHZEROTHORDERPRESSUREIOLETENS3_12LADDIOLETBFLENS3_26NASHZEROTHORDERPRESSUREBFLENS0_7stencil9FourPointEEEEC5ERNS_8geometry11LatticeDataERKSt3setISt10shared_ptrINS0_8CellBaseEENS0_7details18CellUUIDComparisonESaISQ_EESO_ISt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESQ_St4lessIS13_ESaISt4pairIKS13_SQ_EEEERNS_9reporting10TimersBaseINS1C_17HemeLBClockPolicyENS1C_14MPICommsPolicyEEEdRKNS0_14Node2NodeForceES1K_RKNS_3net15MpiCommunicatorE]' of CMakeFiles/mpi_redblood_tests.dir/redblood/parallel/MPIParallelIntegrationTests.cc.o
collect2: error: ld returned 1 exit status
make[2]: *** [tests/CMakeFiles/mpi_redblood_tests.dir/build.make:307: tests/mpi_redblood_tests] Error 1
make[1]: *** [CMakeFiles/Makefile2:1333: tests/CMakeFiles/mpi_redblood_tests.dir/all] Error 2
make: *** [Makefile:164: all] Error 2

I'm also attaching the stdout.txt here:
stdout.txt

@mobernabeu
Copy link
Contributor Author

mobernabeu commented Nov 12, 2021

Thanks @CharlesQiZhou, I suggest that you try running the non-MPI unit tests (assuming they have compiled?) and then test with the main executable whether you encounter the issue with RBC vertex coordinates in #770.

Moving forward, please parse the compilation output and only add to tickets the actual errors, rather than a long list of warnings.

@CharlesQiZhou
Copy link
Contributor

Thanks @mobernabeu. Unfortunately only two executable hemelb and hemelb-confcheck were compiled, and the unit tests were not. I tested the main executable (hemelb) after the compiling Code already. The simulation did run on Cirrus (single-core job tested), but encountered the RBC vertex issue similarly as on ARCHER2

@rupertnash
Copy link
Member

You've got a linking error there. Which symbol is it complaining about? You can demangle the name with c++filt

@CharlesQiZhou
Copy link
Contributor

Well spotted @rupertnash. The demangled functions are:

std::_Function_handler<std::set<int, std::less, std::allocator > (hemelb::util::Vector3D const&), std::function<std::set<int, std::less, std::allocator > (hemelb::util::Vector3D const&)> hemelb::redblood::parallel::details::AssessMPIFunctionhemelb::redblood::stencil::ThreePoint(std::map<hemelb::util::Vector3D, int, hemelb::redblood::parallel::VectorLexicographicalOrdering<hemelb::util::Vector3D >, std::allocator<std::pair<hemelb::util::Vector3D const, int> > > const&)::{lambda(hemelb::util::Vector3D const&)#1}>::_M_invoke(std::_Any_data const&, hemelb::util::Vector3D const&)' referenced in section

@mobernabeu
Copy link
Contributor Author

Thanks @CharlesQiZhou.

@rupertnash, could it be a lambda function that it's been optimised out by error? Perhaps we could try setting CMAKE_BUILD_TYPE to Debug and start adding optimisations incrementally? I can also see a HEMELB_OPTIMISATION CMake variable that I'm not sure how it combines with the previous. Any thoughts welcome!

@CharlesQiZhou
Copy link
Contributor

Hi @rupertnash, thank for your recent changes before Christmas. I found the superbuild quite handy. However, even with superbuild, the code is still compiled only for serial jobs on Cirrus (with srun --ntasks=1). Parallel jobs with srun would fail with the error below:

/lustre/home/ec136/qizhou/hemelb/Code/net/MpiFile.cc:38: MPI_File_open: Other MPI error, error stack:
MPI_FILE_OPEN(67): Invalid MPI_Info

and mpirun would fail with libstdc++.so.6 error instead:

/lustre/sw/gcc/8.2.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb)

The mpirun error is beyond me as gcc10.2.0 rather than 8.2.0 was loaded for both the compilation and the job submission.
Note we used to have the srun issue for parallel jobs for red_blood_cells/merge branch too, but mpirun worked as an alternative at that time. Any thoughts about the current error?

FYI, the modules I loaded for compiling the code were:

module load cmake/3.17.3
module load gcc/10.2.0
module load intel-mpi-19/19.0.0.117
module load libtool/2.4.6

The hemelb main executable did compile, but errors occurred during cmake --build build:

[100%] Built target hemelb-tests
make[4]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build'
make[3]: *** [Makefile:161: all] Error 2
make[3]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build'
gmake[2]: *** [CMakeFiles/hemelb.dir/build.make:135: hemelb-prefix/src/hemelb-stamp/hemelb-build] Error 2
gmake[2]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build'
gmake[1]: *** [CMakeFiles/Makefile2:137: CMakeFiles/hemelb.dir/all] Error 2
gmake[1]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build'
gmake: *** [Makefile:107: all] Error 2

@CharlesQiZhou
Copy link
Contributor

Maybe it's also useful to post the error from conventional build, i.e. manually compiling the dependencies and then the code itself. Previously in last November both would compile and the main executable was generated. Now make the dependencies gives the error as below:

CMake Error at ThirdParty/loguru/vtkloguru/cmake_install.cmake:41 (file):
file cannot create directory: /usr/local/include/vtk-9.1/vtkloguru. Maybe
need administrative privileges.
Call Stack (most recent call first):
ThirdParty/loguru/cmake_install.cmake:42 (include)
cmake_install.cmake:42 (include)
make[3]: *** [Makefile:106: install] Error 1
make[2]: *** [CMakeFiles/dep_VTK.dir/build.make:94: dep_VTK-prefix/src/dep_VTK-stamp/dep_VTK-install] Error 2
make[1]: *** [CMakeFiles/Makefile2:108: CMakeFiles/dep_VTK.dir/all] Error 2
make: *** [Makefile:104: all] Error 2

@mobernabeu
Copy link
Contributor Author

Hi Charles, while this gets looked into properly. Can you check if directories /usr/local/include/ and /usr/local/include/vtk-9.1 exist and if so, what are their permissions?

@CharlesQiZhou
Copy link
Contributor

Hi @mobernabeu, /usr/local/include/ exists and the permission is drwxr-xr-x. /usr/local/include/vtk-9.1 does not.

@mobernabeu
Copy link
Contributor Author

/usr/local/include doesn't have write permissions in the others group in Cirrus and therefore HemeLB cannot put things there. Explained CMake variables CMAKE_INSTALL_PREFIX and how HemeLB uses them. Important to understand how CMakeLists.txt works for each build.

We agreed that @CharlesQiZhou should go back to the SuperBuild build and understand the MPI runtime error that the simulations are throwing. Sysadmin advised linking with a different MPI implementation. If it persist afterwards, we will need to understand if we are doing something wrong in the code that shows in Cirrus but not in other machines (due to different MPI implementations being used).

@CharlesQiZhou
Copy link
Contributor

Hi @mobernabeu, superbuild with the MPT library (default MPI implementation recommended by Cirrus) instead of Intel-MPI (i.e. intel-mpi-19 as in previous comment above) gives us a SIGSEGV error at run time, which was also encountered for the earlier red_blood_cells/merge branch. There was a long conversation in the hemeLB channel on Teams between Rupert, Oliver and me about that error, which relates to segmentation fault upon simulation initialisation. That's why @rupertnash recommended Intel-MPI for compiling the code on Cirrus instead.

See the run errors below for (1) the serial job (srun --ntasks=1), (2) parallel job with Srun, and (3) parallel job with MPIrun, respectively. Note that MPIrun gives the same error (GLIBCXX_3.4.26) as the previous failed job run by the code superbuilt with Intel-MPI rather than MPT (see upstairs).

(1) srun --ntasks=1

MPT ERROR: Rank 0(g:0) received signal SIGSEGV(11).
Process ID: 19750, Host: r1i0n0, Program: /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb
MPT Version: HPE MPT 2.22 04/01/20 03:38:30-root

MPT: --------stack traceback-------
MPT: Attaching to program: /proc/19750/exe, process 19750
MPT: [Thread debugging using libthread_db enabled]
MPT: Using host libthread_db library "/lib64/libthread_db.so.1".
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: 0x000014efa544f742 in waitpid () from /lib64/libpthread.so.0
MPT: warning: File "/lustre/sw/gcc/10.2.0/lib64/libstdc++.so.6.0.28-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
MPT: To enable execution of this file add
MPT: add-auto-load-safe-path /lustre/sw/gcc/10.2.0/lib64/libstdc++.so.6.0.28-gdb.py
MPT: line to your configuration file "/lustre/home/ec136/qizhou/.gdbinit".
MPT: To completely disable this security protection add
MPT: set auto-load safe-path /
MPT: line to your configuration file "/lustre/home/ec136/qizhou/.gdbinit".
MPT: For more information about this security protection see the
MPT: "Auto-loading safe path" section in the GDB manual. E.g., run from the shell:
MPT: info "(gdb)Auto-loading safe path"
MPT: Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-72.el8_1.1.x86_64 libibverbs-41mlnx1-OFED.4.9.0.0.7.49224.x86_64 libmlx4-41mlnx1-OFED.4.7.3.0.3.49224.x86_64 libmlx5-41mlnx1-OFED.4.9.0.1.2.49224.x86_64 libnl3-3.4.0-5.el8.x86_64 numactl-libs-2.0.12-7.el8.x86_64 zlib-1.2.11-10.el8.x86_64
MPT: (gdb) #0 0x000014efa544f742 in waitpid () from /lib64/libpthread.so.0
MPT: #1 0x000014efa4efd6c6 in mpi_sgi_system (
MPT: #2 MPI_SGI_stacktraceback (
MPT: header=header@entry=0x7ffdbdcf98d0 "MPT ERROR: Rank 0(g:0) received signal SIGSEGV(11).\n\tProcess ID: 19750, Host: r1i0n0, Program: /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb\n\tMPT Version: HPE MPT 2.22 "...) at sig.c:340
MPT: #3 0x000014efa4efd8c3 in first_arriver_handler (signo=signo@entry=11,
MPT: stack_trace_sem=stack_trace_sem@entry=0x14efa24a0080) at sig.c:489
MPT: #4 0x000014efa4efdb8f in slave_sig_handler (signo=11,
MPT: siginfo=, extra=) at sig.c:672
MPT: #5
MPT: #6 0x00000000004fe5b5 in hemelb::net::MpiCommunicator::Duplicate() const ()
MPT: #7 0x000000000046caa8 in hemelb::SimulationMaster<hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::ThreePoint> >::SimulationMaster(hemelb::configuration::CommandLine&, hemelb::net::IOCommunicator const&) ()
MPT: #8 0x00000000004386b8 in main ()
MPT: (gdb) A debugging session is active.
MPT:
MPT: Inferior 1 [process 19750] will be detached.
MPT:
MPT: Quit anyway? (y or n) [answered Y; input not from terminal]
MPT: Detaching from program: /proc/19750/exe, process 19750
MPT: [Inferior 1 (process 19750) detached]

MPT: -----stack traceback ends-----
MPT: On host r1i0n0, Program /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb, Rank 0, Process 19750: Dumping core on signal SIGSEGV(11) into directory /lustre/home/ec136/qizhou/work/FabricHemeLb/results/P-T3_porosity0.45_w0.8_FE32_Q0.1_Ca0.95_Zsep0.7_CIRRUS_vtpRBC_KendraTest_modifyBCs
srun: error: r1i0n0: task 0: Segmentation fault (core dumped)

(2) srun

srun: error: r1i0n0: task 23: Segmentation fault (core dumped)
MPT: Program /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb, Rank 2, Process 20014: Core dump on signal SIGSEGV(11) suppressed.

(3) mpirun

/lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb: /lustre/sw/gcc/8.2.0/lib64/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb)

@mobernabeu
Copy link
Contributor Author

Thanks, Charles. We need to understand if (1) is a a bug in HemeLB or in the MPI implementation. The output is giving you a stack trace where #8 is the first function being called by the executable (i.e. main()) and this in turn calls #7 and so on. The last call that happens within HemeLB is hemelb::net::MpiCommunicator::Duplicate(), so we need to understand in which line is crashing and why. I suggest you add some print statements in net/MpiCommunicator.cc (or use a debugger if you know how) to find out and we take it from there.

@CharlesQiZhou
Copy link
Contributor

Hi @mobernabeu, the print output indicates that the code crashes at the line below
HEMELB_MPI_CALL(MPI_Comm_dup, (*commPtr, &newComm));
in function MpiCommunicator::Duplicate()

@mobernabeu
Copy link
Contributor Author

Thanks, Charles. If you mean the return statement, it should be happening within the constructor of the object that it's being returned. Could you please see where exactly? Look for MpiCommunicator::MpiCommunicator(MPI_Comm communicator, bool owner)

@CharlesQiZhou
Copy link
Contributor

@mobernabeu, apologies for the confusion. The crashed line itself is HEMELB_MPI_CALL(MPI_Comm_dup, (*commPtr, &newComm));

Only "breakpoint 1" and "breakpoint 2" from below are printed at runtime:

MpiCommunicator MpiCommunicator::Duplicate() const
{
  printf("breakpoint 1");
  MPI_Comm newComm;
  printf("breakpoint 2");
  HEMELB_MPI_CALL(MPI_Comm_dup, (*commPtr, &newComm));
  printf("breakpoint 3");
  return MpiCommunicator(newComm, true);
}

@mobernabeu
Copy link
Contributor Author

mobernabeu commented Feb 8, 2022

Can you try replacing that line with int results = MPI_Comm_dup(*commPtr, &newComm); std::cout << "success? " << (results==MPI_SUCCESS ) << std::endl;

If you are gonna use printfs for writing, make sure you flush the output with a \n at the end of the string, otherwise you might miss some of the messages.

@CharlesQiZhou
Copy link
Contributor

Hi @mobernabeu, I just gave it a go. Unfortunately there is no "success?" output from the recompiled code. Still "breakpoint 1" and "breakpoint 2" only

@mobernabeu
Copy link
Contributor Author

Mmmh, puzzling, can you add an assert(commPtr); before the call to MPI_Comm_dup and make sure that you are not compiling in Release mode so that the asserts are not turned off. Otherwise, we will try to replicate the error with a minimal MPI test. It's just a small number of calls to get there.

@CharlesQiZhou
Copy link
Contributor

CharlesQiZhou commented Feb 8, 2022

@mobernabeu, got the assertion error below

hemelb: /lustre/home/ec136/qizhou/hemelb/Code/net/MpiCommunicator.cc:152: hemelb::net::MpiCommunicator hemelb::net::MpiCommunicator::Duplicate() const: Assertion `commPtr' failed.

@CharlesQiZhou
Copy link
Contributor

CharlesQiZhou commented Feb 9, 2022

@mobernabeu, following the added assertion about commPtr in hemelb::net::MpiCommunicator::Duplicate(), it is found that 2 out of the 5 constructors are called in a serial job (--ntasks=1), each called twice in the order below:

    MpiCommunicator::MpiCommunicator(int localRankInCommunicator, int communicatorSize) :
        commPtr(), localRankInCommunicator(localRankInCommunicator), communicatorSize(communicatorSize)
    {
    }
    MpiCommunicator::MpiCommunicator(int localRankInCommunicator, int communicatorSize) :
        commPtr(), localRankInCommunicator(localRankInCommunicator), communicatorSize(communicatorSize)
    {
    }
    MpiCommunicator::MpiCommunicator(MpiCommunicator const & comm) :
        commPtr(comm.commPtr), communicatorSize(comm.communicatorSize), localRankInCommunicator(comm.localRankInCommunicator)
    {
    }

    MpiCommunicator::MpiCommunicator(MpiCommunicator const & comm) :
        commPtr(comm.commPtr), communicatorSize(comm.communicatorSize), localRankInCommunicator(comm.localRankInCommunicator)
    {
    }

Running with 2 cores (--ntasks=2) called the same constructors in the same order for each rank.

@CharlesQiZhou
Copy link
Contributor

CharlesQiZhou commented Feb 12, 2022

Following discussion with @mobernabeu offline, a bug in the MpiCommunicator constructors is identified and fixed (diff below):

diff --git a/Code/net/MpiCommunicator.cc b/Code/net/MpiCommunicator.cc
index b8978600..22bb26d9 100644
--- a/Code/net/MpiCommunicator.cc
+++ b/Code/net/MpiCommunicator.cc
@@ -28,7 +28,7 @@ namespace hemelb
 
     MpiCommunicator MpiCommunicator::World()
     {
-      return MpiCommunicator(MPI_COMM_WORLD, false);
+      return MpiCommunicator(MPI_Comm(MPI_COMM_WORLD), false);
     }
 
     MpiCommunicator::MpiCommunicator() :

This fixes the hemelb::net::MpiCommunicator::Duplicate() issue in the previous stack traceback, and the serial job (--ntasks=1) can now run with hemelb built with the MPT library. Even more promisingly, 2-core and 3-core jobs also run. However, 4-core jobs fail (--ntasks=4, new stack traceback info below). I've tested various scenarios under which non-serial job would fail (usually with a core dump or segmentation error), and there is no clear clue! For example, after the MpiCommunicator fix, if the code is now compiled with Intel-MPI rather than MPT, even a 10-core job (--ntasks=10) would run without errors, but then a 36-core job fails with (--ntasks=36). Guess what, the same 36-core job would run if initialised with

#SBATCH --nodes=1
#SBATCH --tasks-per-node=36

rather than

#SBATCH --nodes=1
#SBATCH --ntasks=36

If the above is not dramatic enough, the first way of initialising the simulation (--tasks-per-node=36) would only work if it's run on the standard QoS, but not on the short queue (according to Cirrus, maximum 2 nodes allowed)! For a 72-core job requiring 2 nodes (one node on Cirrus has 36 cores), it collapses no matter which combination of initialisation strategies mentioned above is used.

The stack traceback below is for --ntasks=4 job run with hemelb build by MPT:

MPT: --------stack traceback-------
MPT: Attaching to program: /proc/21408/exe, process 21408
MPT: [Thread debugging using libthread_db enabled]
MPT: Using host libthread_db library "/lib64/libthread_db.so.1".
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: 0x000014af5e1d5708 in waitpid () from /lib64/libpthread.so.0
MPT: Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-72.el8_1.1.x86_64 libibverbs-41mlnx1-OFED.4.9.0.0.7.49224.x86_64 libmlx4-41mlnx1-OFED.4.7.3.0.3.49224.x86_64 libmlx5-41mlnx1-OFED.4.9.0.1.2.49224.x86_64 libnl3-3.4.0-5.el8.x86_64 numactl-libs-2.0.12-7.el8.x86_64 zlib-1.2.11-10.el8.x86_64
MPT: (gdb) #0 0x000014af5e1d5708 in waitpid () from /lib64/libpthread.so.0
MPT: #1 0x000014af5dc836c6 in mpi_sgi_system (
MPT: #2 MPI_SGI_stacktraceback (
MPT: header=header@entry=0x7fffc5ed3c10 "MPT ERROR: Rank 3(g:3) received signal SIGSEGV(11).\n\tProcess ID: 21408, Host: r1i0n0, Program: /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb\n\tMPT Version: HPE MPT 2.22 "...) at sig.c:340
MPT: #3 0x000014af5dc838c3 in first_arriver_handler (signo=signo@entry=11,
MPT: stack_trace_sem=stack_trace_sem@entry=0x14af5b220080) at sig.c:489
MPT: #4 0x000014af5dc83b8f in slave_sig_handler (signo=11,
MPT: siginfo=, extra=) at sig.c:672
MPT: #5
MPT: #6 0x000014af5dbaea0c in MPI_SGI_request_recv (modes=modes@entry=256,
MPT: ubuf=, count=62673, type=224, src=1555455072,
MPT: tag=, comm=) at req.c:818
MPT: #7 0x000014af5dc87dde in MPI_SGI_irecv (buf=,
MPT: count=, type=, des=,
MPT: tag=, comm=) at sugar.c:62
MPT: #8 0x000014af5dc4cf87 in sched_start_entry (s=0x8830250, s=0x8830250, idx=1,
MPT: e=0x2440040) at nbc.c:237
MPT: #9 MPI_SGI_sched_continue (s=s@entry=0x8830250) at nbc.c:311
MPT: #10 0x000014af5dc4d776 in MPI_SGI_sched_start (sp=sp@entry=0x7fffc5ed47b8,
MPT: comm=4, tag=-16323, request=request@entry=0x7fffc5ed483c) at nbc.c:373
MPT: #11 0x000014af5dc3591a in MPI_SGI_ineighbor_allgatherv_impl (
MPT: sendbuf=0x81f2dc0, sendcount=sendcount@entry=63106,
MPT: sendtype=sendtype@entry=224, recvbuf=recvbuf@entry=0x88302a0,
MPT: recvcounts=recvcounts@entry=0x6382130, displs=0x308a9e0, recvtype=224,
MPT: comm_ptr=0x7fffc5ed4888, request=0x7fffc5ed483c) at inhb_allgatherv.c:76
MPT: #12 0x000014af5dc50eaa in MPI_SGI_neighbor_allgatherv_default (
MPT: comm_ptr=0x7fffc5ed4888, recvtype=224, displs=,
MPT: recvcounts=0x6382130, recvbuf=0x88302a0, sendtype=224, sendcount=63106,
MPT: sendbuf=) at nhb_allgatherv.c:91
MPT: #13 MPI_SGI_neighbor_allgatherv_impl (comm_ptr=0x7fffc5ed4888, recvtype=224,
MPT: displs=, recvcounts=0x6382130, recvbuf=0x88302a0,
MPT: sendtype=224, sendcount=63106, sendbuf=)
MPT: at nhb_allgatherv.c:48
MPT: #14 PMPI_Neighbor_allgatherv (sendbuf=, sendcount=63106,
MPT: sendtype=224, recvbuf=0x88302a0, recvcounts=0x6382130,
MPT: displs=, recvtype=224, comm=)
MPT: at nhb_allgatherv.c:91
MPT: #15 0x00000000004a5c42 in std::vector<std::vector<hemelb::util::Vector3D, std::allocator<hemelb::util::Vector3D > >, std::allocator<std::vector<hemelb::util::Vector3D, std::allocator<hemelb::util::Vector3D > > > > hemelb::net::MpiCommunicator::AllNeighGatherV<hemelb::util::Vector3D >(std::vector<hemelb::util::Vector3D, std::allocator<hemelb::util::Vector3D > > const&) const ()
MPT: #16 0x00000000004a4e91 in hemelb::redblood::parallel::ComputeGlobalCoordsToProcMap(hemelb::net::MpiCommunicator const&, hemelb::geometry::LatticeData const&)
MPT: ()
MPT: #17 0x000000000046915d in hemelb::redblood::CellArmy<hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::ThreePoint> >::CellArmy(hemelb::geometry::LatticeData&, std::set<std::shared_ptrhemelb::redblood::CellBase, hemelb::redblood::details::CellUUIDComparison, std::allocator<std::shared_ptrhemelb::redblood::CellBase > > const&, std::shared_ptr<std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrhemelb::redblood::CellBase, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrhemelb::redblood::CellBase > > > >, hemelb::reporting::TimersBase<hemelb::reporting::HemeLBClockPolicy, hemelb::reporting::MPICommsPolicy>&, double, hemelb::redblood::Node2NodeForce const&, hemelb::redblood::Node2NodeForce const&, hemelb::net::MpiCommunicator const&) ()
MPT: #18 0x000000000046a4b5 in hemelb::SimulationMaster<hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::ThreePoint> >::Initialise() ()
MPT: #19 0x000000000046cf67 in hemelb::SimulationMaster<hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::ThreePoint> >::SimulationMaster(hemelb::configuration::CommandLine&, hemelb::net::IOCommunicator const&) ()
MPT: #20 0x0000000000438438 in main ()
MPT: (gdb) A debugging session is active.
MPT:
MPT: Inferior 1 [process 21408] will be detached.
MPT:
MPT: Quit anyway? (y or n) [answered Y; input not from terminal]
MPT: Detaching from program: /proc/21408/exe, process 21408
MPT: [Inferior 1 (process 21408) detached]

MPT: -----stack traceback ends-----
MPT: On host r1i0n0, Program /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb, Rank 3, Process 21408: Dumping core on signal SIGSEGV(11) into directory /lustre/home/ec136/qizhou/work/FabricHemeLb/results/P-T3_porosity0.45_w0.8_FE32_Q0.1_Ca0.95_Zsep0.7_CIRRUS_vtpRBC_KendraTest_modifyBCs
srun: error: r1i0n0: task 3: Segmentation fault (core dumped)

Note that the last call to hemelb in #15 hemelb::util::Vector3D<long> is also a suspect which has caused the RBC vertice issues in ticket #776.

@CharlesQiZhou
Copy link
Contributor

CharlesQiZhou commented Feb 12, 2022

Note the build error below is common for the main executable built either by MPT or Intel-MPI:

collect2: error: ld returned 1 exit status
make[5]: *** [tests/CMakeFiles/mpi_redblood_tests.dir/build.make:304: tests/mpi_redblood_tests] Error 1
make[5]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build'
make[4]: *** [CMakeFiles/Makefile2:1330: tests/CMakeFiles/mpi_redblood_tests.dir/all] Error 2
make[4]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build'
make[3]: *** [Makefile:161: all] Error 2
make[3]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build'
gmake[2]: *** [CMakeFiles/hemelb.dir/build.make:135: hemelb-prefix/src/hemelb-stamp/hemelb-build] Error 2
gmake[2]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build'
gmake[1]: *** [CMakeFiles/Makefile2:134: CMakeFiles/hemelb.dir/all] Error 2
gmake[1]: Leaving directory '/lustre/home/ec136/qizhou/hemelb/build'
gmake: *** [Makefile:107: all] Error 2

I should also mention that for parallel jobs run with hemelb built by MPT, nbc.c issues are noted in the stack traceback:

MPT: --------stack traceback-------
MPT ERROR: Assertion failed at gps.c:187: "MPI_UNDEFINED != grank"
hemelb: nbc.c:422: add_entry: Assertion `s->entries != NULL' failed.

or

MPT: --------stack traceback-------
hemelb: nbc.c:423: add_entry: Assertion `s->size > 0' failed.
hemelb: nbc.c:423: add_entry: Assertion `s->size > 0' failed.
hemelb: nbc.c:423: add_entry: Assertion `s->size > 0' failed.
hemelb: nbc.c:423: add_entry: Assertion `s->size > 0' failed.
hemelb: nbc.c:423: add_entry: Assertion `s->size > 0' failed.
hemelb: nbc.c:423: add_entry: Assertion `s->size > 0' failed.
hemelb: nbc.c:423: add_entry: Assertion `s->size > 0' failed.
hemelb: nbc.c:423: add_entry: Assertion `s->size > 0' failed.

MPT: Attaching to program: /proc/32502/exe, process 32502
MPT: [Thread debugging using libthread_db enabled]
MPT: Using host libthread_db library "/lib64/libthread_db.so.1".
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: warning: Loadable section ".note.gnu.property" outside of ELF segments
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: 0x00001464898f1708 in waitpid () from /lib64/libpthread.so.0
MPT: Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-72.el8_1.1.x86_64 libibverbs-41mlnx1-OFED.4.9.0.0.7.49224.x86_64 libmlx4-41mlnx1-OFED.4.7.3.0.3.49224.x86_64 libmlx5-41mlnx1-OFED.4.9.0.1.2.49224.x86_64 libnl3-3.4.0-5.el8.x86_64 numactl-libs-2.0.12-7.el8.x86_64 zlib-1.2.11-10.el8.x86_64
MPT: (gdb) #0 0x00001464898f1708 in waitpid () from /lib64/libpthread.so.0
MPT: #1 0x000014648939f6c6 in mpi_sgi_system (
MPT: #2 MPI_SGI_stacktraceback (
MPT: header=header@entry=0x7ffcf4c60010 "MPT ERROR: Rank 37(g:37) received signal SIGSEGV(11).\n\tProcess ID: 32502, Host: r1i0n1, Program: /lustre/home/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb\n\tMPT Version: HPE MPT 2.22"...) at sig.c:340
MPT: #3 0x000014648939f8c3 in first_arriver_handler (signo=signo@entry=11,
MPT: stack_trace_sem=stack_trace_sem@entry=0x146486920080) at sig.c:489
MPT: #4 0x000014648939fb8f in slave_sig_handler (signo=11,
MPT: siginfo=, extra=) at sig.c:672
MPT: #5
MPT: #6 MPI_SGI_type_dup (type=type@entry=4106619800) at type.c:351
MPT: #7 0x0000146489369cdd in MPI_SGI_sched_send (
MPT: buf=buf@entry=0x1464896a1638 <mpi_sgi_mem_amount>, count=count@entry=1,
MPT: type=type@entry=4106619800, des=34, comm=4106620336, s=s@entry=0x5b17120)
MPT: at nbc.c:461
MPT: #8 0x00001464893513c9 in MPI_SGI_ineighbor_allgather_default (
MPT: sendbuf=0x1464896a1638 <mpi_sgi_mem_amount>, sendcount=1,
MPT: sendtype=4106619800, recvbuf=0x146400000003, recvcount=32764, recvtype=3,
MPT: comm_ptr=0xffffc03c00000000, s=0x5b17120) at inhb_allgather.c:43
MPT: #9 0x0000000300000000 in ?? ()
MPT: #10 0xffffc03c00000000 in ?? ()
MPT: #11 0x0000000005b17120 in ?? ()
MPT: #12 0x00007ffcf4c60be0 in ?? ()
MPT: #13 0x0000000000000000 in ?? ()
MPT: (gdb) A debugging session is active.

@mobernabeu
Copy link
Contributor Author

Let's start with the MPT and ntasks=4. It might be a similar problem to the previous. MpiCommunicator::AllNeighGatherV is crashing when MPI_Neighbor_allgatherv gets called. The actual MPI communicator is gathered with *this and passed as an argument. Could you please add traces to make sure that *this calls operator MPI_Comm() const in MpiCommunicator.h and not operator bool() const in the same file? If the latter is being called, try replacing *this with MPI_Comm(*this) in MpiCommunicator::AllNeighGatherV and see if it goes via the former. If that works, the change needs to applied everywhere in the file.

@CharlesQiZhou
Copy link
Contributor

CharlesQiZhou commented Feb 15, 2022

Hi @mobernabeu, unfortunately operator MPI_Comm() const is found correctly called by rerunning the RBC simulation (--ntasks=4) after adding the traces and building again with MPT. Furthermore, the simulation did not crash and got stuck calling operator MPI_Comm() const until end of walltime

@mobernabeu
Copy link
Contributor Author

I spoke with @CharlesQiZhou yesterday and it seems as flow-only simulations are crashing at initialisation some times, so we need to start with that before investigating RBCs any more. @CharlesQiZhou could you please document that here. If you could do a run with the logger turned to Debug that could be useful.

Separately, could you also document the errors that you get when compiling the unit tests (sequential and parallel)? We should check those first to see if they pick up any of the issues as it will make it easier to debug.

@CharlesQiZhou
Copy link
Contributor

@rupertnash A quick follow-up of our discussion this morning.

  1. The flow-only simulations run well if the code is compiled with MPT, but would crash sporadically if compiled with Intel MPI.
  2. Helpdesk queries related to this ticket in general include:

Q1541607 (Job submission problem: MPT and SRUN errors)
Q1611625 (MPI errors with parallel jobs on Cirrus)
Q1768044 (Cirrus I/O overload: impossible to compile code)

@CharlesQiZhou
Copy link
Contributor

CharlesQiZhou commented Nov 10, 2022

Further info. on the unittest compilation error and main application runtime error (files attached at the end) after last week's merge of fields branch:

In file included from /work/ec136/ec136/qizhou/hemelb/Code/tests/configuration/CommandLineTests.cc:12:
/work/ec136/ec136/qizhou/hemelb/Code/tests/helpers/FolderTestFixture.h: In function ‘void hemelb::tests::helpers::ModifyXMLInput(TiXmlDocument&, const std::vector<std::__cxx11::basic_string >&, const T&)’:
/work/ec136/ec136/qizhou/hemelb/Code/tests/helpers/FolderTestFixture.h:35:60: error: no matching function for call to ‘TiXmlElement::FirstChildElement(const std::__cxx11::basic_string&)’
35 | auto next_child = child->FirstChildElement(name);
| ^

MPT ERROR: Rank 0(g:0) received signal SIGSEGV(11).
Process ID: 437304, Host: r1i7n0, Program: /mnt/lustre/indy2lfs/work/ec136/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb
MPT Version: HPE MPT 2.25 08/14/21 03:17:46-root

MPT: --------stack traceback-------
MPT: Attaching to program: /proc/437304/exe, process 437304
MPT: [Thread debugging using libthread_db enabled]
MPT: Using host libthread_db library "/lib64/libthread_db.so.1".
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: (no debugging symbols found)...done.
MPT: 0x000014688208d4a2 in waitpid () from /lib64/libpthread.so.0
MPT: warning: File "/mnt/lustre/indy2lfs/sw/gcc/10.2.0/lib64/libstdc++.so.6.0.28-gdb.py" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
MPT: To enable execution of this file add
MPT: add-auto-load-safe-path /mnt/lustre/indy2lfs/sw/gcc/10.2.0/lib64/libstdc++.so.6.0.28-gdb.py
MPT: line to your configuration file "/home/ec136/ec136/qizhou/.gdbinit".
MPT: To completely disable this security protection add
MPT: set auto-load safe-path /
MPT: line to your configuration file "/home/ec136/ec136/qizhou/.gdbinit".
MPT: For more information about this security protection see the
MPT: "Auto-loading safe path" section in the GDB manual. E.g., run from the shell:
MPT: info "(gdb)Auto-loading safe path"
MPT: Missing separate debuginfos, use: yum debuginfo-install glibc-2.28-151.el8.x86_64 libibverbs-41mlnx1-OFED.4.9.3.0.0.49417.x86_64 libmlx5-41mlnx1-OFED.4.9.0.1.2.49417.x86_64 libnl3-3.5.0-1.el8.x86_64 numactl-libs-2.0.12-11.el8.x86_64 zlib-1.2.11-17.el8.x86_64
MPT: (gdb) #0 0x000014688208d4a2 in waitpid () from /lib64/libpthread.so.0
MPT: #1 0x0000146881d76d96 in MPI_SGI_stacktraceback ()
MPT: from /opt/hpe/hpc/mpt/mpt-2.25/lib/libmpi.so
MPT: #2 0x0000146881d76f9a in first_arriver_handler ()
MPT: from /opt/hpe/hpc/mpt/mpt-2.25/lib/libmpi.so
MPT: #3 0x0000146881d7725f in slave_sig_handler ()
MPT: from /opt/hpe/hpc/mpt/mpt-2.25/lib/libmpi.so
MPT: #4
MPT: #5 0x00000000004e7e84 in hemelb::net::MpiCommunicator::Duplicate() const ()
MPT: #6 0x0000000000458f28 in hemelb::SimulationMaster<hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::ThreePoint> >::SimulationMaster(hemelb::configuration::CommandLine&, hemelb::net::IOCommunicator const&) ()
MPT: #7 0x0000000000433988 in main ()
MPT: (gdb) A debugging session is active.
MPT:
MPT: Inferior 1 [process 437304] will be detached.
MPT:
MPT: Quit anyway? (y or n) [answered Y; input not from terminal]
MPT: Detaching from program: /proc/437304/exe, process 437304
MPT: [Inferior 1 (process 437304) detached]

MPT: -----stack traceback ends-----
MPT: On host r1i7n0, Program /mnt/lustre/indy2lfs/work/ec136/ec136/qizhou/hemelb/build/hemelb-prefix/src/hemelb-build/hemelb, Rank 0, Process 437304: Dumping core on signal SIGSEGV(11) into directory /mnt/lustre/indy2lfs/work/ec136/ec136/qizhou/results/tubeRBC_testjob_AlexEden_CIRRUS
srun: error: r1i7n0: task 0: Segmentation fault (core dumped)
srun: Terminating job step 3553530.0
slurmstepd: error: *** STEP 3553530.0 ON r1i7n0 CANCELLED AT 2022-11-09T04:58:16 ***
srun: error: r1i7n0: task 1: Terminated
srun: Force Terminated job step 3553530.0

stderr_unittests.txt
stderr_runtime.txt

@rupertnash
Copy link
Member

@CharlesQiZhou can you please try again on Cirrus? The last 2 commits to main may have fixed these problems.

@mobernabeu
Copy link
Contributor Author

Oh man, I didn't think it could be picking up the wrong ctor... 🤦 Hope you are right!

@CharlesQiZhou
Copy link
Contributor

Thanks @rupertnash for the commits.
Unfortunately the unittests still failed to compile due to similar TinyXML issues.
On the other hand, RBC simulation with the compiled hemelb executable now encounters another issue, see highlighted line in the stack traceback below:

MPT: (gdb) #0 0x000014d15f6f3468 in waitpid () from /lib64/libpthread.so.0
MPT: #1 0x000014d15f3dcd96 in MPI_SGI_stacktraceback ()
MPT: from /opt/hpe/hpc/mpt/mpt-2.25/lib/libmpi.so
MPT: #2 0x000014d15f3dcf9a in first_arriver_handler ()
MPT: from /opt/hpe/hpc/mpt/mpt-2.25/lib/libmpi.so
MPT: #3 0x000014d15f3dd25f in slave_sig_handler ()
MPT: from /opt/hpe/hpc/mpt/mpt-2.25/lib/libmpi.so
MPT: #4
MPT: #5 0x000014d15df3237f in raise () from /lib64/libc.so.6
MPT: #6 0x000014d15df1cdb5 in abort () from /lib64/libc.so.6
MPT: #7 0x000014d15df1cc89 in __assert_fail_base.cold.0 () from /lib64/libc.so.6
MPT: #8 0x000014d15df2aa76 in __assert_fail () from /lib64/libc.so.6
MPT: #9 0x00000000004ada0c in hemelb::redblood::parallel::ComputeGlobalCoordsToProcMap(hemelb::net::MpiCommunicator const&, hemelb::geometry::Domain const&) ()
MPT: #10 0x00000000004565a0 in hemelb::redblood::CellArmy<hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::ThreePoint> >::CellArmy(hemelb::geometry::FieldData&, std::set<std::shared_ptrhemelb::redblood::CellBase, hemelb::redblood::details::CellUUIDComparison, std::allocator<std::shared_ptrhemelb::redblood::CellBase > > const&, std::shared_ptr<std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrhemelb::redblood::CellBase, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrhemelb::redblood::CellBase > > > >, hemelb::reporting::TimersBase<hemelb::reporting::HemeLBClockPolicy, hemelb::reporting::MPICommsPolicy>&, double, hemelb::redblood::Node2NodeForce const&, hemelb::redblood::Node2NodeForce const&, hemelb::net::MpiCommunicator const&) ()
MPT: #11 0x0000000000457725 in hemelb::SimulationMaster<hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::ThreePoint> >::Initialise() ()
MPT: #12 0x0000000000459404 in hemelb::SimulationMaster<hemelb::Traits<hemelb::lb::lattices::D3Q19, hemelb::lb::GuoForcingLBGK, hemelb::lb::collisions::Normal, hemelb::lb::streamers::SimpleCollideAndStream, hemelb::lb::BFL, hemelb::lb::LADDIOLET, hemelb::lb::NASHZEROTHORDERPRESSUREIOLET, hemelb::lb::LADDIOLETBFL, hemelb::lb::NASHZEROTHORDERPRESSUREBFL, hemelb::redblood::stencil::ThreePoint> >::SimulationMaster(hemelb::configuration::CommandLine&, hemelb::net::IOCommunicator const&) ()
MPT: #13 0x0000000000433988 in main ()
MPT: (gdb) A debugging session is active.

@mobernabeu
Copy link
Contributor Author

Thanks @CharlesQiZhou. Please add some tracing to check which of the two assertions in ComputeGlobalCoordsToProcMap is tripping.

@rupertnash
Copy link
Member

OK - after a brief fight with Cirrus yesterday I have the tests compiling and passing with the following modules and CMake via the superbuild

module load gcc/10.2.0
module load cmake/3.22.1
module load mpt/2.25
# requires module use /work/z04/shared/rwn/modules
module load ctemplate/2.4
# note the module hdf5parallel/1.10.6-gcc8-mpt225 forces load of modules that we don't want and that aren't required, so sidestep this
HDF5_DIR=/mnt/lustre/indy2lfs/sw/hdf5parallel/1.10.6-gcc8-mpt225

prefix=/work/somewhere/you/can/write

cmake -S path/to/hemelb \
  -B build \
  -DCMAKE_INSTALL_PREFIX=$prefix \
  -DHEMELB_DEPENDENCIES_INSTALL_PREFIX=$prefix \
  -DHDF5_ROOT=$HDF5_DIR \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DDEPS_HDF5=System \
  -DHEMELB_OPTIMISATION=-O2 \
  -DHEMELB_BUILD_RBC=ON

@CharlesQiZhou
Copy link
Contributor

Thanks a lot @rupertnash for negotiating with Cirrus and the new commits. I attempted a few compilations following your modules but the main executable failed to compile this time due to TinyXML library issues (see error message below). I saw your comments about TIXML_USE_STL in ticket #797, but is there anything else that needs to be done regarding TinyXML?

Revision number: 14ed2b4
CMake Error at /mnt/lustre/indy2lfs/sw/cmake/3.22.1/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find TinyXML (missing: TINYXML_INCLUDE_DIR TINYXML_LIBRARIES)
Call Stack (most recent call first):
/mnt/lustre/indy2lfs/sw/cmake/3.22.1/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
/work/ec136/ec136/qizhou/hemelb/CMake/FindTinyXML.cmake:31 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
/work/ec136/ec136/qizhou/hemelb/dependencies/TinyXML/find.cmake:7 (find_package)
/work/ec136/ec136/qizhou/hemelb/CMake/HemeLbDependency.cmake:8 (include)
/work/ec136/ec136/qizhou/hemelb/CMake/HemeLbDependency.cmake:54 (hemelb_dependency)
CMakeLists.txt:83 (find_hemelb_dependency)

Hi @mobernabeu , sure I'll follow up with the ComputeGlobalCoordsToProcMap assertions next.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants