Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
19b1a67
Add Kokkos numerics core support
rochi00 May 6, 2026
37c9464
Fix Kokkos backend device and link support
rochi00 May 6, 2026
1d82eb8
Add Kokkos numerics oracle tests
rochi00 May 6, 2026
2ddeb11
Regenerate configure and Makefile.in files
rochi00 May 6, 2026
a326237
Add Kokkos FE implementation headers
rochi00 May 5, 2026
bebe8b7
Add Kokkos FE oracle test suite
rochi00 May 5, 2026
4cc3a11
Fix installed Kokkos FE header support
rochi00 May 6, 2026
9b1aa45
Export enum_fe_elem_class header
rochi00 May 6, 2026
c9dab84
Add Kokkos configuration and device plumbing
rochi00 May 8, 2026
3d8327b
Make vector and tensor value types device-usable
rochi00 May 8, 2026
ad6101f
Add Kokkos numerics storage and operator headers
rochi00 May 8, 2026
de66cbd
Add Kokkos numerics oracle test infrastructure
rochi00 May 8, 2026
acb22ee
Add Kokkos vector and tensor oracle tests
rochi00 May 8, 2026
63d0098
Regenerate configure and Makefile.in files
rochi00 May 8, 2026
7daa2e6
Include method CXX flags in pkg-config cflags
rochi00 May 11, 2026
57b4840
Run tensor foundation oracle on device
rochi00 May 11, 2026
93fee21
Make Point constructors device-callable
rochi00 May 11, 2026
77d0333
Inline tensor equality into constrained operators
rochi00 May 12, 2026
d26c43a
Differentiate leading tensor determinant helper
rochi00 May 12, 2026
ac897f2
Inline vector equality and remove contract shim
rochi00 May 12, 2026
e83887c
Hide tensor helper API and share in-place Kokkos ops
rochi00 May 12, 2026
b4d1336
Make remaining tensor helpers internal-only
rochi00 May 12, 2026
ee53d8b
Reduce Kokkos algebra wrapper layers
rochi00 May 12, 2026
b93e873
Update vector oracle to use Kokkos ref operators
rochi00 May 12, 2026
c8427b1
Rename tensor combination kernel
rochi00 May 12, 2026
37230df
Forward libMesh error macros into device code
rochi00 May 12, 2026
1b773ea
Probe Kokkos toolchain configuration
rochi00 May 12, 2026
2ca983d
Regenerate configure and tests Makefile.in
rochi00 May 12, 2026
3a89c4c
Force C++ mode for Kokkos configure probe
rochi00 May 12, 2026
e6ddbe6
Add Kokkos FE implementation headers
rochi00 May 5, 2026
c21018b
Add Kokkos FE oracle test suite
rochi00 May 5, 2026
5ebe357
Fix installed Kokkos FE header support
rochi00 May 6, 2026
0f30e7b
Export enum_fe_elem_class header
rochi00 May 6, 2026
f7fdf89
Share FE kernels and reference traits with Kokkos FE
rochi00 May 12, 2026
2ffc6ca
Share Kokkos FE shape dispatch with oracle tests
rochi00 May 12, 2026
5d30593
Share FE reference traits across host and Kokkos
rochi00 May 13, 2026
befa74f
Add native Kokkos Hilbert system path
rochi00 May 14, 2026
11d632e
Refine Kokkos Hilbert assembly storage path
rochi00 May 17, 2026
9d39177
Merge origin/kokkos-fe-refactor
rochi00 May 17, 2026
ffc51d0
Refine Kokkos Hilbert direct PETSc storage
rochi00 May 19, 2026
55102af
Fix libMesh Kokkos autotools CUDA wiring
rochi00 May 19, 2026
a8b02f9
Use Kokkos compiler for Kokkos-enabled builds
rochi00 May 19, 2026
e503260
Move Kokkos compiler selection into configure
rochi00 May 19, 2026
f5959ea
Initialize AM_CXXFLAGS for Kokkos build flags
rochi00 May 19, 2026
24b2525
Require nvcc_wrapper for CUDA Kokkos builds
rochi00 May 19, 2026
0083a70
Preserve MPI link flags for Kokkos wrapper builds
rochi00 May 20, 2026
4203587
Teach nvcc_wrapper the MPI host compiler
rochi00 May 20, 2026
46b89c0
Shim nvcc_wrapper for automake deps
rochi00 May 20, 2026
4392154
Use absolute path for nvcc_wrapper shim
rochi00 May 20, 2026
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
43 changes: 43 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ SUBDIRS = include #src

AUTOMAKE_OPTIONS = subdir-objects
ACLOCAL_AMFLAGS = -I m4 -I m4/autoconf-submodule
AM_CXXFLAGS = $(libmesh_CXXFLAGS)
AM_CFLAGS = $(libmesh_CFLAGS)
AM_LDFLAGS = $(libmesh_LDFLAGS) $(libmesh_contrib_LDFLAGS)

Expand Down Expand Up @@ -43,6 +44,26 @@ AM_CPPFLAGS = -DLIBMESH_IS_COMPILING_ITSELF \
$(libmesh_contrib_INCLUDES) \
$(libmesh_optional_INCLUDES) \
-I$(top_builddir)/include # required for libmesh_version.h
AM_CPPFLAGS += $(LIBMESH_KOKKOS_BUILD_CPPFLAGS)
AM_CXXFLAGS += $(LIBMESH_KOKKOS_BUILD_CXXFLAGS)
AM_LDFLAGS += $(LIBMESH_KOKKOS_BUILD_LDFLAGS)

SUFFIXES = .C .K .lo .o .obj

if LIBMESH_ENABLE_KOKKOS
.K.o:
$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS) \
-c $< -o $@

.K.lo:
$(LIBTOOL) $(AM_V_lt) --tag=CXX --mode=compile $(CXX) \
$(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS) \
-c $< -o $@
endif

LIBS = $(libmesh_optional_LIBS) $(libmesh_precision_LIBS)

Expand Down Expand Up @@ -468,6 +489,28 @@ calculator_dbg_CPPFLAGS = $(CPPFLAGS_DBG) $(AM_CPPFLAGS)
calculator_dbg_CXXFLAGS = $(CXXFLAGS_DBG)
calculator_dbg_LDADD = libmesh_dbg.la

# hilbert_kokkos_benchmark
opt_programs += hilbert_kokkos_benchmark-opt
hilbert_kokkos_benchmark_opt_SOURCES = src/apps/hilbert_kokkos_benchmark.C
hilbert_kokkos_benchmark_opt_SOURCES += src/apps/L2system.C src/apps/L2system.h
hilbert_kokkos_benchmark_opt_CPPFLAGS = $(CPPFLAGS_OPT) $(AM_CPPFLAGS)
hilbert_kokkos_benchmark_opt_CXXFLAGS = $(CXXFLAGS_OPT)
hilbert_kokkos_benchmark_opt_LDADD = libmesh_opt.la

devel_programs += hilbert_kokkos_benchmark-devel
hilbert_kokkos_benchmark_devel_SOURCES = src/apps/hilbert_kokkos_benchmark.C
hilbert_kokkos_benchmark_devel_SOURCES += src/apps/L2system.C src/apps/L2system.h
hilbert_kokkos_benchmark_devel_CPPFLAGS = $(CPPFLAGS_DEVEL) $(AM_CPPFLAGS)
hilbert_kokkos_benchmark_devel_CXXFLAGS = $(CXXFLAGS_DEVEL)
hilbert_kokkos_benchmark_devel_LDADD = libmesh_devel.la

dbg_programs += hilbert_kokkos_benchmark-dbg
hilbert_kokkos_benchmark_dbg_SOURCES = src/apps/hilbert_kokkos_benchmark.C
hilbert_kokkos_benchmark_dbg_SOURCES += src/apps/L2system.C src/apps/L2system.h
hilbert_kokkos_benchmark_dbg_CPPFLAGS = $(CPPFLAGS_DBG) $(AM_CPPFLAGS)
hilbert_kokkos_benchmark_dbg_CXXFLAGS = $(CXXFLAGS_DBG)
hilbert_kokkos_benchmark_dbg_LDADD = libmesh_dbg.la

# compare
opt_programs += compare-opt
compare_opt_SOURCES = src/apps/compare.C
Expand Down
414 changes: 346 additions & 68 deletions Makefile.in

Large diffs are not rendered by default.

44 changes: 44 additions & 0 deletions build-aux/libmesh_nvcc_wrapper
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#!/usr/bin/env bash

# Wrapper around Kokkos' nvcc_wrapper to smooth over Automake dependency
# tracking flags that nvcc_wrapper does not fully understand.
#
# In particular:
# - Automake commonly passes -MP, which is meaningful to GCC dependency
# generation but ends up leaking to the host compiler without -M/-MM through
# nvcc_wrapper's split dependency path.
# - -MQ is the quoted-target form of -MT; nvcc_wrapper only understands -MT.

set -euo pipefail

if [[ $# -lt 1 ]]; then
echo "Usage: $0 REAL_NVCC_WRAPPER [ARGS...]" >&2
exit 2
fi

real_nvcc_wrapper=$1
shift

forwarded_args=()

while [[ $# -gt 0 ]]; do
case "$1" in
-MP)
shift
;;
-MQ)
if [[ $# -lt 2 ]]; then
echo "$0: -MQ requires an argument" >&2
exit 2
fi
forwarded_args+=(-MT "$2")
shift 2
;;
*)
forwarded_args+=("$1")
shift
;;
esac
done

exec "$real_nvcc_wrapper" "${forwarded_args[@]}"
Loading