Testing sbatch job

This commit is contained in:
Rodrigo Arias 2020-07-31 18:47:33 +02:00
parent c7c8d858f4
commit 85c15e9f3f
3 changed files with 74 additions and 31 deletions

View File

@ -14,16 +14,18 @@ let
mpptest = callPackage ./mpptest { };
ppong = callPackage ./ppong { };
ppong = callPackage ./ppong {
mpi = bsc.mpi;
};
nbody = callPackage ./nbody {
cc = pkgs.gcc7;
gitBranch = "garlic/seq";
};
runner = callPackage ./runner.nix {
app = null;
};
srunner = callPackage ./srunner.nix { };
ppong-job = srunner { app=ppong; };
exp = {
mpiImpl = callPackage ./experiments {

View File

@ -1,27 +0,0 @@
{
stdenv
, app
, argv ? ""
, binary ? "/bin/run"
}:
stdenv.mkDerivation {
name = "${app.name}-runner";
preferLocalBuild = true;
src = ./.;
buildInputs = [ app ];
installPhase = ''
mkdir -p $out/bin
cat > $out/bin/run <<EOF
#!/bin/bash
exec ${app}${binary} ${argv}
done
EOF
chmod +x $out/bin/run
'';
}

68
bsc/garlic/srunner.nix Normal file
View File

@ -0,0 +1,68 @@
{
stdenv
}:
{
app
, argv ? ""
, binary ? "/bin/run"
, ntasks ? null
, exclusive ? true # By default we run in exclusive mode
, workdir ? "."
, qos ? null
, time ? null
, output ? "job_%j.out"
, error ? "job_%j.err"
, contiguous ? null
, extra ? null
}:
with stdenv.lib;
let
sbatchOpt = name: value: optionalString (value!=null)
"#SBATCH --${name}=${value}\n";
sbatchEnable = name: value: optionalString (value!=null)
"#SBATCH --${name}\n";
in
stdenv.mkDerivation rec {
name = "${app.name}-job";
preferLocalBuild = true;
src = ./.;
buildInputs = [ app ];
#SBATCH --tasks-per-node=48
#SBATCH --ntasks-per-socket=24
#SBATCH --cpus-per-task=1
dontBuild = true;
installPhase = ''
cat > $out <<EOF
#!/bin/bash
#SBATCH --job-name="${name}"
''
+ sbatchOpt "ntasks" ntasks
+ sbatchOpt "ntasks" ntasks
+ sbatchOpt "workdir" workdir
+ sbatchOpt "output" output
+ sbatchOpt "error" error
+ sbatchEnable "exclusive" exclusive
+ sbatchOpt "time" time
+ sbatchOpt "qos" qos
+ optionalString (extra!=null) extra
+''
numactl -s
#!/bin/bash
exec ${app}${binary} ${argv}
done
EOF
chmod +x $out
'';
}