diff --git a/bsc/garlic/default.nix b/bsc/garlic/default.nix index aa5ff95..97cba0b 100644 --- a/bsc/garlic/default.nix +++ b/bsc/garlic/default.nix @@ -16,6 +16,11 @@ let ppong = callPackage ./ppong { }; + nbody = callPackage ./nbody { + cc = pkgs.gcc7; + gitBranch = "garlic/seq"; + }; + exp = { mpiImpl = callPackage ./experiments { apps = genApps [ ppong ] ( @@ -24,6 +29,27 @@ let } ); }; + + nbody = callPackage ./experiments { + apps = genApps [ nbody ] ( + genConfigs { + cc = [ pkgs.gcc7 pkgs.gcc9 ]; + gitBranch = [ "garlic/seq" ]; + } + ); + }; + + # Test if there is any difference between intel -march and -xCORE + # with target avx2. + march = callPackage ./experiments { + apps = genApps [ nbody ] (( genConfigs { + cc = [ bsc.icc ]; + cflags = [ "-march=core-avx2" "-xCORE-AVX2" ]; + }) ++ ( genConfigs { + cc = [ bsc.clang-ompss2 ]; + cflags = [ "-march=core-avx2" ]; + })); + }; }; }; diff --git a/bsc/garlic/nbody/default.nix b/bsc/garlic/nbody/default.nix new file mode 100644 index 0000000..aa0a39b --- /dev/null +++ b/bsc/garlic/nbody/default.nix @@ -0,0 +1,44 @@ +{ + stdenv +, cc +, cflags ? null +, gitBranch +, blocksize ? "2048" +, particles ? "16384" +, timesteps ? "10" +}: + +stdenv.mkDerivation { + name = "nbody"; + + src = builtins.fetchGit { + url = "ssh://git@bscpm02.bsc.es/rarias/nbody.git"; + ref = gitBranch; + }; + + buildInputs = [ + cc + ]; + + preBuild = (if cflags != null then '' + makeFlagsArray+=(CFLAGS=${cflags}) + '' else ""); + + makeFlags = [ + "CC=${cc.cc.CC}" + "BS=${blocksize}" + ]; + + installPhase = '' + mkdir -p $out/bin + cp nbody $out/bin/ + + cat > $out/bin/run <