Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Detect NOAA machines and add test scripts for Hera, Orion, and Jet #1

Merged
merged 6 commits into from
Apr 5, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
251 changes: 172 additions & 79 deletions cmake/LibMPI.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ include (CMakeParseArguments)

# Find Valgrind to perform memory leak check
if (PIO_VALGRIND_CHECK)
find_program (VALGRIND_COMMAND NAMES valgrind)
if (VALGRIND_COMMAND)
set (VALGRIND_COMMAND_OPTIONS --leak-check=full --show-reachable=yes)
else ()
message (WARNING "Valgrind not found: memory leak check could not be performed")
set (VALGRIND_COMMAND "")
endif ()
find_program (VALGRIND_COMMAND NAMES valgrind)
if (VALGRIND_COMMAND)
set (VALGRIND_COMMAND_OPTIONS --leak-check=full --show-reachable=yes)
else ()
message (WARNING "Valgrind not found: memory leak check could not be performed")
set (VALGRIND_COMMAND "")
endif ()
endif ()

#
Expand All @@ -26,47 +26,140 @@ endif ()
#
function (platform_name RETURN_VARIABLE)

# Determine platform name from site name...
site_name (SITENAME)


if (SITENAME MATCHES "^laramie" OR
SITENAME MATCHES "^cheyenne" OR
SITENAME MATCHES "^chadmin")

set (${RETURN_VARIABLE} "nwscla" PARENT_SCOPE)

# ALCF/Argonne Machines
elseif (SITENAME MATCHES "^mira" OR
SITENAME MATCHES "^cetus" OR
SITENAME MATCHES "^vesta" OR
SITENAME MATCHES "^cooley")

set (${RETURN_VARIABLE} "alcf" PARENT_SCOPE)

# NERSC Machines
elseif (SITENAME MATCHES "^edison" OR
SITENAME MATCHES "^cori")

set (${RETURN_VARIABLE} "nersc" PARENT_SCOPE)

# NCSA Machine (Blue Waters)
elseif (SITENAME MATCHES "^h2ologin")

set (${RETURN_VARIABLE} "ncsa" PARENT_SCOPE)

# OLCF/Oak Ridge Machines
elseif (SITENAME MATCHES "^eos" OR
SITENAME MATCHES "^titan")

set (${RETURN_VARIABLE} "olcf" PARENT_SCOPE)

else ()

set (${RETURN_VARIABLE} "unknown" PARENT_SCOPE)

endif ()

# Determine platform name from site name...
site_name (SITENAME)

# hera
if (SITENAME MATCHES "^hfe01" OR
SITENAME MATCHES "^hfe02" OR
SITENAME MATCHES "^hfe03" OR
SITENAME MATCHES "^hfe04" OR
SITENAME MATCHES "^hfe05" OR
SITENAME MATCHES "^hfe06" OR
SITENAME MATCHES "^hfe07" OR
SITENAME MATCHES "^hfe08" OR
SITENAME MATCHES "^hfe09" OR
SITENAME MATCHES "^hfe10" OR
SITENAME MATCHES "^hfe11" OR
SITENAME MATCHES "^hfe12")

set (${RETURN_VARIABLE} "hera" PARENT_SCOPE)

# wcoss_cray (Luna)
elseif (SITENAME MATCHES "^llogin1" OR
SITENAME MATCHES "^llogin2" OR
SITENAME MATCHES "^llogin3")

set (${RETURN_VARIABLE} "wcoss_cray" PARENT_SCOPE)

# wcoss_cray (Surge)
elseif (SITENAME MATCHES "^slogin1" OR
SITENAME MATCHES "^slogin2" OR
SITENAME MATCHES "^slogin3")

set (${RETURN_VARIABLE} "wcoss_cray" PARENT_SCOPE)

# wcoss_dell_p3 (Venus)
elseif (SITENAME MATCHES "^v71a1.ncep.noaa.gov" OR
SITENAME MATCHES "^v71a2.ncep.noaa.gov" OR
SITENAME MATCHES "^v71a3.ncep.noaa.gov" OR
SITENAME MATCHES "^v72a1.ncep.noaa.gov" OR
SITENAME MATCHES "^v72a2.ncep.noaa.gov" OR
SITENAME MATCHES "^v72a3.ncep.noaa.gov")

set (${RETURN_VARIABLE} "wcoss_dell_p3" PARENT_SCOPE)

# wcoss_dell_p3 (Mars)
elseif (SITENAME MATCHES "^m71a1.ncep.noaa.gov" OR
SITENAME MATCHES "^m71a2.ncep.noaa.gov" OR
SITENAME MATCHES "^m71a3.ncep.noaa.gov" OR
SITENAME MATCHES "^m72a1.ncep.noaa.gov" OR
SITENAME MATCHES "^m72a2.ncep.noaa.gov" OR
SITENAME MATCHES "^m72a3.ncep.noaa.gov")

set (${RETURN_VARIABLE} "wcoss_dell_p3" PARENT_SCOPE)

# wcoss2
elseif (SITENAME MATCHES "^along01" OR
SITENAME MATCHES "^alogin02")

set (${RETURN_VARIABLE} "wcoss2" PARENT_SCOPE)

# gaea
elseif (SITENAME MATCHES "^gaea9" OR
SITENAME MATCHES "^gaea10" OR
SITENAME MATCHES "^gaea11" OR
SITENAME MATCHES "^gaea12" OR
SITENAME MATCHES "^gaea13" OR
SITENAME MATCHES "^gaea14" OR
SITENAME MATCHES "^gaea15" OR
SITENAME MATCHES "^gaea16" OR
SITENAME MATCHES "^gaea9.ncrc.gov" OR
SITENAME MATCHES "^gaea10.ncrc.gov" OR
SITENAME MATCHES "^gaea11.ncrc.gov" OR
SITENAME MATCHES "^gaea12.ncrc.gov" OR
SITENAME MATCHES "^gaea13.ncrc.gov" OR
SITENAME MATCHES "^gaea14.ncrc.gov" OR
SITENAME MATCHES "^gaea15.ncrc.gov" OR
SITENAME MATCHES "^gaea16.ncrc.gov")

set (${RETURN_VARIABLE} "gaea" PARENT_SCOPE)

# jet
elseif (SITENAME MATCHES "^fe1" OR
SITENAME MATCHES "^fe2" OR
SITENAME MATCHES "^fe3" OR
SITENAME MATCHES "^fe4" OR
SITENAME MATCHES "^fe5" OR
SITENAME MATCHES "^fe6" OR
SITENAME MATCHES "^fe7" OR
SITENAME MATCHES "^fe8" OR
SITENAME MATCHES "^tfe1" OR
SITENAME MATCHES "^tfe2")

set (${RETURN_VARIABLE} "jet" PARENT_SCOPE)

elseif (SITENAME MATCHES "^Orion-login-1.HPC.MsState.Edu" OR
SITENAME MATCHES "^Orion-login-2.HPC.MsState.Edu" OR
SITENAME MATCHES "^Orion-login-3.HPC.MsState.Edu" OR
SITENAME MATCHES "^Orion-login-4.HPC.MsState.Edu")

set (${RETURN_VARIABLE} "orion" PARENT_SCOPE)

elseif (SITENAME MATCHES "^cheyenne1.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne1.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne2.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne3.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne4.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne5.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne6.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne1.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne2.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne3.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne4.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne5.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^cheyenne6.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^chadmin1.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^chadmin2.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^chadmin3.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^chadmin4.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^chadmin5.ib0.cheyenne.ucar.edu" OR
SITENAME MATCHES "^chadmin6.ib0.cheyenne.ucar.edu")

set (${RETURN_VARIABLE} "cheyenne" PARENT_SCOPE)
elseif (SITENAME MATCHES "^login1.stampede2.tacc.utexas.edu" OR
SITENAME MATCHES "^login2.stampede2.tacc.utexas.edu" OR
SITENAME MATCHES "^login3.stampede2.tacc.utexas.edu" OR
SITENAME MATCHES "^login4.stampede2.tacc.utexas.edu")


set (${RETURN_VARIABLE} "stampede" PARENT_SCOPE)

else ()

set (${RETURN_VARIABLE} "unknown" PARENT_SCOPE)

endif ()
endfunction ()

#==============================================================================
Expand All @@ -79,46 +172,46 @@ endfunction ()
# TIMEOUT <timeout>)
function (add_mpi_test TESTNAME)

# Parse the input arguments
set (options)
set (oneValueArgs NUMPROCS TIMEOUT EXECUTABLE)
set (multiValueArgs ARGUMENTS)
cmake_parse_arguments (${TESTNAME} "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
# Parse the input arguments
set (options)
set (oneValueArgs NUMPROCS TIMEOUT EXECUTABLE)
set (multiValueArgs ARGUMENTS)
cmake_parse_arguments (${TESTNAME} "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})

# Store parsed arguments for convenience
set (exec_file ${${TESTNAME}_EXECUTABLE})
set (exec_args ${${TESTNAME}_ARGUMENTS})
set (num_procs ${${TESTNAME}_NUMPROCS})
set (timeout ${${TESTNAME}_TIMEOUT})
# Store parsed arguments for convenience
set (exec_file ${${TESTNAME}_EXECUTABLE})
set (exec_args ${${TESTNAME}_ARGUMENTS})
set (num_procs ${${TESTNAME}_NUMPROCS})
set (timeout ${${TESTNAME}_TIMEOUT})

# Get the platform name
platform_name (PLATFORM)
# Get the platform name
platform_name (PLATFORM)

get_property(WITH_MPIEXEC GLOBAL PROPERTY WITH_MPIEXEC)
if (WITH_MPIEXEC)
set(MPIEXEC "${WITH_MPIEXEC}")
endif ()
get_property(WITH_MPIEXEC GLOBAL PROPERTY WITH_MPIEXEC)
if (WITH_MPIEXEC)
set(MPIEXEC "${WITH_MPIEXEC}")
endif ()

# Default ("unknown" platform) execution
if (PLATFORM STREQUAL "unknown")
# Default ("unknown" platform) execution
if (PLATFORM STREQUAL "unknown")

# Run tests directly from the command line
set(EXE_CMD ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${num_procs}
${MPIEXEC_PREFLAGS} ${VALGRIND_COMMAND} ${VALGRIND_COMMAND_OPTIONS} ${exec_file}
${MPIEXEC_POSTFLAGS} ${exec_args})
# Run tests directly from the command line
set(EXE_CMD ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${num_procs}
${MPIEXEC_PREFLAGS} ${VALGRIND_COMMAND} ${VALGRIND_COMMAND_OPTIONS} ${exec_file}
${MPIEXEC_POSTFLAGS} ${exec_args})

else ()
else ()

# Run tests from the platform-specific executable
set (EXE_CMD ${CMAKE_SOURCE_DIR}/cmake/mpiexec.${PLATFORM}
${num_procs} ${VALGRIND_COMMAND} ${VALGRIND_COMMAND_OPTIONS} ${exec_file} ${exec_args})
# Run tests from the platform-specific executable
set (EXE_CMD ${CMAKE_SOURCE_DIR}/cmake/mpiexec.${PLATFORM}
${num_procs} ${VALGRIND_COMMAND} ${VALGRIND_COMMAND_OPTIONS} ${exec_file} ${exec_args})

endif ()
endif ()

# Add the test to CTest
add_test(NAME ${TESTNAME} COMMAND ${EXE_CMD})
# Add the test to CTest
add_test(NAME ${TESTNAME} COMMAND ${EXE_CMD})

# Adjust the test timeout
set_tests_properties(${TESTNAME} PROPERTIES TIMEOUT ${timeout})
# Adjust the test timeout
set_tests_properties(${TESTNAME} PROPERTIES TIMEOUT ${timeout})

endfunction()
15 changes: 15 additions & 0 deletions cmake/mpiexec.hera
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash
#
# Arguments:
#
# $1 - Number of MPI Tasks
# $2+ - Executable and its arguments
#

ACCOUNT=
QOS=debug

NP=$1
shift

srun -A $ACCOUNT -q $QOS -n $NP $@
15 changes: 15 additions & 0 deletions cmake/mpiexec.jet
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash
#
# Arguments:
#
# $1 - Number of MPI Tasks
# $2+ - Executable and its arguments
#

ACCOUNT=
QOS=debug

NP=$1
shift

srun -A $ACCOUNT -q $QOS -n $NP $@
15 changes: 15 additions & 0 deletions cmake/mpiexec.orion
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash
#
# Arguments:
#
# $1 - Number of MPI Tasks
# $2+ - Executable and its arguments
#

ACCOUNT=
QOS=debug

NP=$1
shift

srun -A $ACCOUNT -q $QOS -n $NP $@