diff --git a/NOISE b/NOISE index cab9f35..2d5cd6c 100644 --- a/NOISE +++ b/NOISE @@ -108,3 +108,19 @@ ABSTRACT Do not use to ensure reproducibility. /* vim: set ts=2 sw=2 tw=72 fo=watqc expandtab spell autoindent: */ + +1.8 Make doesn't rebuild objects + + When using local repo as src code, (e.g. developer mode on) a make + clean at the preBuild stage is required. + + Nix sets the same modification date (one second after the Epoch (1970-01-01 at 00:00:01 in UTC timezone) to all the files in the nix store (also those copied from repos). + Makefile checks the files modification date in order to call or not + the compilation instructions. + If any object/binary file exists out of Nix, at the time we build + within Nix, they will be copied with the current data and consequently + not updated during the Nix compilation process. + + See saiph devMode option and its implications at + bscpkgs/garlic/saiph/default.nix + diff --git a/garlic/exp/saiph/numcomm.nix b/garlic/exp/saiph/numcomm.nix index 07e108c..7da9d9c 100644 --- a/garlic/exp/saiph/numcomm.nix +++ b/garlic/exp/saiph/numcomm.nix @@ -12,6 +12,7 @@ with stdenv.lib; let # Set variable configuration for the experiment varConfig = { + devMode = [ true ]; numComm = [ 1 ]; }; @@ -23,11 +24,11 @@ let # Resources ntasksPerNode = "2"; - nodes = "2"; + nodes = "1"; # Stage configuration enableSbatch = true; - enableControl = false; + enableControl = true; enableExtrae = false; enablePerf = false; @@ -63,7 +64,8 @@ let ); control = {stage, conf, ...}: with conf; w.control { - program = stageProgram stage; + program = stageProgram stage; + loops = 100; }; srun = {stage, conf, ...}: with conf; w.srun { @@ -127,6 +129,7 @@ let argv = {stage, conf, ...}: with conf; w.argv { program = stageProgram stage; env = '' + export OMP_NUM_THREADS=24 export NANOS6_REPORT_PREFIX="#" export I_MPI_THREAD_SPLIT=1 export ASAN_SYMBOLIZER_PATH=${pkgs.bsc.clangOmpss2Unwrapped}/bin/llvm-symbolizer @@ -146,7 +149,7 @@ let }); in customPkgs.bsc.garlic.saiph.override { - inherit numComm mpi gitBranch; + inherit devMode numComm mpi gitBranch; }; stages = with common; [] diff --git a/garlic/saiph/default.nix b/garlic/saiph/default.nix index 3028042..c9f3cad 100644 --- a/garlic/saiph/default.nix +++ b/garlic/saiph/default.nix @@ -6,20 +6,23 @@ , cc , vtk , boost +, devMode ? false , gitBranch ? "master" , numComm ? null +, vectFlags ? null +#, breakpointHook }: stdenv.mkDerivation rec { name = "saiph"; - src = builtins.fetchGit { - url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; - ref = "${gitBranch}"; - }; + src = (if (devMode == true) then ~/repos/saiph + else + builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/DSLs/saiph.git"; + ref = "${gitBranch}"; + }); - #src = /tmp/saiph; - programPath = "/bin/ExHeat3D"; enableParallelBuilding = true; @@ -33,23 +36,26 @@ stdenv.mkDerivation rec { cc vtk boost +# breakpointHook ]; # Required for nanos6 hardeningDisable = [ "bindnow" ]; preBuild = '' - cd saiphv2/cpp/src - + cd saiphv2/cpp/src export VTK_VERSION=8.2 export VTK_HOME=${vtk} - ''; + '' + + (if (devMode == true) then "make clean" else "") + ; makeFlags = [ "-f" "Makefile.${cc.cc.CC}" "apps" "APP=ExHeat3D" ( if (numComm != null) then "NUM_COMM=${toString numComm}" else "" ) + ( if (vectFlags != null) then "VECT_FLAGS=${toString vectFlags}" else "" ) ]; installPhase = ''