1
1

Add new platform files. Modify scaling.pl to support ppn option

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
Этот коммит содержится в:
Ralph Castain 2017-01-29 14:12:51 -08:00
родитель 048d47df48
Коммит 28abe78f8c
5 изменённых файлов: 235 добавлений и 57 удалений

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

Просмотреть файл

@ -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

Просмотреть файл

@ -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 Обычный файл
Просмотреть файл

@ -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();