diff --git a/garlic/exp/default.nix b/garlic/exp/default.nix deleted file mode 100644 index 79e775b..0000000 --- a/garlic/exp/default.nix +++ /dev/null @@ -1,64 +0,0 @@ -{ - pkgs -, callPackage -, callPackages -}: - -let - - garlic = { - - # Load some helper functions to generate app variants - inherit (import ./gen.nix) genApps genApp genConfigs; - - mpptest = callPackage ./mpptest { }; - - ppong = callPackage ./ppong { - mpi = pkgs.mpi; - }; - - nbody = callPackage ./nbody { - cc = pkgs.icc; - mpi = pkgs.impi; - tampi = pkgs.tampi; - gitBranch = "garlic/seq"; - }; - - runWrappers = { - sbatch = callPackage ./stages/sbatch.nix { }; - srun = callPackage ./stages/srun.nix { }; - launch = callPackage ./stages/launcher.nix { }; - control = callPackage ./stages/control.nix { }; - nixsetup= callPackage ./stages/nix-setup.nix { }; - argv = callPackage ./stages/argv.nix { }; - statspy = callPackage ./stages/statspy.nix { }; - extrae = callPackage ./stages/extrae.nix { }; - stagen = callPackage ./stages/stagen.nix { }; - }; - - # Perf is tied to a linux kernel specific version - linuxPackages = pkgs.linuxPackages_4_4; - perfWrapper = callPackage ./perf.nix { - perf = pkgs.linuxPackages.perf; - }; - - exp = { - noise = callPackage ./exp/noise.nix { }; - nbody = { - bs = callPackage ./exp/nbody/bs.nix { - pkgs = pkgs // garlic; - }; - mpi = callPackage ./exp/nbody/mpi.nix { }; - }; - osu = rec { - latency-internode = callPackage ./exp/osu/latency.nix { }; - latency-intranode = callPackage ./exp/osu/latency.nix { - interNode = false; - }; - latency = latency-internode; - }; - }; - }; - -in - garlic diff --git a/garlic/exp/noise.nix b/garlic/exp/noise.nix deleted file mode 100644 index b3e9444..0000000 --- a/garlic/exp/noise.nix +++ /dev/null @@ -1,132 +0,0 @@ -{ - bsc -, stdenv -, nbody -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - blocksize = [ 1024 ]; - }; - - # Common configuration - common = { - # Compile time nbody config - gitBranch = "garlic/mpi+send"; - mpi = bsc.impi; - - # nbody runtime options - particles = 1024*128; - timesteps = 20; - loops = 1000; - - # Resources - ntasksPerNode = "48"; - nodes = "1"; - - # Stage configuration - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-bs"; - inherit nixPrefix nodes ntasksPerNode; - }; - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - inherit loops; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,rank"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - nixsetup = {stage, conf, ...}: with conf; w.nixsetup { - program = stageProgram stage; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - argv = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - set -e - export I_MPI_THREAD_SPLIT=1 - ''; - argv = ''( -t ${toString conf.timesteps} - -p ${toString conf.particles} )''; - }; - - nbodyFn = {stage, conf, ...}: with conf; nbody.override { - inherit cc blocksize mpi gitBranch; - }; - - stages = with common; [] - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ nixsetup control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun nixsetup ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Execute the nbody app with the argv and env vars - ++ [ argv nbodyFn ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - -in - # We simply run each program one after another - w.launch jobs diff --git a/garlic/exp/test/extrae.xml b/garlic/exp/test/extrae.xml deleted file mode 100644 index b9af29b..0000000 --- a/garlic/exp/test/extrae.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - - - - - 1-3 - - 1-5 - - 1-3 - - 1-3 - - 1-3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PAPI_TOT_INS,PAPI_TOT_CYC - - - - - - - - - - - - - - - - - TRACE - - 5 - - /scratch - - /gpfs/scratch/bsc41/bsc41273 - - - - - - 5000000 - - - - - - - - /gpfs/scratch/bsc41/bsc41273/control - - - - - - - 10M - - - - - - - - - - - 500u - - - - - - - - - - - - - - - - - - - - diff --git a/garlic/exp/test/rw.nix b/garlic/exp/test/rw.nix deleted file mode 100644 index b4aa73a..0000000 --- a/garlic/exp/test/rw.nix +++ /dev/null @@ -1,180 +0,0 @@ -{ - stdenv -, nixpkgs -, pkgs -, genApp -, genConfigs -, runWrappers -}: - -with stdenv.lib; - -let - bsc = pkgs.bsc; - - # Set variable configuration for the experiment - varConfig = { - cc = [ bsc.icc ]; - mpi = [ bsc.impi ]; - blocksize = [ 1024 ]; - }; - - # Common configuration - common = { - - # nbody runtime options - particles = 1024*4; - timesteps = 10; - - # Resources - ntasksPerNode = "2"; - nodes = "2"; - - # Stage configuration - enableRunexp = true; - enableSbatch = true; - enableControl = true; - enableExtrae = false; - enablePerf = false; - enableCtf = false; - - # MN4 path - nixPrefix = "/gpfs/projects/bsc15/nix"; - }; - - # Compute the cartesian product of all configurations - configs = map (conf: conf // common) (genConfigs varConfig); - - stageProgram = stage: - if stage ? programPath - then "${stage}${stage.programPath}" else "${stage}"; - - w = runWrappers; - - sbatch = {stage, conf, ...}: with conf; w.sbatch ( - # Allow a user to define a custom reservation for the job in MareNostrum4, - # by setting the garlic.sbatch.reservation attribute in the - # ~/.config/nixpkgs/config.nix file. If the attribute is not set, no - # reservation is used. The user reservation may be overwritten by the - # experiment, if the reservation is set like with nodes or ntasksPerNode. - optionalAttrs (pkgs.config ? garlic.sbatch.reservation) { - inherit (pkgs.config.garlic.sbatch) reservation; - } // { - program = stageProgram stage; - exclusive = true; - time = "02:00:00"; - qos = "debug"; - jobName = "nbody-tampi"; - inherit nixPrefix nodes ntasksPerNode; - } - ); - - control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; - }; - - srun = {stage, conf, ...}: with conf; w.srun { - program = stageProgram stage; - srunOptions = "--cpu-bind=verbose,socket"; - inherit nixPrefix; - }; - - statspy = {stage, conf, ...}: with conf; w.statspy { - program = stageProgram stage; - }; - - perf = {stage, conf, ...}: with conf; w.perf { - program = stageProgram stage; - perfArgs = "sched record -a"; - }; - - isolate = {stage, conf, ...}: with conf; w.isolate { - program = stageProgram stage; - clusterName = "mn4"; - inherit nixPrefix; - }; - - extrae = {stage, conf, ...}: w.extrae { - program = stageProgram stage; - traceLib = "mpi"; # mpi -> libtracempi.so - configFile = ./extrae.xml; - }; - - ctf = {stage, conf, ...}: w.argv { - program = stageProgram stage; - env = '' - export NANOS6=ctf - export NANOS6_CTF2PRV=0 - ''; - }; - - argv = {stage, conf, ...}: w.argv { - program = "${pkgs.coreutils}/bin/true"; - env = '' - set -x - pwd - echo hi > hi - ''; - }; - - bscOverlay = import ../../../overlay.nix; - - genPkgs = newOverlay: nixpkgs { - overlays = [ - bscOverlay - newOverlay - ]; - }; - - launch = w.launch.override { - nixPrefix = common.nixPrefix; - }; - - stages = with common; [] - # Launch the experiment remotely - #++ optional enableRunexp runexp - - # Use sbatch to request resources first - ++ optional enableSbatch sbatch - - # Repeats the next stages N times - ++ optionals enableControl [ isolate control ] - - # Executes srun to launch the program in the requested nodes, and - # immediately after enters the nix environment again, as slurmstepd launches - # the next stages from outside the namespace. - ++ [ srun isolate ] - - # Intrumentation with extrae - ++ optional enableExtrae extrae - - # Optionally profile the next stages with perf - ++ optional enablePerf perf - - # Optionally profile nanos6 with the new ctf - ++ optional enableCtf ctf - - ++ [ argv ]; - - # List of actual programs to be executed - jobs = map (conf: w.stagen { inherit conf stages; }) configs; - - launcher = launch jobs; - - runexp = stage: w.runexp { - program = stageProgram stage; - nixPrefix = common.nixPrefix; - }; - - isolatedRun = stage: isolate { - inherit stage; - conf = common; - }; - - final = runexp (isolatedRun launcher); - - -in - # We simply run each program one after another - #launch jobs - final diff --git a/overlay.nix b/overlay.nix index 6280e65..a205878 100644 --- a/overlay.nix +++ b/overlay.nix @@ -243,25 +243,6 @@ let hybrid = callPackage ./garlic/exp/creams/ss+hybrid.nix { }; }; }; - - osu = rec { - latency-internode = callPackage ./garlic/exp/osu/latency.nix { }; - latency-intranode = callPackage ./garlic/exp/osu/latency.nix { - interNode = false; - }; - latency = latency-internode; - }; - - test = { - rw = callPackage ./garlic/exp/test/rw.nix { - pkgs = self // self.bsc.garlic; - nixpkgs = import ; - genApp = self.bsc.garlic.genApp; - genConfigs = self.bsc.garlic.genConfigs; - stages = self.bsc.garlic.stages; - }; -# mpi = callPackage ./bsc/garlic/exp/nbody/mpi.nix { }; - }; }; };