你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-08 07:24:19 +08:00
Add MPI reframe tests
这个提交包含在:
@@ -173,12 +173,16 @@ class GprMaxRegressionTest(GprMaxBaseTest):
|
||||
|
||||
h5diff_header = f"{'=' * 10} h5diff output {'=' * 10}"
|
||||
|
||||
@run_before("run", always_last=True)
|
||||
def setup_regression_check(self):
|
||||
"""Build reference file path and add h5diff command to run after the test"""
|
||||
self.modules.append("cray-hdf5")
|
||||
@run_before("run")
|
||||
def setup_reference_file(self):
|
||||
"""Build reference file path"""
|
||||
self.reference_file = Path("regression_checks", self.unique_name).with_suffix(".h5")
|
||||
self.reference_file = os.path.abspath(self.reference_file)
|
||||
|
||||
@run_before("run", always_last=True)
|
||||
def setup_regression_check(self):
|
||||
"""Add h5diff command to run after the test"""
|
||||
self.modules.append("cray-hdf5")
|
||||
if os.path.exists(self.reference_file):
|
||||
self.postrun_cmds.append(f"echo {self.h5diff_header}")
|
||||
self.postrun_cmds.append(f"h5diff {self.output_file} {self.reference_file}")
|
||||
@@ -214,7 +218,3 @@ class GprMaxRegressionTest(GprMaxBaseTest):
|
||||
|
||||
class GprMaxAPIRegressionTest(GprMaxRegressionTest):
|
||||
executable = "time -p python"
|
||||
|
||||
|
||||
class GprMaxMpiTest(GprMaxBaseTest):
|
||||
pass
|
||||
|
@@ -1,6 +1,9 @@
|
||||
import os
|
||||
|
||||
import reframe as rfm
|
||||
from base_tests import GprMaxAPIRegressionTest, GprMaxRegressionTest
|
||||
from reframe.core.builtins import parameter, run_after
|
||||
from reframe.core.builtins import parameter, require_deps, run_after, run_before
|
||||
from reframe.utility import udeps
|
||||
|
||||
"""ReFrame tests for basic functionality
|
||||
|
||||
@@ -150,3 +153,47 @@ class SubgridTest(GprMaxAPIRegressionTest):
|
||||
subgrid_geometry_view,
|
||||
plot_ascan_output,
|
||||
]
|
||||
|
||||
|
||||
@rfm.simple_test
|
||||
class MPIBasicModelsTest(GprMaxRegressionTest):
|
||||
tags = {"test", "mpi", "regression"}
|
||||
|
||||
# List of available basic test models
|
||||
model = parameter(
|
||||
[
|
||||
"2D_ExHyHz",
|
||||
"2D_EyHxHz",
|
||||
"2D_EzHxHy",
|
||||
"cylinder_Ascan_2D",
|
||||
"hertzian_dipole_fs",
|
||||
"hertzian_dipole_hs",
|
||||
"hertzian_dipole_dispersive",
|
||||
"magnetic_dipole_fs",
|
||||
]
|
||||
)
|
||||
num_cpus_per_task = 16
|
||||
num_tasks = 4
|
||||
num_tasks_per_node = 4
|
||||
|
||||
@run_after("init")
|
||||
def inject_dependencies(self):
|
||||
"""Test depends on the Python virtual environment building correctly"""
|
||||
variant = BasicModelsTest.get_variant_nums(model=lambda m: m == self.model)
|
||||
self.depends_on(BasicModelsTest.variant_name(variant[0]), udeps.by_env)
|
||||
super().inject_dependencies()
|
||||
|
||||
@run_after("init")
|
||||
def set_filenames(self):
|
||||
self.input_file = f"{self.model}.in"
|
||||
self.output_file = f"{self.model}.h5"
|
||||
self.executable_opts = ["-mpi 2 2 1", self.input_file, "-o", self.output_file]
|
||||
self.postrun_cmds = [f"python -m toolboxes.Plotting.plot_Ascan -save {self.output_file}"]
|
||||
self.keep_files = [self.input_file, self.output_file, f"{self.model}.pdf"]
|
||||
|
||||
@run_before("run")
|
||||
def setup_reference_file(self):
|
||||
"""Add prerun command to load the built Python environment"""
|
||||
variant = BasicModelsTest.get_variant_nums(model=lambda m: m == self.model)
|
||||
target = self.getdep(BasicModelsTest.variant_name(variant[0]))
|
||||
self.reference_file = os.path.join(target.stagedir, str(self.output_file))
|
||||
|
在新工单中引用
屏蔽一个用户