11SHELL := /bin/bash
22include docker/Makefile.image_names
3- include Makefile.data_download
43ROOT_DIR: =$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST ) ) ) )
54
5+
6+
67define BROWSER_PYSCRIPT
78import os, webbrowser, sys
89
@@ -35,6 +36,19 @@ BUILD_FLAGS ?=
3536
3637# ## Testing variables
3738
39+ NUM_RANKS ?=6
40+ MPIRUN_ARGS ?=--oversubscribe --mca btl_vader_single_copy_mechanism none
41+ MPIRUN_CALL ?=mpirun -np $(NUM_RANKS ) $(MPIRUN_ARGS )
42+ TEST_ARGS ?=-v
43+ FV3CORE_THRESH_ARGS=--threshold_overrides_file =$(PACE_PATH ) /pyFV3/tests/savepoint/translate/overrides/standard.yaml
44+ PHYSICS_THRESH_ARGS=--threshold_overrides_file =$(PACE_PATH ) /pySHiELD/tests/savepoint/translate/overrides/standard.yaml
45+
46+ TEST_DATA_LOC ?=test_data/
47+ TEST_DATA_VERSION ?=8.1.3
48+ TEST_DATA_HOST ?= https://portal.nccs.nasa.gov/datashare/astg/smt/pace-regression-data/
49+ TEST_RESOLUTION ?= c12
50+ TEST_CONFIG ?= $(TEST_DATA_LOC )$(TEST_RESOLUTION ) _$(NUM_RANKS ) ranks
51+
3852RUN_FLAGS ?=--rm
3953ifeq ("$(CONTAINER_CMD ) ","")
4054 PACE_PATH?=$(ROOT_DIR)
4660endif
4761endif
4862ifeq ("$(CONTAINER_CMD ) ","")
49- EXPERIMENT_DATA_RUN=$(EXPERIMENT_DATA )
63+ EXPERIMENT_DATA_RUN=$(TEST_CONFIG )
5064else
5165ifeq ("$(CONTAINER_CMD ) ","srun")
52- EXPERIMENT_DATA_RUN=$(EXPERIMENT_DATA )
66+ EXPERIMENT_DATA_RUN=$(TEST_CONFIG )
5367else
54- EXPERIMENT_DATA_RUN=$(PACE_PATH)/test_data/$(FORTRAN_SERIALIZED_DATA_VERSION)/$(EXPERIMENT )
68+ EXPERIMENT_DATA_RUN=$(TEST_CONFIG )
5569endif
5670endif
5771ifeq ($(DEV ) ,y)
5872 VOLUMES += -v $(ROOT_DIR):/pace
5973else
60- VOLUMES += -v $(EXPERIMENT_DATA):$( EXPERIMENT_DATA_RUN)
74+ VOLUMES += -v $(EXPERIMENT_DATA_RUN)
6175endif
6276ifeq ($(CONTAINER_CMD ) ,docker)
6377 CONTAINER_FLAGS=run $(RUN_FLAGS) $(VOLUMES) --env GT_CACHE_ROOT=/pace/.gt_cache $(PACE_IMAGE)
6478else
6579 CONTAINER_FLAGS=
6680endif
67- NUM_RANKS ?=6
68- MPIRUN_ARGS ?=--oversubscribe --mca btl_vader_single_copy_mechanism none
69- MPIRUN_CALL ?=mpirun -np $(NUM_RANKS ) $(MPIRUN_ARGS )
70- TEST_ARGS ?=-v
71- TEST_TYPE =$(word 3, $(subst _, ,$(EXPERIMENT ) ) )
72- FV3CORE_THRESH_ARGS=--threshold_overrides_file =$(PACE_PATH ) /fv3core/tests/savepoint/translate/overrides/$(TEST_TYPE ) .yaml
73- PHYSICS_THRESH_ARGS=--threshold_overrides_file =$(PACE_PATH ) /physics/tests/savepoint/translate/overrides/$(TEST_TYPE ) .yaml
7481
7582# ##
7683
@@ -108,29 +115,55 @@ notebook:
108115 DEV=y \
109116 $(MAKE ) enter
110117
118+ get_standard_test_data :
119+ if [ ! -d $( TEST_DATA_LOC) ]; then \
120+ mkdir -p $(TEST_DATA_LOC ) ; \
121+ fi ; \
122+ if [ ! -f $( TEST_CONFIG) _standard/dycore/input.nml ] ; then \
123+ wget $(TEST_DATA_HOST ) /8.1.3_c12_6ranks_standard.tar.gz; \
124+ tar -xzvf $(ROOT_DIR ) /8.1.3_c12_6ranks_standard.tar.gz; \
125+ mv $(ROOT_DIR ) /8.1.3/* $(TEST_DATA_LOC ) ; \
126+ rm -rf 8.1.3* ; \
127+ fi
128+
129+ get_physics_test_data :
130+ if [ ! -d $( TEST_DATA_LOC) ]; then \
131+ mkdir -p $(TEST_DATA_LOC ) ; \
132+ fi ; \
133+ if [ ! -f $( TEST_CONFIG) _baroclinic/physics/input.nml ] ; then \
134+ wget $(TEST_DATA_HOST ) /8.1.3_c12_6ranks_baroclinic.physics.tar.gz ; \
135+ tar -xzvf $(ROOT_DIR ) /8.1.3_c12_6ranks_baroclinic.physics.tar.gz; \
136+ mv $(ROOT_DIR ) /8.1.3/* $(TEST_DATA_LOC ) ; \
137+ rm -rf 8.1.3* ; \
138+ fi
139+
140+ get_test_data :
141+ $(MAKE ) get_standard_test_data; \
142+ $(MAKE ) get_physics_test_data
143+
111144test_util :
112145 if [ $( shell $( CHECK_CHANGED_SCRIPT) util) != false ]; then \
113146 $(MAKE ) -C util test ; \
114147 fi
115148
116149savepoint_tests : build # # dycore-only savepoint tests
117150 TARGET=dycore $(MAKE ) get_test_data
118- $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && pytest --data_path=$( EXPERIMENT_DATA_RUN ) / dycore/ $( TEST_ARGS) $( FV3CORE_THRESH_ARGS) $( PACE_PATH) /fv3core /tests/savepoint"
151+ $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && pytest --data_path=$( TEST_DATA_LOC ) /standard/ dycore/ $( TEST_ARGS) $( FV3CORE_THRESH_ARGS) $( PACE_PATH) /pyFV3 /tests/savepoint"
119152
120153savepoint_tests_mpi : build
121154 TARGET=dycore $(MAKE ) get_test_data
122- $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && $( MPIRUN_CALL) python3 -m mpi4py -m pytest --maxfail=1 --data_path=$( EXPERIMENT_DATA_RUN ) /dycore/ $( TEST_ARGS) $( FV3CORE_THRESH_ARGS) -m parallel $( PACE_PATH) /fv3core /tests/savepoint"
155+ $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && $( MPIRUN_CALL) python3 -m mpi4py -m pytest --maxfail=1 --data_path=$( TEST_DATA_LOC ) /dycore/ $( TEST_ARGS) $( FV3CORE_THRESH_ARGS) -m parallel $( PACE_PATH) /pyFV3 /tests/savepoint"
123156
124157dependencies.svg : dependencies.dot
125158 dot -Tsvg $< -o $@
126159
127160physics_savepoint_tests : build
128161 TARGET=physics $(MAKE ) get_test_data
129- $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && pytest --data_path=$( EXPERIMENT_DATA_RUN) /physics/ $( TEST_ARGS) $( PHYSICS_THRESH_ARGS) $( PACE_PATH) /physics /tests/savepoint"
162+ $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && pytest --data_path=$( EXPERIMENT_DATA_RUN) /physics/ $( TEST_ARGS) $( PHYSICS_THRESH_ARGS) $( PACE_PATH) /pySHiELD /tests/savepoint"
130163
131164physics_savepoint_tests_mpi : build
132165 TARGET=physics $(MAKE ) get_test_data
133- $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && $( MPIRUN_CALL) python -m mpi4py -m pytest --maxfail=1 --data_path=$( EXPERIMENT_DATA_RUN) /physics/ $( TEST_ARGS) $( PHYSICS_THRESH_ARGS) -m parallel $( PACE_PATH) /physics /tests/savepoint"
166+ $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && $( MPIRUN_CALL) python -m mpi4py -m pytest --maxfail=1 --data_path=$( EXPERIMENT_DATA_RUN) /physics/ $( TEST_ARGS) $( PHYSICS_THRESH_ARGS) -m parallel $( PACE_PATH) /pySHiELD /tests/savepoint"
134167
135168test_main : build
136169 $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && pytest $( TEST_ARGS) $( PACE_PATH) /tests/main"
@@ -147,7 +180,7 @@ test_mpi_54rank:
147180
148181driver_savepoint_tests_mpi : build
149182 TARGET=pace $(MAKE ) get_test_data
150- $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && $( MPIRUN_CALL) python -m mpi4py -m pytest --maxfail=1 --data_path=$( EXPERIMENT_DATA_RUN) /pace / $( TEST_ARGS) $( PHYSICS_THRESH_ARGS) -m parallel $( PACE_PATH) /physics /tests/savepoint"
183+ $(CONTAINER_CMD ) $(CONTAINER_FLAGS ) bash -c " $( SAVEPOINT_SETUP) && cd $( PACE_PATH) && $( MPIRUN_CALL) python -m mpi4py -m pytest --maxfail=1 --data_path=$( EXPERIMENT_DATA_RUN) /physics / $( TEST_ARGS) $( PHYSICS_THRESH_ARGS) -m parallel $( PACE_PATH) /pySHiELD /tests/savepoint"
151184
152185docs : # # generate Sphinx HTML documentation
153186 $(MAKE ) -C docs html
0 commit comments