Skip to content

Commit e55b72b

Browse files
author
Rochishnu Chowdhury
committed
Align Kokkos unit test naming
1 parent cd1f8be commit e55b72b

3 files changed

Lines changed: 70 additions & 50 deletions

File tree

tests/Makefile.am

Lines changed: 63 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,13 @@ unit_tests_data = $(data)
243243

244244
# Why isn't this working automatically?
245245
EXTRA_DIST = $(data)
246+
kokkos_unit_test_sources = \
247+
numerics/kokkos_numerics_oracle_test_utils.h \
248+
numerics/kokkos_tensor_ops_oracle_fixtures.h \
249+
numerics/kokkos_tensor_ops_oracle_runners.h \
250+
numerics/kokkos_vector_ops_oracle_fixtures.h \
251+
numerics/kokkos_vector_ops_oracle_runners.h
252+
EXTRA_DIST += $(kokkos_unit_test_sources)
246253

247254
if LIBMESH_ENABLE_FPARSER
248255
unit_tests_sources += \
@@ -255,20 +262,19 @@ TESTS =
255262
if LIBMESH_ENABLE_KOKKOS
256263
KOKKOS_TEST_CPPFLAGS += -I$(top_srcdir)/include $(KOKKOS_CPPFLAGS)
257264

258-
check_PROGRAMS += kokkos_vector_ops_oracle_unit kokkos_tensor_ops_oracle_unit
259-
TESTS += kokkos_vector_ops_oracle_unit kokkos_tensor_ops_oracle_unit
260-
261-
kokkos_vector_ops_oracle_unit_SOURCES = numerics/kokkos_vector_ops_oracle_test.K
262-
kokkos_vector_ops_oracle_unit_CPPFLAGS = $(AM_CPPFLAGS) $(KOKKOS_TEST_CPPFLAGS)
263-
kokkos_vector_ops_oracle_unit_CXXFLAGS = $(AM_CXXFLAGS) $(KOKKOS_CXXFLAGS)
264-
kokkos_vector_ops_oracle_unit_LDFLAGS = $(AM_LDFLAGS) $(KOKKOS_LDFLAGS)
265-
kokkos_vector_ops_oracle_unit_LDADD = $(top_builddir)/libmesh_opt.la $(KOKKOS_LIBS) $(libmesh_optional_LIBS)
265+
if LIBMESH_DBG_MODE
266+
check_PROGRAMS += unit_tests-kokkos-dbg
267+
TESTS += unit_tests-kokkos-dbg
268+
unit_tests_kokkos_dbg_SOURCES =
269+
EXTRA_unit_tests_kokkos_dbg_SOURCES = driver_kokkos.K
270+
endif
266271

267-
kokkos_tensor_ops_oracle_unit_SOURCES = numerics/kokkos_tensor_ops_oracle_test.K
268-
kokkos_tensor_ops_oracle_unit_CPPFLAGS = $(AM_CPPFLAGS) $(KOKKOS_TEST_CPPFLAGS)
269-
kokkos_tensor_ops_oracle_unit_CXXFLAGS = $(AM_CXXFLAGS) $(KOKKOS_CXXFLAGS)
270-
kokkos_tensor_ops_oracle_unit_LDFLAGS = $(AM_LDFLAGS) $(KOKKOS_LDFLAGS)
271-
kokkos_tensor_ops_oracle_unit_LDADD = $(top_builddir)/libmesh_opt.la $(KOKKOS_LIBS) $(libmesh_optional_LIBS)
272+
if LIBMESH_OPT_MODE
273+
check_PROGRAMS += unit_tests-kokkos-opt
274+
TESTS += unit_tests-kokkos-opt
275+
unit_tests_kokkos_opt_SOURCES =
276+
EXTRA_unit_tests_kokkos_opt_SOURCES = driver_kokkos.K
277+
endif
272278
endif
273279

274280
# our GLIBC debugging preprocessor flags seem to potentially conflict
@@ -383,24 +389,52 @@ if LIBMESH_ENABLE_CPPUNIT
383389
TESTS += run_unit_tests.sh
384390
endif
385391

386-
# Compile .K translation units with the Kokkos device compiler.
387-
# If KOKKOS_CXX is not the MPI wrapper, configure populates
388-
# $(KOKKOS_MPI_CPPFLAGS) from the wrapper's compile flags so mpi.h and
389-
# any wrapper-provided defines remain visible.
390-
.K.o:
392+
if LIBMESH_ENABLE_KOKKOS
393+
driver_kokkos_src = driver_kokkos.K
394+
unit_tests_kokkos_dbg_object = unit_tests_kokkos_dbg-driver_kokkos.$(OBJEXT)
395+
unit_tests_kokkos_opt_object = unit_tests_kokkos_opt-driver_kokkos.$(OBJEXT)
396+
unit_tests_kokkos_dbg_depfile = $(DEPDIR)/unit_tests_kokkos_dbg-driver_kokkos.d
397+
unit_tests_kokkos_opt_depfile = $(DEPDIR)/unit_tests_kokkos_opt-driver_kokkos.d
398+
kokkos_unit_test_depfiles = $(unit_tests_kokkos_dbg_depfile) $(unit_tests_kokkos_opt_depfile)
399+
kokkos_unit_test_cleanfiles = $(unit_tests_kokkos_dbg_object) $(unit_tests_kokkos_opt_object) \
400+
$(kokkos_unit_test_depfiles) \
401+
unit_tests-kokkos-dbg$(EXEEXT) unit_tests-kokkos-opt$(EXEEXT)
402+
403+
# Build the Kokkos tests with the same mode-suffixed naming as the
404+
# original libMesh unit test executables, while still compiling with
405+
# the Kokkos device compiler and mode-specific flags.
406+
$(unit_tests_kokkos_dbg_object): $(driver_kokkos_src)
407+
@$(MKDIR_P) $(DEPDIR)
391408
$(KOKKOS_CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
392-
$(KOKKOS_MPI_CPPFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(KOKKOS_TEST_CPPFLAGS) \
393-
$(AM_CXXFLAGS) $(CXXFLAGS) $(KOKKOS_CXXFLAGS) \
409+
$(KOKKOS_MPI_CPPFLAGS) $(CPPFLAGS_DBG) $(AM_CPPFLAGS) $(CPPFLAGS) $(KOKKOS_TEST_CPPFLAGS) \
410+
$(AM_CXXFLAGS) $(CXXFLAGS_DBG) $(CXXFLAGS) $(KOKKOS_CXXFLAGS) \
411+
-MMD -MP -MF $(unit_tests_kokkos_dbg_depfile) \
394412
-c $< -o $@
395413

396-
# Custom link rules so the Kokkos compiler drives the final link step.
397-
kokkos_vector_ops_oracle_unit_LINK = \
398-
$(LIBTOOL) --tag=CXX --mode=link $(KOKKOS_CXX) \
399-
$(LDFLAGS) $(kokkos_vector_ops_oracle_unit_LDFLAGS) -o $@
414+
$(unit_tests_kokkos_opt_object): $(driver_kokkos_src)
415+
@$(MKDIR_P) $(DEPDIR)
416+
$(KOKKOS_CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
417+
$(KOKKOS_MPI_CPPFLAGS) $(CPPFLAGS_OPT) $(AM_CPPFLAGS) $(CPPFLAGS) $(KOKKOS_TEST_CPPFLAGS) \
418+
$(AM_CXXFLAGS) $(CXXFLAGS_OPT) $(CXXFLAGS) $(KOKKOS_CXXFLAGS) \
419+
-MMD -MP -MF $(unit_tests_kokkos_opt_depfile) \
420+
-c $< -o $@
400421

401-
kokkos_tensor_ops_oracle_unit_LINK = \
402-
$(LIBTOOL) --tag=CXX --mode=link $(KOKKOS_CXX) \
403-
$(LDFLAGS) $(kokkos_tensor_ops_oracle_unit_LDFLAGS) -o $@
422+
unit_tests-kokkos-dbg$(EXEEXT): $(unit_tests_kokkos_dbg_object) $(top_builddir)/libmesh_dbg.la
423+
@rm -f $@
424+
$(AM_V_GEN)$(LIBTOOL) --tag=CXX --mode=link $(KOKKOS_CXX) \
425+
$(LDFLAGS) $(AM_LDFLAGS) $(KOKKOS_LDFLAGS) -o $@ \
426+
$(unit_tests_kokkos_dbg_object) \
427+
$(top_builddir)/libmesh_dbg.la $(KOKKOS_LIBS) $(libmesh_optional_LIBS) $(LIBS)
428+
429+
unit_tests-kokkos-opt$(EXEEXT): $(unit_tests_kokkos_opt_object) $(top_builddir)/libmesh_opt.la
430+
@rm -f $@
431+
$(AM_V_GEN)$(LIBTOOL) --tag=CXX --mode=link $(KOKKOS_CXX) \
432+
$(LDFLAGS) $(AM_LDFLAGS) $(KOKKOS_LDFLAGS) -o $@ \
433+
$(unit_tests_kokkos_opt_object) \
434+
$(top_builddir)/libmesh_opt.la $(KOKKOS_LIBS) $(libmesh_optional_LIBS) $(LIBS)
435+
436+
-include $(kokkos_unit_test_depfiles)
437+
endif
404438

405439
CLEANFILES = cube_mesh.xda \
406440
slit_mesh.xda \
@@ -483,7 +517,8 @@ CLEANFILES = cube_mesh.xda \
483517
write_exodus_TRI6.e \
484518
write_exodus_TRI7.e \
485519
write_exodus_TRISHELL3.e \
486-
smoother.out
520+
smoother.out \
521+
$(kokkos_unit_test_cleanfiles)
487522

488523
# need to link any data files for VPATH builds
489524
if LIBMESH_VPATH_BUILD

tests/numerics/kokkos_tensor_ops_oracle_test.K renamed to tests/driver_kokkos.K

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
#include "libmesh/libmesh_config.h"
2-
#include "kokkos_tensor_ops_oracle_runners.h"
2+
#include "numerics/kokkos_tensor_ops_oracle_runners.h"
3+
#include "numerics/kokkos_vector_ops_oracle_runners.h"
4+
5+
#include <cstdio>
36

47
int
58
main(int argc, char ** argv)
69
{
710
Kokkos::initialize(argc, argv);
811
libMesh::LibMeshInit init(argc, argv);
912

10-
const int total_fail = libMeshTest::KokkosTensorOracle::run_all_oracles();
13+
int total_fail = 0;
14+
total_fail += libMeshTest::KokkosVectorOracle::run_all_oracles();
15+
total_fail += libMeshTest::KokkosTensorOracle::run_all_oracles();
1116

1217
Kokkos::finalize();
1318

tests/numerics/kokkos_vector_ops_oracle_test.K

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)