From a2306eb9419eecf06fc8e2bed02136a56df78e33 Mon Sep 17 00:00:00 2001 From: Sandra Date: Fri, 19 Feb 2021 11:07:58 +0100 Subject: [PATCH] saiph: add some blocking experiments --- garlic/exp/saiph/blocking.nix | 68 +++++++++++++++++++++++++++++++ garlic/exp/saiph/blocking_Y.nix | 69 ++++++++++++++++++++++++++++++++ garlic/exp/saiph/blocking_YZ.nix | 69 ++++++++++++++++++++++++++++++++ garlic/exp/saiph/blocking_Z.nix | 69 ++++++++++++++++++++++++++++++++ garlic/exp/saiph/blocking_ZY.nix | 69 ++++++++++++++++++++++++++++++++ 5 files changed, 344 insertions(+) create mode 100644 garlic/exp/saiph/blocking.nix create mode 100644 garlic/exp/saiph/blocking_Y.nix create mode 100644 garlic/exp/saiph/blocking_YZ.nix create mode 100644 garlic/exp/saiph/blocking_Z.nix create mode 100644 garlic/exp/saiph/blocking_ZY.nix diff --git a/garlic/exp/saiph/blocking.nix b/garlic/exp/saiph/blocking.nix new file mode 100644 index 0000000..d8fc11f --- /dev/null +++ b/garlic/exp/saiph/blocking.nix @@ -0,0 +1,68 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 2 4 8 16 32 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blocking"; + unitName = "${expName}.1-nby-nbz-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nby = c.nb; + nbz = c.nb; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "00:50:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_Y.nix b/garlic/exp/saiph/blocking_Y.nix new file mode 100644 index 0000000..1f5b1ed --- /dev/null +++ b/garlic/exp/saiph/blocking_Y.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 1 2 4 8 16 32 64 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blockingY"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = c.nb; + nbz = 1; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "01:00:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_YZ.nix b/garlic/exp/saiph/blocking_YZ.nix new file mode 100644 index 0000000..a283727 --- /dev/null +++ b/garlic/exp/saiph/blocking_YZ.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 4 8 16 32 64 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blockingY"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = 8; + nbz = c.nb; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "01:00:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_Z.nix b/garlic/exp/saiph/blocking_Z.nix new file mode 100644 index 0000000..d3ee3c5 --- /dev/null +++ b/garlic/exp/saiph/blocking_Z.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 1 2 4 8 16 32 64 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blockingZ"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = 1; + nbz = c.nb; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "01:00:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; } diff --git a/garlic/exp/saiph/blocking_ZY.nix b/garlic/exp/saiph/blocking_ZY.nix new file mode 100644 index 0000000..12749f2 --- /dev/null +++ b/garlic/exp/saiph/blocking_ZY.nix @@ -0,0 +1,69 @@ +{ + stdenv +, stdexp +, bsc +, targetMachine +, stages +}: + +with stdenv.lib; + +let + # Initial variable configuration + varConf = with bsc; { + nb = [ 4 8 16 32 64 128 ]; + }; + + # Generate the complete configuration for each unit + genConf = with bsc; c: targetMachine.config // rec { + expName = "saiph.blockingZY"; + unitName = "${expName}.nbx-nby-nbz-${toString nbx}-${toString nby}-${toString nbz}"; + inherit (targetMachine.config) hw; + + # saiph options + nbx = 1; + nby = c.nb; + nbz = 8; + mpi = impi; + gitBranch = "garlic/tampi+isend+oss+task+simd"; + + # Repeat the execution of each unit 50 times + loops = 30; + + # Resources + cachelineBytes = hw.cachelineBytes; + qos = "debug"; + time = "01:00:00"; + nodes = 1; + ntasksPerNode = hw.socketsPerNode; + cpusPerTask = hw.cpusPerSocket; + jobName = "${unitName}-${gitBranch}"; + }; + + # Compute the array of configurations + configs = stdexp.buildConfigs { + inherit varConf genConf; + }; + + exec = {nextStage, conf, ...}: with conf; stages.exec { + inherit nextStage; + env = '' + export NANOS6_REPORT_PREFIX="#" + export I_MPI_THREAD_SPLIT=1 + export ASAN_SYMBOLIZER_PATH=${bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer + ''; + }; + + program = {nextStage, conf, ...}: with conf; + let + customPkgs = stdexp.replaceMpi conf.mpi; + in + customPkgs.apps.saiph.override { + inherit nbx nby nbz mpi gitBranch cachelineBytes; + }; + + pipeline = stdexp.stdPipeline ++ [ exec program ]; + +in + + stdexp.genExperiment { inherit configs pipeline; }