uti: Add/Modify test programs
Change-Id: I27a39d6b11af5243f93d07c31c2ef80f6727dd53
This commit is contained in:
100
test/uti/mpi/mpi_progress_thread.pl
Executable file
100
test/uti/mpi/mpi_progress_thread.pl
Executable file
@@ -0,0 +1,100 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Usage ./mpi_progress.pl <#procs> <#nnodes> (mck|lin) (mpich|intel)
|
||||
|
||||
use File::Basename;
|
||||
use File::Copy "cp";
|
||||
|
||||
($nprocs, $nnodes, $os, $mpi) = @ARGV;
|
||||
$ppn = $nprocs / $nnodes;
|
||||
|
||||
@command = split /\s+/, basename($0);
|
||||
@fn = split /\./, $command[0];
|
||||
|
||||
if($nnodes <= 16) {
|
||||
$rg = 'MCK-FLAT-QUADRANT';
|
||||
} elsif($ARGV[1] <= 128) {
|
||||
$rg = 'debug-flat';
|
||||
} else {
|
||||
$rg = 'regular-flat';
|
||||
}
|
||||
|
||||
%elapse = (
|
||||
'1', '00:10:00',
|
||||
'2', '00:10:00',
|
||||
'4', '00:10:00',
|
||||
'8', '00:10:00',
|
||||
'16', '00:10:00',
|
||||
'32', '00:10:00',
|
||||
'64', '00:05:00',
|
||||
'128', '00:05:00',
|
||||
'256', '00:10:00',
|
||||
'512', '00:15:00',
|
||||
'1024', '00:15:00',
|
||||
'2048', '00:30:00',
|
||||
);
|
||||
|
||||
if ($os eq 'lin') {
|
||||
$use_mck = '';
|
||||
$mck_mem = '';
|
||||
$mcexec = '';
|
||||
$mcexecopt = '';
|
||||
} else {
|
||||
$path_to_mck = '/work/gg10/e29005/project/os/install';
|
||||
$use_mck = '#PJM -x MCK='.$path_to_mck;
|
||||
$mck_mem = '#PJM -x MCK_MEM=32G@0,8G@1';
|
||||
$mcexec = $path_to_mck.'/bin/mcexec';
|
||||
$mcexecopt = '-n '.$ppn;
|
||||
}
|
||||
|
||||
if ($mpi eq 'intel') {
|
||||
$cc = 'mpiicc';
|
||||
$mpiexec = 'mpiexec';
|
||||
$genv = '';
|
||||
$progress = '-genv I_MPI_ASYNC_PROGRESS 1'; # -genv I_MPI_ASYNC_PROGRESS_PIN 1
|
||||
} else {
|
||||
$mpi_lib = '/work/gg10/e29005/project/mpich/install';
|
||||
$cc = $mpi_lib.'/bin/mpicc';
|
||||
$mpiexec = $mpi_lib.'/bin/mpiexec';
|
||||
$genv = '-genv LD_LIBRARY_PATH '.$mpi_lib.'/lib:$LD_LIBRARY_PATH';
|
||||
$progress = '-genv MPIR_CVAR_ASYNC_PROGRESS 1';
|
||||
}
|
||||
|
||||
system("make clean; make CC=$cc");
|
||||
|
||||
$dir=$ARGV[2].'_'.$ARGV[0].'_'.$ARGV[1].'_'.`date +%Y%m%d_%H%M%S`;
|
||||
chomp($dir);
|
||||
print 'less '.$dir.'/job.sh.o*'."\n";
|
||||
|
||||
mkdir $dir;
|
||||
chdir $dir;
|
||||
cp('../001', './001') or die 'copy failed';
|
||||
open(IN, "../$fn[0].sh.in");
|
||||
open(OUT, ">./job.sh");
|
||||
while(<IN>) {
|
||||
s/\@rg@/$rg/g;
|
||||
s/\@nnodes@/$nnodes/g;
|
||||
s/\@nprocs@/$nprocs/g;
|
||||
s/\@elapse@/$elapse{$nnodes}/g;
|
||||
s/\@use_mck@/$use_mck/g;
|
||||
s/\@mck_mem@/$mck_mem/g;
|
||||
s/\@progress@/$progress/g;
|
||||
s/\@genv@/$genv/g;
|
||||
s/\@mpiexec@/$mpiexec/g;
|
||||
s/\@mcexec@/$mcexec/g;
|
||||
s/\@mcexecopt@/$mcexecopt/g;
|
||||
if(/\@env@/) {
|
||||
open(INCL, "../env_$mpi.sh");
|
||||
while(my $line = <INCL>) {
|
||||
print OUT $line;
|
||||
}
|
||||
next;
|
||||
}
|
||||
print OUT $_;
|
||||
}
|
||||
close(IN);
|
||||
close(OUT);
|
||||
|
||||
$cmd = 'PJM_MCK_AVAILABLE=1 pjsub ./job.sh';
|
||||
#print $cmd."\n";
|
||||
exec($cmd);
|
||||
Reference in New Issue
Block a user