Skip to content
Merged
Show file tree
Hide file tree
Changes from 64 commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
6023bab
Switch compiler to clang (not portable)
Jun 25, 2025
857b77a
test add_num
Jun 26, 2025
909af6b
compile with llvm tools
Jun 27, 2025
ad100b2
not working linking
Jul 1, 2025
ba3b719
not fixed
Jul 1, 2025
b71448f
Update ex1-volume.h
Jul 1, 2025
d47fb3d
update
Jul 1, 2025
24b03c2
remove global path
Jul 1, 2025
b089501
changes
Jul 7, 2025
111c301
changes 2
Jul 7, 2025
86b2eb5
crate works
Jul 9, 2025
0b4c4bf
basic gpu rust compilation
Jul 14, 2025
0c427df
still not working
Jul 15, 2025
db640a8
rust source roots basic support
Jul 15, 2025
142f1c0
nvrtc/clang selection
Jul 16, 2025
151965a
cleanup
Jul 16, 2025
789a422
update example (not working)
Jul 18, 2025
8b9b002
add rust example
Jul 21, 2025
40f43ad
Merge branch 'main' into allen-rust-jit
SirAlienTheGreat Jul 21, 2025
3230820
Merge pull request #1 from SirAlienTheGreat/allen-rust-jit
SirAlienTheGreat Jul 21, 2025
a6c33a2
fix merge issue
Jul 21, 2025
321e426
delete temp files
Jul 22, 2025
19ab554
cleanup
Jul 22, 2025
c4fac45
rust qfunc 2d array (needs doc)
Jul 22, 2025
07beb34
cleanup
Jul 22, 2025
10b8f19
more cleanup
Jul 23, 2025
824d903
downgrade back to c++11
Jul 23, 2025
5a32ce8
format
Jul 23, 2025
9a37183
final draft cleanup
Jul 23, 2025
bc6eb8f
formatting + CUDA_CLANG -> GPU_CLANG
Jul 23, 2025
e7a4165
Update cuda CEED_QFUNCTION_RUST
SirAlienTheGreat Jul 23, 2025
2d49fec
fix python
SirAlienTheGreat Jul 25, 2025
0626555
fix python and format
SirAlienTheGreat Jul 25, 2025
27426f6
format fr
SirAlienTheGreat Jul 25, 2025
012797b
update comment
SirAlienTheGreat Jul 25, 2025
5a808fe
fix python fr
SirAlienTheGreat Jul 25, 2025
1e54ea9
Apply error suggestions from code review
SirAlienTheGreat Jul 28, 2025
7d05196
update errors to libceed format
Jul 28, 2025
952d903
Apply suggestions from code review
SirAlienTheGreat Jul 28, 2025
f89960a
add optimization flag
Jul 28, 2025
b9af985
remove line breaks
SirAlienTheGreat Jul 28, 2025
74794ea
Apply suggestions from code review
SirAlienTheGreat Jul 28, 2025
a4de9fb
avoid python in macro better
Jul 28, 2025
df27cf8
Merge branch 'main' of github.com:SirAlienTheGreat/libCEED
Jul 28, 2025
165f8cc
add rust example
Jul 29, 2025
2ceed77
format
Jul 29, 2025
e8cdf68
Apply suggestions from code review
SirAlienTheGreat Jul 29, 2025
195d44f
move rust example to own directory
Jul 29, 2025
3af1088
Merge branch 'main' of github.com:SirAlienTheGreat/libCEED
Jul 29, 2025
a9d0164
Simplify python exclusion logic
SirAlienTheGreat Jul 29, 2025
d51415b
re-fix python
Jul 29, 2025
d8a2093
Update python/build_ceed_cffi.py
SirAlienTheGreat Jul 29, 2025
96e762f
change names and simplify makefile
Jul 30, 2025
4ea74b2
Revert "change names and simplify makefile"
Jul 30, 2025
91a4609
Apply Jeremy's diff
Jul 30, 2025
87760ac
Simplify CeedCallSystem
Jul 30, 2025
ae4cbba
use rust-install llvm tools
Jul 30, 2025
2e43fc9
add gitignores
Jul 30, 2025
46392e4
update paths
Jul 31, 2025
b655e22
example absolute path
Jul 31, 2025
d147647
fix comments
Jul 31, 2025
da3ab3c
apply partial diff
SirAlienTheGreat Jul 31, 2025
8c8bef2
add newline
Jul 31, 2025
af83de8
add makefile
Jul 31, 2025
cd5d2b9
Update examples/rust-qfunctions/Makefile
SirAlienTheGreat Jul 31, 2025
b2d0003
update makefile
Jul 31, 2025
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
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ doc/sphinx/build/
# Example docs automatically copied from source tree
doc/sphinx/source/examples/

# Clang GPU temp files
temp_*

# Output files, videos, and compressed archives should not be added accidentally
*.avi
*.bin
Expand Down
51 changes: 51 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,57 @@ noether-cpu:
# - touch .SUCCESS


# ----------------------------------------------------------------------------------------
# Rust + CUDA
# ----------------------------------------------------------------------------------------
noether-rust-qfunctions:
stage: test:gpu-and-float
tags:
- cuda
interruptible: true
before_script:
# Environment
- export COVERAGE=1 CC=gcc CXX=g++ FC=gfortran NVCC=nvcc GPU_CLANG=1
- export NPROC_POOL=4
- echo "-------------- nproc ---------------" && NPROC_CPU=$(nproc) && NPROC_GPU=$(($(nproc)<8?$(nproc):8)) && echo "NPROC_CPU" $NPROC_CPU && echo "NPROC_GPU" $NPROC_GPU
- echo "-------------- CC ------------------" && $CC --version
- echo "-------------- CXX -----------------" && $CXX --version
- echo "-------------- FC ------------------" && $FC --version
- echo "-------------- NVCC ----------------" && $NVCC --version
- echo "-------------- Rustc ---------------" && rustc --version
- echo "-------------- Clang++ -------------" && clang++ --version
- echo "-------------- GCOV ----------------" && gcov --version
script:
- rm -f .SUCCESS
# libCEED
- make configure OPT='-O -march=native -ffp-contract=fast' CUDA_DIR=/usr/local/cuda-12.9
- echo "-------------- libCEED -------------" && make info
- make clean
- make -k -j$NPROC_CPU -l$NPROC_CPU
# -- libCEED only tests
- echo "-------------- Rust QFunction tests -"
# Note: PETSC_DIR is set by default in GitLab runner env, unsetting to isolate core tests
- export PETSC_DIR= PETSC_ARCH=
- make -k -j$((NPROC_GPU / NPROC_POOL)) JUNIT_BATCH="rust-qfunction" junit realsearch=rust-qfunction
# Report status
- touch .SUCCESS
after_script:
- |
if [ -f .SUCCESS ]; then
lcov --directory . --capture --output-file coverage.info --ignore-errors source,mismatch;
bash <(curl -s https://codecov.io/bash) -f coverage.info -t ${CODECOV_ACCESS_TOKEN} -F interface;
bash <(curl -s https://codecov.io/bash) -f coverage.info -t ${CODECOV_ACCESS_TOKEN} -F gallery;
bash <(curl -s https://codecov.io/bash) -f coverage.info -t ${CODECOV_ACCESS_TOKEN} -F backends;
bash <(curl -s https://codecov.io/bash) -f coverage.info -t ${CODECOV_ACCESS_TOKEN} -F tests;
bash <(curl -s https://codecov.io/bash) -f coverage.info -t ${CODECOV_ACCESS_TOKEN} -F examples;
fi
artifacts:
paths:
- build/*.junit
reports:
junit: build/*.junit


# ----------------------------------------------------------------------------------------
# CUDA backends
# ----------------------------------------------------------------------------------------
Expand Down
19 changes: 10 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
[workspace]
members = [
"rust/libceed",
"rust/libceed-sys",
"examples/rust/ex1-volume",
"examples/rust/ex1-volume-vector",
"examples/rust/ex2-surface",
"examples/rust/ex2-surface-vector",
"examples/rust/ex3-volume",
"examples/rust/ex3-volume-vector",
"examples/rust/mesh",
"rust/libceed",
"rust/libceed-sys",
"examples/rust/ex1-volume",
"examples/rust/ex1-volume-vector",
"examples/rust/ex2-surface",
"examples/rust/ex2-surface-vector",
"examples/rust/ex3-volume",
"examples/rust/ex3-volume-vector",
"examples/rust/mesh",
]
exclude = ["examples/rust-qfunctions/ex1-volume-rs"]
22 changes: 17 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -349,6 +349,10 @@ mfemexamples := $(mfemexamples.cpp:examples/mfem/%.cpp=$(OBJDIR)/mfem-%)
# Nek5K Examples
nekexamples := $(OBJDIR)/nek-bps

# Rust QFunction Examples
rustqfunctions.c := $(sort $(wildcard examples/rust-qfunctions/*.c))
rustqfunctionsexamples := $(rustqfunctions.c:examples/rust-qfunctions/%.c=$(OBJDIR)/rustqfunctions-%)

# PETSc Examples
petscexamples.c := $(wildcard examples/petsc/*.c)
petscexamples := $(petscexamples.c:examples/petsc/%.c=$(OBJDIR)/petsc-%)
Expand Down Expand Up @@ -733,6 +737,11 @@ $(OBJDIR)/nek-bps : examples/nek/bps/bps.usr examples/nek/nek-examples.sh $(libc
mv examples/nek/build/bps $(OBJDIR)/bps
cp examples/nek/nek-examples.sh $(OBJDIR)/nek-bps

# Rust QFunctions
$(OBJDIR)/rustqfunctions-% : examples/rust-qfunctions/%.c $(libceed) | $$(@D)/.DIR
+$(MAKE) -C examples/rust-qfunctions CEED_DIR=`pwd`
cp examples/rust-qfunctions/$* $@

# PETSc
# Several executables have common utilities, but we can't build the utilities
# from separate submake invocations because they'll compete with each
Expand Down Expand Up @@ -763,19 +772,22 @@ $(OBJDIR)/solids-% : examples/solids/%.c examples/solids/%.h \
PETSC_DIR="$(abspath $(PETSC_DIR))" OPT="$(OPT)" $*
cp examples/solids/$* $@

examples : $(allexamples)
ceedexamples : $(examples)
nekexamples : $(nekexamples)
mfemexamples : $(mfemexamples)
examples : $(allexamples)
ceedexamples : $(examples)
nekexamples : $(nekexamples)
mfemexamples : $(mfemexamples)
petscexamples : $(petscexamples)

rustqfunctionsexamples : $(rustqfunctionsexamples)

external_examples := \
$(if $(MFEM_DIR),$(mfemexamples)) \
$(if $(PETSC_DIR),$(petscexamples)) \
$(if $(NEK5K_DIR),$(nekexamples)) \
$(if $(DEAL_II_DIR),$(dealiiexamples)) \
$(if $(PETSC_DIR),$(fluidsexamples)) \
$(if $(PETSC_DIR),$(solidsexamples))
$(if $(PETSC_DIR),$(solidsexamples)) \
$(rustqfunctionsexamples)

allexamples = $(examples) $(external_examples)

Expand Down
Loading