This repository has been archived on 2025-10-07. You can view files and clone it, but cannot push or open issues or pull requests.
Rodrigo Arias Mallo 5e50ef19fe Update experiments with cpusPerTask
Try to avoid manually setting the hardware specs and rather use
the hw attrset.
2020-11-17 11:17:57 +01:00

85 lines
2.0 KiB
Nix

{
stdenv
, stdexp
, bsc
, targetMachine
, stages
, genInput
}:
with stdenv.lib;
let
# Initial variable configuration
varConf = with bsc; {
# FIXME: Temporally reduce the input size until we can load a precomputed
# input in each run, otherwise the execution time is very large.
#n = [ { x = 104; y = 104; z = 104; } ];
n = [ { x = 256; y = 288; z = 288; } ];
nblocks = [ 12 24 48 96 192 384 ];
};
# Generate the complete configuration for each unit
genConf = with bsc; c: targetMachine.config // rec {
expName = "hpcg.oss";
unitName = "${expName}.nb${toString nblocks}";
inherit (targetMachine.config) hw;
# hpcg options
n = c.n;
nblocks = c.nblocks;
cc = bsc.icc;
mcxx = bsc.mcxx;
nanos6 = bsc.nanos6;
mpi = null; # TODO: Remove this for oss
gitBranch = "garlic/oss";
# Repeat the execution of each unit 30 times
loops = 30;
# Resources
qos = "debug";
ntasksPerNode = 1;
nodes = 1;
time = "02:00:00";
# task in one socket
cpusPerTask = hw.cpusPerSocket;
jobName = "hpcg-${toString n.x}-${toString n.y}-${toString n.z}-${gitBranch}";
};
# Compute the array of configurations
configs = stdexp.buildConfigs {
inherit varConf genConf;
};
input = genInput configs;
exec = {nextStage, conf, ...}: with conf; stages.exec {
inherit nextStage;
env = "NANOS6_DEPENDENCIES=discrete";
argv = [
"--nx=${toString n.x}"
"--ny=${toString n.y}"
"--nz=${toString n.z}"
"--nblocks=${toString nblocks}"
# The input symlink is generated by the input stage, which is generated by
# the genInput function.
"--load=input"
];
};
program = {nextStage, conf, ...}: with conf;
let
customPkgs = stdexp.replaceMpi conf.mpi;
in
customPkgs.apps.hpcg.override {
inherit cc nanos6 mcxx gitBranch;
};
pipeline = stdexp.stdPipeline ++ [ input exec program ];
in
#{ inherit configs pipeline; }
stdexp.genExperiment { inherit configs pipeline; }