forked from rarias/bscpkgs
		
	
		
			
				
	
	
		
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   stdenv
 | |
| , lib
 | |
| , stdexp
 | |
| , bsc
 | |
| , targetMachine
 | |
| , stages
 | |
| , garlicTools
 | |
| , numactl
 | |
| , callPackage
 | |
| }:
 | |
| 
 | |
| with lib;
 | |
| with garlicTools;
 | |
| 
 | |
| let
 | |
|   # Initial variable configuration
 | |
|   varConf = {
 | |
|     blocksize = range2 256 1024;
 | |
|     gitBranch = [ "garlic/tampi+send+oss+task" ];
 | |
|     attachToSocket = [ true false ];
 | |
|     interleaveMem = [ true false ];
 | |
|   };
 | |
| 
 | |
|   # Generate the complete configuration for each unit
 | |
|   genConf = c: targetMachine.config // rec {
 | |
|     hw = targetMachine.config.hw;
 | |
|     particles = 4 * 1024 * hw.cpusPerSocket;
 | |
|     timesteps = 10;
 | |
| 
 | |
|     inherit (c) attachToSocket interleaveMem gitBranch blocksize;
 | |
| 
 | |
|     expName = "nbody-numa";
 | |
|     unitName = expName +
 | |
|       "-${toString gitBranch}" +
 | |
|       "-bs.${toString blocksize}" +
 | |
|       "-tpn.${toString ntasksPerNode}" +
 | |
|       "-interleave.${if (interleaveMem) then "yes" else "no"}";
 | |
| 
 | |
|     loops = 10;
 | |
| 
 | |
|     qos = "debug";
 | |
|     cpusPerTask = if (attachToSocket)
 | |
|       then hw.cpusPerSocket
 | |
|       else hw.cpusPerNode;
 | |
|     ntasksPerNode = if (attachToSocket)
 | |
|       then hw.socketsPerNode
 | |
|       else 1;
 | |
|     nodes = 4;
 | |
|     time = "02:00:00";
 | |
|     jobName = unitName;
 | |
|   };
 | |
| 
 | |
|   common = callPackage ./common.nix {};
 | |
| 
 | |
|   inherit (common) getConfigs pipeline;
 | |
| 
 | |
|   configs = getConfigs {
 | |
|     inherit varConf genConf;
 | |
|   };
 | |
| 
 | |
| in
 | |
| 
 | |
|   stdexp.genExperiment { inherit configs pipeline; }
 |