Testing sbatch job
This commit is contained in:
parent
c7c8d858f4
commit
85c15e9f3f
@ -14,16 +14,18 @@ let
|
|||||||
|
|
||||||
mpptest = callPackage ./mpptest { };
|
mpptest = callPackage ./mpptest { };
|
||||||
|
|
||||||
ppong = callPackage ./ppong { };
|
ppong = callPackage ./ppong {
|
||||||
|
mpi = bsc.mpi;
|
||||||
|
};
|
||||||
|
|
||||||
nbody = callPackage ./nbody {
|
nbody = callPackage ./nbody {
|
||||||
cc = pkgs.gcc7;
|
cc = pkgs.gcc7;
|
||||||
gitBranch = "garlic/seq";
|
gitBranch = "garlic/seq";
|
||||||
};
|
};
|
||||||
|
|
||||||
runner = callPackage ./runner.nix {
|
srunner = callPackage ./srunner.nix { };
|
||||||
app = null;
|
|
||||||
};
|
ppong-job = srunner { app=ppong; };
|
||||||
|
|
||||||
exp = {
|
exp = {
|
||||||
mpiImpl = callPackage ./experiments {
|
mpiImpl = callPackage ./experiments {
|
||||||
|
@ -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
68
bsc/garlic/srunner.nix
Normal 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
|
||||||
|
'';
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user