Add new platform files. Modify scaling.pl to support ppn option
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
родитель
048d47df48
Коммит
28abe78f8c
27
contrib/platform/intel/bend/gadget
Обычный файл
27
contrib/platform/intel/bend/gadget
Обычный файл
@ -0,0 +1,27 @@
|
||||
enable_orterun_prefix_by_default=yes
|
||||
enable_mpi_thread_multiple=no
|
||||
enable_mem_debug=no
|
||||
enable_mem_profile=no
|
||||
enable_debug_symbols=yes
|
||||
enable_binaries=yes
|
||||
enable_heterogeneous=no
|
||||
enable_picky=yes
|
||||
enable_debug=yes
|
||||
enable_shared=yes
|
||||
enable_static=no
|
||||
enable_memchecker=no
|
||||
enable_ipv6=no
|
||||
enable_mpi_fortran=no
|
||||
enable_mpi_cxx=no
|
||||
enable_mpi_cxx_seek=no
|
||||
enable_cxx_exceptions=no
|
||||
enable_oshmem=no
|
||||
enable_mpi_java=no
|
||||
enable_io_romio=no
|
||||
enable_contrib_no_build=libnbc
|
||||
with_memory_manager=no
|
||||
with_tm=no
|
||||
with_verbs=no
|
||||
with_devel_headers=yes
|
||||
with_portals=no
|
||||
with_valgrind=no
|
27
contrib/platform/intel/bend/gadget-optimized
Обычный файл
27
contrib/platform/intel/bend/gadget-optimized
Обычный файл
@ -0,0 +1,27 @@
|
||||
enable_orterun_prefix_by_default=yes
|
||||
enable_mpi_thread_multiple=no
|
||||
enable_mem_debug=no
|
||||
enable_mem_profile=no
|
||||
enable_debug_symbols=no
|
||||
enable_binaries=yes
|
||||
enable_heterogeneous=no
|
||||
enable_picky=yes
|
||||
enable_debug=no
|
||||
enable_shared=yes
|
||||
enable_static=no
|
||||
enable_memchecker=no
|
||||
enable_ipv6=no
|
||||
enable_mpi_fortran=no
|
||||
enable_mpi_cxx=no
|
||||
enable_mpi_cxx_seek=no
|
||||
enable_cxx_exceptions=no
|
||||
enable_oshmem=no
|
||||
enable_mpi_java=no
|
||||
enable_io_romio=no
|
||||
enable_contrib_no_build=libnbc
|
||||
with_memory_manager=no
|
||||
with_tm=no
|
||||
with_verbs=no
|
||||
with_devel_headers=yes
|
||||
with_portals=no
|
||||
with_valgrind=no
|
66
contrib/platform/intel/bend/gadget-optimized.conf
Обычный файл
66
contrib/platform/intel/bend/gadget-optimized.conf
Обычный файл
@ -0,0 +1,66 @@
|
||||
#
|
||||
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||
# University Research and Technology
|
||||
# Corporation. All rights reserved.
|
||||
# Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||
# of Tennessee Research Foundation. All rights
|
||||
# reserved.
|
||||
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||
# University of Stuttgart. All rights reserved.
|
||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2017 Intel, Inc. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
# This is the default system-wide MCA parameters defaults file.
|
||||
# Specifically, the MCA parameter "mca_param_files" defaults to a
|
||||
# value of
|
||||
# "$HOME/.openmpi/mca-params.conf:$sysconf/openmpi-mca-params.conf"
|
||||
# (this file is the latter of the two). So if the default value of
|
||||
# mca_param_files is not changed, this file is used to set system-wide
|
||||
# MCA parameters. This file can therefore be used to set system-wide
|
||||
# default MCA parameters for all users. Of course, users can override
|
||||
# these values if they want, but this file is an excellent location
|
||||
# for setting system-specific MCA parameters for those users who don't
|
||||
# know / care enough to investigate the proper values for them.
|
||||
|
||||
# Note that this file is only applicable where it is visible (in a
|
||||
# filesystem sense). Specifically, MPI processes each read this file
|
||||
# during their startup to determine what default values for MCA
|
||||
# parameters should be used. mpirun does not bundle up the values in
|
||||
# this file from the node where it was run and send them to all nodes;
|
||||
# the default value decisions are effectively distributed. Hence,
|
||||
# these values are only applicable on nodes that "see" this file. If
|
||||
# $sysconf is a directory on a local disk, it is likely that changes
|
||||
# to this file will need to be propagated to other nodes. If $sysconf
|
||||
# is a directory that is shared via a networked filesystem, changes to
|
||||
# this file will be visible to all nodes that share this $sysconf.
|
||||
|
||||
# The format is straightforward: one per line, mca_param_name =
|
||||
# rvalue. Quoting is ignored (so if you use quotes or escape
|
||||
# characters, they'll be included as part of the value). For example:
|
||||
|
||||
# Disable run-time MPI parameter checking
|
||||
# mpi_param_check = 0
|
||||
|
||||
# Note that the value "~/" will be expanded to the current user's home
|
||||
# directory. For example:
|
||||
|
||||
# Change component loading path
|
||||
# component_path = /usr/local/lib/openmpi:~/my_openmpi_components
|
||||
|
||||
# See "ompi_info --param all all" for a full listing of Open MPI MCA
|
||||
# parameters available and their default values.
|
||||
#
|
||||
|
||||
# Basic behavior to smooth startup
|
||||
mca_base_component_show_load_errors = 1
|
||||
orte_abort_timeout = 10
|
||||
hwloc_base_mem_bind_failure_action = silent
|
||||
|
66
contrib/platform/intel/bend/gadget.conf
Обычный файл
66
contrib/platform/intel/bend/gadget.conf
Обычный файл
@ -0,0 +1,66 @@
|
||||
#
|
||||
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
||||
# University Research and Technology
|
||||
# Corporation. All rights reserved.
|
||||
# Copyright (c) 2004-2005 The University of Tennessee and The University
|
||||
# of Tennessee Research Foundation. All rights
|
||||
# reserved.
|
||||
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
||||
# University of Stuttgart. All rights reserved.
|
||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||
# All rights reserved.
|
||||
# Copyright (c) 2006 Cisco Systems, Inc. All rights reserved.
|
||||
# Copyright (c) 2017 Intel, Inc. All rights reserved.
|
||||
# $COPYRIGHT$
|
||||
#
|
||||
# Additional copyrights may follow
|
||||
#
|
||||
# $HEADER$
|
||||
#
|
||||
|
||||
# This is the default system-wide MCA parameters defaults file.
|
||||
# Specifically, the MCA parameter "mca_param_files" defaults to a
|
||||
# value of
|
||||
# "$HOME/.openmpi/mca-params.conf:$sysconf/openmpi-mca-params.conf"
|
||||
# (this file is the latter of the two). So if the default value of
|
||||
# mca_param_files is not changed, this file is used to set system-wide
|
||||
# MCA parameters. This file can therefore be used to set system-wide
|
||||
# default MCA parameters for all users. Of course, users can override
|
||||
# these values if they want, but this file is an excellent location
|
||||
# for setting system-specific MCA parameters for those users who don't
|
||||
# know / care enough to investigate the proper values for them.
|
||||
|
||||
# Note that this file is only applicable where it is visible (in a
|
||||
# filesystem sense). Specifically, MPI processes each read this file
|
||||
# during their startup to determine what default values for MCA
|
||||
# parameters should be used. mpirun does not bundle up the values in
|
||||
# this file from the node where it was run and send them to all nodes;
|
||||
# the default value decisions are effectively distributed. Hence,
|
||||
# these values are only applicable on nodes that "see" this file. If
|
||||
# $sysconf is a directory on a local disk, it is likely that changes
|
||||
# to this file will need to be propagated to other nodes. If $sysconf
|
||||
# is a directory that is shared via a networked filesystem, changes to
|
||||
# this file will be visible to all nodes that share this $sysconf.
|
||||
|
||||
# The format is straightforward: one per line, mca_param_name =
|
||||
# rvalue. Quoting is ignored (so if you use quotes or escape
|
||||
# characters, they'll be included as part of the value). For example:
|
||||
|
||||
# Disable run-time MPI parameter checking
|
||||
# mpi_param_check = 0
|
||||
|
||||
# Note that the value "~/" will be expanded to the current user's home
|
||||
# directory. For example:
|
||||
|
||||
# Change component loading path
|
||||
# component_path = /usr/local/lib/openmpi:~/my_openmpi_components
|
||||
|
||||
# See "ompi_info --param all all" for a full listing of Open MPI MCA
|
||||
# parameters available and their default values.
|
||||
#
|
||||
|
||||
# Basic behavior to smooth startup
|
||||
mca_base_component_show_load_errors = 1
|
||||
orte_abort_timeout = 10
|
||||
hwloc_base_mem_bind_failure_action = silent
|
||||
|
@ -20,15 +20,16 @@ my $myapp;
|
||||
my $runall = 0;
|
||||
my $rawoutput = 0;
|
||||
my $myresults = "myresults";
|
||||
my $ppn = 1;
|
||||
my @csvrow;
|
||||
|
||||
my @tests = qw(/bin/true ./orte_no_op ./mpi_no_op ./mpi_no_op ./mpi_no_op);
|
||||
my @options = ("", "", "", "-mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1", "-mca mpi_add_procs_cutoff 0 -mca pmix_base_async_modex 1 -mca async_mpi_init 1 -mca async_mpi_finalize 1");
|
||||
my @starters = qw(mpirun orterun srun aprun);
|
||||
my @starteroptions = ("--pernode --novm",
|
||||
"--hnp file:dvm_uri --pernode",
|
||||
"--distribution=cyclic",
|
||||
"-N 1");
|
||||
my @starterlist = qw(mpirun orterun srun aprun);
|
||||
my @starteroptionlist = ("--novm",
|
||||
"--hnp file:dvm_uri",
|
||||
"--distribution=cyclic -N",
|
||||
"-N");
|
||||
|
||||
# Set to true if the script should merely print the cmds
|
||||
# it would run, but don't run them
|
||||
@ -51,6 +52,7 @@ GetOptions(
|
||||
"all" => \$runall,
|
||||
"results=s" => \$myresults,
|
||||
"rawout" => \$rawoutput,
|
||||
"ppn=s" => \$ppn,
|
||||
) or die "unable to parse options, stopped";
|
||||
|
||||
if ($HELP) {
|
||||
@ -60,14 +62,15 @@ if ($HELP) {
|
||||
--quiet | -q Only output critical messages to stdout
|
||||
--showme Show the actual commands without executing them
|
||||
--reps=s Number of times to run each test (for statistics)
|
||||
--mpirun Use only mpirun (or its equivalent orterun)
|
||||
--dvm Use only orte-dvm to execute the test
|
||||
--srun Use only srun (if available) to execute the test
|
||||
--arpun Use only aprun (if available) to execute the test
|
||||
--mpirun Use mpirun (or its equivalent orterun)
|
||||
--dvm Use orte-dvm to execute the test
|
||||
--srun Use srun (if available) to execute the test
|
||||
--arpun Use aprun (if available) to execute the test
|
||||
--myapp=s In addition to the standard tests, run this specific application (including any args)
|
||||
--all Use all available start commands [default]
|
||||
--results=file File where results are to stored in comma-separated value format
|
||||
--rawout Provide raw timing output to the file
|
||||
--ppn=n Run n procs/node
|
||||
";
|
||||
exit(0);
|
||||
}
|
||||
@ -84,13 +87,23 @@ my $res;
|
||||
my $idx;
|
||||
my $option;
|
||||
my $havedvm = 0;
|
||||
my @starters;
|
||||
my @starteroptions;
|
||||
|
||||
# if they asked for all, then set all starters to requested
|
||||
if ($runall) {
|
||||
$useaprun = 1;
|
||||
$usempirun = 1;
|
||||
$usesrun = 1;
|
||||
$usedvm = 1;
|
||||
}
|
||||
|
||||
# see which starters are available
|
||||
my @path = split(":", $ENV{PATH});
|
||||
my $exists = 0;
|
||||
my $opt;
|
||||
$idx=0;
|
||||
while ($idx <= $#starters) {
|
||||
$starter = $starters[$idx];
|
||||
foreach $starter (@starterlist) {
|
||||
$exists = 0;
|
||||
foreach my $path (@path) {
|
||||
if ( -x "$path/$starter") {
|
||||
@ -98,36 +111,24 @@ while ($idx <= $#starters) {
|
||||
last;
|
||||
}
|
||||
}
|
||||
unless ($exists) {
|
||||
# remove this one from the list
|
||||
splice @starters, $idx, 1;
|
||||
splice @starteroptions, $idx, 1;
|
||||
# adjust the index
|
||||
$idx = $idx - 1;
|
||||
} elsif ($usedvm && $starter ne "orterun") {
|
||||
# remove this one from the list
|
||||
splice @starters, $idx, 1;
|
||||
splice @starteroptions, $idx, 1;
|
||||
# adjust the index
|
||||
$idx = $idx - 1;
|
||||
} elsif ($usesrun && $starter ne "srun") {
|
||||
# remove this one from the list
|
||||
splice @starters, $idx, 1;
|
||||
splice @starteroptions, $idx, 1;
|
||||
# adjust the index
|
||||
$idx = $idx - 1;
|
||||
} elsif ($useaprun && $starter ne "aprun") {
|
||||
# remove this one from the list
|
||||
splice @starters, $idx, 1;
|
||||
splice @starteroptions, $idx, 1;
|
||||
# adjust the index
|
||||
$idx = $idx - 1;
|
||||
} elsif ($usempirun && $starter ne "mpirun") {
|
||||
# remove this one from the list
|
||||
splice @starters, $idx, 1;
|
||||
splice @starteroptions, $idx, 1;
|
||||
# adjust the index
|
||||
$idx = $idx - 1;
|
||||
if ($exists) {
|
||||
if ($usedvm && $starter eq "orterun") {
|
||||
push @starters, $starter;
|
||||
$opt = $starteroptionlist[$idx] . " --npernode " . $ppn;
|
||||
push @starteroptions, $opt;
|
||||
} elsif ($usempirun && $starter eq "mpirun") {
|
||||
push @starters, $starter;
|
||||
$opt = $starteroptionlist[$idx] . " --npernode " . $ppn;
|
||||
push @starteroptions, $opt;
|
||||
} elsif ($useaprun && $starter eq "aprun") {
|
||||
push @starters, $starter;
|
||||
$opt = $starteroptionlist[$idx] . " " . $ppn;
|
||||
push @starteroptions, $opt;
|
||||
} elsif ($usesrun && $starter eq "srun") {
|
||||
push @starters, $starter;
|
||||
$opt = $starteroptionlist[$idx] . " " . $ppn;
|
||||
push @starteroptions, $opt;
|
||||
}
|
||||
}
|
||||
$idx = $idx + 1;
|
||||
}
|
||||
@ -150,31 +151,21 @@ if ($myresults) {
|
||||
|
||||
# determine the number of nodes - doesn't
|
||||
# matter which starter we use
|
||||
$cmd = $starters[0] . " " . $starteroptions[0] . " hostname";
|
||||
print "CMD: $cmd\n";
|
||||
$cmd = "mpirun --novm --pernode hostname";
|
||||
$output = `$cmd`;
|
||||
print "$output\n";
|
||||
@lines = split(/\n/, $output);
|
||||
$num_nodes = $#lines + 1;
|
||||
|
||||
# collect the complete list of starters
|
||||
my $mystarters;
|
||||
$idx=1;
|
||||
$mystarters = $starters[0];
|
||||
while ($idx < $#starters) {
|
||||
$mystarters = $mystarters . "," . $starters[$idx];
|
||||
$idx = $idx + 1;
|
||||
}
|
||||
|
||||
# get the local date and time
|
||||
my ($sec,$min,$hour,$day,$month,$yr19,@rest) = localtime(time);
|
||||
|
||||
my $pstarts = join(", ", @starters);
|
||||
# start by printing out the resulting configuration
|
||||
print "\n--------------------------------------------------\n";
|
||||
print "\nTest configuration:\n";
|
||||
print "\tDate:\t" . "$day-".++$month. "-".($yr19+1900) . " " . sprintf("%02d",$hour).":".sprintf("%02d",$min).":".sprintf("%02d",$sec) . "\n";;
|
||||
print "\tNum nodes:\t" . $num_nodes . "\n";
|
||||
print "\tStarters:\t" . $mystarters . "\n";
|
||||
print "\tStarters:\t" . $pstarts . "\n";
|
||||
print "\n--------------------------------------------------\n";
|
||||
|
||||
# and tag the output file as well
|
||||
@ -182,7 +173,7 @@ if ($myresults) {
|
||||
print FILE "Test configuration:\n";
|
||||
print FILE "Date:\t" . "$day-".++$month. "-".($yr19+1900) . " " . sprintf("%02d",$hour).":".sprintf("%02d",$min).":".sprintf("%02d",$sec) . "\n";;
|
||||
print FILE "Num nodes:\t" . $num_nodes . "\n";
|
||||
print FILE "Starters:\t" . $mystarters . "\n";
|
||||
print FILE "Starters:\t" . $pstarts . "\n";
|
||||
}
|
||||
|
||||
my $index = 0;
|
||||
@ -268,6 +259,7 @@ sub runcmd()
|
||||
}
|
||||
|
||||
foreach $starter (@starters) {
|
||||
print "STARTER: $starter\n";
|
||||
# if we are going to use the dvm, then we
|
||||
if ($starter eq "orterun") {
|
||||
# need to start it
|
||||
@ -289,7 +281,7 @@ foreach $starter (@starters) {
|
||||
}
|
||||
|
||||
if ($myresults) {
|
||||
print FILE "$starter\n\n";
|
||||
print FILE "$starter $starteroptions[$index]\n\n";
|
||||
}
|
||||
my $testnum = 0;
|
||||
foreach $test (@tests) {
|
||||
@ -306,7 +298,7 @@ foreach $starter (@starters) {
|
||||
$n = 1;
|
||||
while ($n <= $num_nodes) {
|
||||
push @csvrow,$n;
|
||||
$cmd = "time " . $starter . " " . $starteroptions[$index] . " -n $n $option $test 2>&1";
|
||||
$cmd = "time " . $starter . " " . $starteroptions[$index] . " $option $test 2>&1";
|
||||
print $cmd . "\n";
|
||||
if (!$SHOWME) {
|
||||
runcmd();
|
||||
|
Загрузка…
Ссылка в новой задаче
Block a user