forked from rarias/bscpkgs
		
	
		
			
				
	
	
		
			69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{
 | 
						|
  stdenv
 | 
						|
, stdexp
 | 
						|
, bsc
 | 
						|
, targetMachine
 | 
						|
, stages
 | 
						|
 | 
						|
# Should we test the network (true) or the shared memory (false)?
 | 
						|
, interNode ? true
 | 
						|
}:
 | 
						|
 | 
						|
with builtins;
 | 
						|
with stdenv.lib;
 | 
						|
 | 
						|
let
 | 
						|
 | 
						|
  machineConfig = targetMachine.config;
 | 
						|
 | 
						|
  # Initial variable configuration
 | 
						|
  varConf = with bsc; {
 | 
						|
    threshold = [ 8000 16000 32000 64000 ];
 | 
						|
    #threshold = [ 4096 8192 10240 ];
 | 
						|
  };
 | 
						|
 | 
						|
  # Generate the complete configuration for each unit
 | 
						|
  genConf = with bsc; c: targetMachine.config // rec {
 | 
						|
    inherit (machineConfig) hw;
 | 
						|
    nodes = if interNode then 2 else 1;
 | 
						|
    ntasksPerNode = if interNode then 1 else 2;
 | 
						|
    mpi = impi;
 | 
						|
    cpusPerTask = 1;
 | 
						|
    time = "00:10:00";
 | 
						|
    qos = "debug";
 | 
						|
    loops = 10;
 | 
						|
    expName = "osu-impi-rndv";
 | 
						|
    unitName = expName + "-${toString threshold}";
 | 
						|
    jobName = expName;
 | 
						|
    inherit (c) threshold;
 | 
						|
  };
 | 
						|
 | 
						|
  # Compute the array of configurations
 | 
						|
  configs = stdexp.buildConfigs {
 | 
						|
    inherit varConf genConf;
 | 
						|
  };
 | 
						|
 | 
						|
  exec = {nextStage, conf, ...}: stages.exec {
 | 
						|
    inherit nextStage;
 | 
						|
    env = ''
 | 
						|
      export PSM2_MQ_RNDV_SHM_THRESH=${toString conf.threshold}
 | 
						|
      export PSM2_MQ_RNDV_HFI_THRESH=${toString conf.threshold}
 | 
						|
      export PSM2_MQ_EAGER_SDMA_SZ=${toString conf.threshold}
 | 
						|
      #export PSM2_MTU=${toString conf.threshold}
 | 
						|
      export PSM2_TRACEMASK=0x101
 | 
						|
    '';
 | 
						|
 | 
						|
    program = "${nextStage}/bin/osu_bw";
 | 
						|
  };
 | 
						|
 | 
						|
  program = {nextStage, conf, ...}: bsc.osumb.override {
 | 
						|
    # Use the specified MPI implementation
 | 
						|
    inherit (conf) mpi;
 | 
						|
  };
 | 
						|
 | 
						|
  pipeline = stdexp.stdPipeline ++ [ exec program ];
 | 
						|
 | 
						|
in
 | 
						|
 | 
						|
  stdexp.genExperiment { inherit configs pipeline; }
 |