Rodrigo Arias Mallo
788dd13ebd
The getResources function is used to assign the proper cpu binding depending on the version. However, additional contraints are required to ensure that we have enough points in Y. By default the mpi+send+seq branch is disabled.
95 lines
2.0 KiB
Nix
95 lines
2.0 KiB
Nix
# Strong scaling test for FWI variants based on tasks. This
|
|
# experiment explores a range of block sizes deemed as efficient
|
|
# according to the granularity experiment.
|
|
|
|
{
|
|
stdenv
|
|
, stdexp
|
|
, bsc
|
|
, targetMachine
|
|
, stages
|
|
, garlicTools
|
|
, callPackage
|
|
, enableExtended ? false
|
|
}:
|
|
|
|
with stdenv.lib;
|
|
with garlicTools;
|
|
|
|
let
|
|
common = callPackage ./common.nix {};
|
|
inherit (common) getConfigs getResources pipeline;
|
|
|
|
inherit (targetMachine) fs;
|
|
|
|
# Initial variable configuration
|
|
varConf = {
|
|
gitBranch = [
|
|
"garlic/tampi+isend+oss+task"
|
|
] ++ optionals (enableExtended) [
|
|
"garlic/tampi+send+oss+task"
|
|
"garlic/mpi+send+omp+task"
|
|
"garlic/mpi+send+oss+task"
|
|
"garlic/mpi+send+omp+fork"
|
|
# FIXME: the mpi pure version has additional constraints with the
|
|
# number of planes in Y. By now is disabled.
|
|
#"garlic/mpi+send+seq"
|
|
];
|
|
|
|
blocksize = if (enableExtended)
|
|
then range2 1 16
|
|
else [ 2 ];
|
|
|
|
n = [ { nx=100; ny=8000; nz=100; } ];
|
|
|
|
nodes = range2 1 16;
|
|
};
|
|
|
|
machineConfig = targetMachine.config;
|
|
|
|
# Generate the complete configuration for each unit
|
|
genConf = c: machineConfig // rec {
|
|
expName = "fwi-ss";
|
|
unitName = "${expName}"
|
|
+ "-nodes${toString nodes}"
|
|
+ "-bs${toString blocksize}"
|
|
+ "-${toString gitBranch}";
|
|
|
|
inherit (machineConfig) hw;
|
|
inherit (c) gitBranch blocksize;
|
|
inherit (c.n) nx ny nz;
|
|
|
|
fwiInput = bsc.apps.fwi.input.override {
|
|
inherit (c.n) nx ny nz;
|
|
};
|
|
|
|
# Other FWI parameters
|
|
ioFreq = -1;
|
|
|
|
# Repeat the execution of each unit several times
|
|
loops = 10;
|
|
|
|
# Resources
|
|
inherit (getResources { inherit gitBranch hw; })
|
|
cpusPerTask ntasksPerNode;
|
|
|
|
nodes = c.nodes;
|
|
qos = "debug";
|
|
time = "02:00:00";
|
|
jobName = unitName;
|
|
|
|
enableCTF = false;
|
|
|
|
# Enable permissions to write in the local storage
|
|
extraMounts = [ fs.local.temp ];
|
|
tempDir = fs.local.temp;
|
|
};
|
|
|
|
configs = getConfigs {
|
|
inherit varConf genConf;
|
|
};
|
|
|
|
in
|
|
|
|
stdexp.genExperiment { inherit configs pipeline; }
|