Merge pull request #1326 from paulromano/openmpi-fixes

Get test suite to work with OpenMPI
This commit is contained in:
Sterling Harper 2019-09-05 21:52:43 -04:00 committed by GitHub
commit bafdbf8e8b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 27 additions and 9 deletions

View file

@ -120,6 +120,11 @@ target_include_directories(pugixml PUBLIC vendor/pugixml/)
# xtensor header-only library
#===============================================================================
# CMake 3.13+ will complain about policy CMP0079 unless it is set explicitly
if (NOT (CMAKE_VERSION VERSION_LESS 3.13))
cmake_policy(SET CMP0079 NEW)
endif()
add_subdirectory(vendor/xtl)
add_subdirectory(vendor/xtensor)
target_link_libraries(xtensor INTERFACE xtl)

View file

@ -127,7 +127,9 @@ int openmc_finalize()
// Free all MPI types
#ifdef OPENMC_MPI
MPI_Type_free(&mpi::bank);
int init_called;
MPI_Initialized(&init_called);
if (init_called) MPI_Type_free(&mpi::bank);
#endif
return 0;

View file

@ -8,8 +8,8 @@ int n_procs {1};
bool master {true};
#ifdef OPENMC_MPI
MPI_Comm intracomm;
MPI_Datatype bank;
MPI_Comm intracomm {MPI_COMM_NULL};
MPI_Datatype bank {MPI_DATATYPE_NULL};
#endif
extern "C" bool openmc_master() { return mpi::master; }

View file

@ -1,6 +1,17 @@
import openmc
import pytest
from tests.regression_tests import config
@pytest.fixture(scope='module')
def mpi_intracomm():
if config['mpi']:
from mpi4py import MPI
return MPI.COMM_WORLD
else:
return None
@pytest.fixture(scope='module')
def uo2():

View file

@ -50,8 +50,8 @@ def pincell_model():
@pytest.fixture(scope='module')
def capi_init(pincell_model):
openmc.capi.init()
def capi_init(pincell_model, mpi_intracomm):
openmc.capi.init(intracomm=mpi_intracomm)
yield
openmc.capi.finalize()
@ -408,11 +408,11 @@ def test_mesh(capi_init):
assert msf.mesh == mesh
def test_restart(capi_init):
def test_restart(capi_init, mpi_intracomm):
# Finalize and re-init to make internal state consistent with XML.
openmc.capi.hard_reset()
openmc.capi.finalize()
openmc.capi.init()
openmc.capi.init(intracomm=mpi_intracomm)
openmc.capi.simulation_init()
# Run for 7 batches then write a statepoint.

View file

@ -3,7 +3,7 @@ import openmc.capi
import pytest
@pytest.fixture(autouse=True)
def complex_cell(run_in_tmpdir):
def complex_cell(run_in_tmpdir, mpi_intracomm):
openmc.reset_auto_ids()
@ -74,7 +74,7 @@ def complex_cell(run_in_tmpdir):
model.export_to_xml()
openmc.capi.finalize()
openmc.capi.init()
openmc.capi.init(intracomm=mpi_intracomm)
yield