diff --git a/tests/apps/nektarpp/src/TGV128_conditions.xml b/tests/apps/nektarpp/src/TGV128_conditions.xml new file mode 100644 index 0000000..22a3477 --- /dev/null +++ b/tests/apps/nektarpp/src/TGV128_conditions.xml @@ -0,0 +1,93 @@ + + + + + + + + + + TGV128MEnergy + 10 + + + TGV128Energy + 10 + + + + + + + + + + + + + + + + + +

TimeStep = 0.005

+

FinalTime = 20.0

+

NumSteps = FinalTime/TimeStep

+

IO_CheckSteps = 200

+

IO_InfoSteps = 200

+

IO_CFLSteps = 50

+

Re = 1600

+

Kinvis = 1/Re

+

V0 = 1

+

L = 1

+

LZ = 2*PI

+

HomModesZ = 128

+

SVVCutoffRatio = 0.7

+

SVVDiffCoeff = 0.1

+
+ + u + v + w + p + + + C[1] + C[2] + C[3] + C[4] + + + +

+

+

+

+ + +

+

+

+

+ + +

+

+

+

+ + +

+

+

+

+ + + + + + + + + + diff --git a/tests/apps/nektarpp/src/TGV128_mesh.xml b/tests/apps/nektarpp/src/TGV128_mesh.xml new file mode 100644 index 0000000..71b3b43 --- /dev/null +++ b/tests/apps/nektarpp/src/TGV128_mesh.xml @@ -0,0 +1,21 @@ + + + + + + + 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 + + + Q[0-255] + E[0,49,82,115,148,181,214,247,280,313,346,379,412,445,478,511] + E[512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542] + E[47,81,114,147,180,213,246,279,312,345,378,411,444,477,510,543] + E[3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48] + + C[0] + + diff --git a/tests/apps/nektarpp/test_module_nektarpp.py b/tests/apps/nektarpp/test_module_nektarpp.py index 976104f..9eed3ac 100644 --- a/tests/apps/nektarpp/test_module_nektarpp.py +++ b/tests/apps/nektarpp/test_module_nektarpp.py @@ -11,44 +11,28 @@ import reframe.utility.sanity as sn -@rfm.simple_test -class TestModuleNektarpluslus(rfm.RunOnlyRegressionTest): - """Nektarplusplus Test""" +class TestModuleNektarplusplusBase(rfm.RunOnlyRegressionTest): + """Nektarplusplus Test Base""" - descr = "Test Nektarplusplus" + descr = "Test Nektarplusplus Base" valid_systems = ["archer2:compute"] valid_prog_environs = ["PrgEnv-cray"] tags = {"performance", "applications"} - keep_files = ["rfm_job.out"] - - reference = { - "archer2:compute": { - "Computationtime": (953.0, -0.1, 0.1, "seconds"), - }, - } - - num_nodes = 1 - num_tasks_per_node = 1 - num_cpus_per_task = 1 - num_tasks = num_nodes * num_tasks_per_node * num_cpus_per_task - - time_limit = "2h" - modules = ["cpe/22.12", "nektar/5.5.0"] env_vars = {"CRAY_ADD_RPATH": "yes"} + keep_files = ["rfm_job.out"] + @run_before("run") def prepare_run(self): """Setup test execution""" self.executable = "IncNavierStokesSolver" - self.executable_opts = ["TGV64_mesh.xml TGV64_conditions.xml"] - @sanity_function def assert_finished(self): """Sanity check that simulation finished successfully""" @@ -67,3 +51,57 @@ def extract_perf(self): "Comptime", float, ) + + +@rfm.simple_test +class TestModuleNektarplusplusSerial(TestModuleNektarplusplusBase): + """Module Nektarplusplus Test Serial""" + + descr = "Test Module Nektarplusplus Serial" + + num_nodes = 1 + num_tasks_per_node = 1 + num_cpus_per_task = 1 + num_tasks = num_nodes * num_tasks_per_node + + time_limit = "20m" + + executable_opts = ["TGV64_mesh.xml TGV64_conditions.xml"] + + reference = {"archer2:compute": {"Computationtime": (953, -0.1, 0.1, "seconds")}} + + +@rfm.simple_test +class TestModuleNektarplusplusParallel(TestModuleNektarplusplusBase): + """Module Nektarplusplus Test Parallel""" + + descr = "Test Module Nektarplusplus Parallel" + + num_nodes = 1 + num_tasks_per_node = 32 + num_cpus_per_task = 4 + num_tasks = num_nodes * num_tasks_per_node + + time_limit = "1h" + + executable_opts = ["TGV128_mesh.xml TGV128_conditions.xml"] + + reference = {"archer2:compute": {"Computationtime": (1570, -0.1, 0.1, "seconds")}} + + +@rfm.simple_test +class TestModuleNektarplusplusMultiNode(TestModuleNektarplusplusBase): + """Module Nektarplusplus Test Multi Node""" + + descr = "Test Module Nektarplusplus Multi Node" + + num_nodes = 1 + num_tasks_per_node = 32 + num_cpus_per_task = 4 + num_tasks = num_nodes * num_tasks_per_node + + time_limit = "1h" + + executable_opts = ["TGV128_mesh.xml TGV128_conditions.xml"] + + reference = {"archer2:compute": {"Computationtime": (1570, -0.1, 0.1, "seconds")}} diff --git a/tests/apps/nektarpp/test_nektarpp.py b/tests/apps/nektarpp/test_nektarpp.py index 20306bd..8bc4383 100644 --- a/tests/apps/nektarpp/test_nektarpp.py +++ b/tests/apps/nektarpp/test_nektarpp.py @@ -12,17 +12,19 @@ import reframe.utility.sanity as sn +NEKTAR_VERSION = "5.5.0" +NEKTAR_LABEL = "nektar" +NEKTAR_ARCHIVE = f"{NEKTAR_LABEL}-v{NEKTAR_VERSION}.tar.gz" +NEKTAR_NAME = f"{NEKTAR_LABEL}-{NEKTAR_VERSION}" + + class FetchNektarplusplus(rfm.RunOnlyRegressionTest): """Test access to nektarplusplus source code""" descr = "Fetch Nektarplusplus" - nektar_version = "5.5.0" - nektar_label = "nektar" - nektar_archive = f"{nektar_label}-v{nektar_version}.tar.gz" - nektar_name = f"{nektar_label}-{nektar_version}" - version = variable(str, value=nektar_version) + version = variable(str, value=NEKTAR_VERSION) executable = "wget" - executable_opts = [f"https://gitlab.nektar.info/nektar/nektar/-/archive/v{nektar_version}/{nektar_archive}"] + executable_opts = [f"https://gitlab.nektar.info/nektar/nektar/-/archive/v{NEKTAR_VERSION}/{NEKTAR_ARCHIVE}"] local = True valid_systems = ["archer2:login"] valid_prog_environs = ["PrgEnv-cray"] @@ -54,20 +56,17 @@ class CompileNektarplusplus(rfm.CompileOnlyRegressionTest): @run_before("compile") def prepare_build(self): """Prepare environment for build""" - nektar_version = "5.5.0" - nektar_label = "nektar" - nektar_name = f"{nektar_label}-v{nektar_version}" - nektar_archive = f"{nektar_label}-v{nektar_version}.tar.gz" - tarball = f"{nektar_archive}" - self.build_prefix = f"{nektar_name}" + tarball = f"{NEKTAR_ARCHIVE}" + self.build_prefix = f"{NEKTAR_NAME}" fullpath = os.path.join(self.fetch_nektarpp.stagedir, tarball) self.prebuild_cmds = [ f"cp {fullpath} {self.stagedir}", f"tar xzf {tarball}", + f"mv {NEKTAR_LABEL}-v{NEKTAR_VERSION} {self.build_prefix}", f"cd {self.build_prefix}", - f"source ../cmake_nektarpp.sh {nektar_label}", + f"source ../cmake_nektarpp.sh {NEKTAR_LABEL}", ] self.build_system.max_concurrency = 8 self.build_system.options = ["install"] @@ -75,11 +74,10 @@ def prepare_build(self): @sanity_function def validate_compile(self): """Validate compilation by checking existance of binary""" - return sn.path_isfile("nektar-v5.5.0/build/nektar/bin/IncNavierStokesSolver") + return sn.path_isfile(f"{NEKTAR_NAME}/build/nektar/bin/IncNavierStokesSolver") -@rfm.simple_test -class TestNektarpluslus(rfm.RunOnlyRegressionTest): +class TestNektarplusplusBase(rfm.RunOnlyRegressionTest): """Nektarplusplus Test""" descr = "Test Nektarplusplus" @@ -95,19 +93,8 @@ class TestNektarpluslus(rfm.RunOnlyRegressionTest): env_vars = {"CRAY_ADD_RPATH": "yes"} - num_nodes = 1 - num_tasks_per_node = 1 - num_cpus_per_task = 1 - num_tasks = num_nodes * num_tasks_per_node * num_cpus_per_task - - time_limit = "20m" - keep_files = ["rfm_job.out"] - executable_opts = ["TGV64_mesh.xml TGV64_conditions.xml"] - - reference = {"archer2:compute": {"Computationtime": (953, -0.1, 0.1, "seconds")}} - @run_before("run") def prepare_run(self): """set up job execution""" @@ -138,3 +125,57 @@ def extract_perf(self): "Comptime", float, ) + + +@rfm.simple_test +class TestNektarpluslusSerial(TestNektarplusplusBase): + """Nektarplusplus Test Serial""" + + descr = "Test Nektarplusplus Serial" + + num_nodes = 1 + num_tasks_per_node = 1 + num_cpus_per_task = 1 + num_tasks = num_nodes * num_tasks_per_node + + time_limit = "20m" + + executable_opts = ["TGV64_mesh.xml TGV64_conditions.xml"] + + reference = {"archer2:compute": {"Computationtime": (953, -0.1, 0.1, "seconds")}} + + +@rfm.simple_test +class TestNektarpluslusParallel(TestNektarplusplusBase): + """Nektarplusplus Test Parallel""" + + descr = "Test Nektarplusplus Parallel" + + num_nodes = 1 + num_tasks_per_node = 32 + num_cpus_per_task = 4 + num_tasks = num_nodes * num_tasks_per_node + + time_limit = "1h" + + executable_opts = ["TGV128_mesh.xml TGV128_conditions.xml"] + + reference = {"archer2:compute": {"Computationtime": (1570, -0.1, 0.1, "seconds")}} + + +@rfm.simple_test +class TestNektarpluslusMultiNode(TestNektarplusplusBase): + """Nektarplusplus Test Multi Node""" + + descr = "Test Nektarplusplus Multi Node" + + num_nodes = 4 + num_tasks_per_node = 8 + num_cpus_per_task = 16 + num_tasks = num_nodes * num_tasks_per_node + + time_limit = "1h" + + executable_opts = ["TGV128_mesh.xml TGV128_conditions.xml"] + + reference = {"archer2:compute": {"Computationtime": (1570, -0.1, 0.1, "seconds")}}