# Regular granularity test for FWI { stdenv , stdexp , bsc , targetMachine , stages , garlicTools , callPackage }: with stdenv.lib; with garlicTools; let inherit (targetMachine) fs; # Initial variable configuration varConf = { gitBranch = [ # "garlic/tampi+send+oss+task" "garlic/tampi+isend+oss+task" # "garlic/mpi+send+omp+task" # "garlic/mpi+send+oss+task" # "garlic/mpi+send+seq" # "garlic/oss+task" # "garlic/omp+task" # "garlic/seq" ]; blocksize = range2 1 256; n = [ {nx=100; nz=100; ny=8000; ntpn=2; nodes=1;} ]; }; machineConfig = targetMachine.config; # Generate the complete configuration for each unit genConf = c: targetMachine.config // rec { expName = "fwi-granularity"; unitName = "${expName}" + "-bs${toString blocksize}" + "-${toString gitBranch}"; inherit (machineConfig) hw; inherit (c) gitBranch blocksize; inherit (c.n) nx ny nz ntpn nodes; 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 cpusPerTask = hw.cpusPerSocket; ntasksPerNode = ntpn; 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; }; # Compute the array of configurations configs = stdexp.buildConfigs { inherit varConf genConf; }; common = callPackage ./common.nix {}; inherit (common) fixBlocksize pipeline; in stdexp.genExperiment { inherit configs pipeline; }