Skip to content

docs: KOKKOS_LIBM_ON_VS_OFF, the device libm option of a CUDA build - #194

Merged
h0ffmann merged 1 commit into
mainfrom
goal/eb10363f-5307-kokkos-libm-on-vs-off
Oct 18, 2026
Merged

h0ffmann merged 1 commit into
mainfrom
goal/eb10363f-5307-kokkos-libm-on-vs-off

Conversation

@h0ffmann

@h0ffmann h0ffmann commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

Before. The CMake option WW_KOKKOS_LIBM of a CUDA build has the default ON (device copies of glibc 2.44, WFIP-0006). The CUDA image of #192 sets it to OFF (libdevice, judged by tolerance per ADR-0014), because Ubuntu's libmvec.so.1 has no .symtab and gen_tables exits 3. No document compared the two values or said when the image can use ON.

After. docs/KOKKOS_LIBM_ON_VS_OFF.md compares ON and OFF (bits on the CPU and the GPU, verification, portability across CPUs, build requirements, speed, what ADR-0014 and WFIP-0006 say), lists what is incomplete with ON, evaluates three ways to make ON work in the image, and gives a Position: ON on the lab machine with the pinned Nix toolchain, OFF in the distributed image, GPU timings recorded both ways. One new check (v, this host): Ubuntu's libc6-dbg 2.43 debug file has __svml_spow_data, and the libmvec tables of Ubuntu 2.43 and Nix 2.44-25 are byte-identical. docs/GLOSSARY.md gains one row (stripped library / .symtab / debug file).

Goal eb10363f, from the owner's session. Related: #192 (the CUDA image). Nothing ran on a GPU.

Tested vale --config=.vale.ini on the two files (the steps of scripts/vale.sh): 0 errors, 0 warnings; every relative link of the new page resolves; no em dash; the readelf and byte comparison of section 7 run on this host

🤖 Generated with Claude Code

Goal eb10363f, from the owner's session. A decision record for the CMake
option WW_KOKKOS_LIBM: ON (device copies of glibc 2.44, WFIP-0006, the
library default) against OFF (libdevice, judged by tolerance per ADR-0014),
which the CUDA image of PR #192 uses because Ubuntu's libmvec has no
.symtab. It compares bits, verification, portability across CPUs, build
requirements and speed, lists what is incomplete with ON, and evaluates
three ways to make ON work in the image. The position: ON on the lab
machine with the Nix toolchain, OFF in the distributed image, timings both
ways. A check on this host shows Ubuntu's libc6-dbg file has the symbol
and Ubuntu 2.43's libmvec tables equal Nix 2.44's byte for byte.
GLOSSARY gains one row (stripped library / .symtab / debug file).

Tested: vale --config=.vale.ini on docs/KOKKOS_LIBM_ON_VS_OFF.md and docs/GLOSSARY.md (the steps of scripts/vale.sh): 0 errors, 0 warnings; every relative link of the new page resolves (ls of each target); no em dash; readelf and a byte comparison of the two libmvec.so.1 files run as section 7 of the page says; nothing ran on a GPU
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@h0ffmann
h0ffmann force-pushed the goal/eb10363f-5307-kokkos-libm-on-vs-off branch from 317e3de to 7e0dece Compare October 18, 2026 16:37
@h0ffmann
h0ffmann merged commit c04035e into main Oct 18, 2026
8 checks passed
h0ffmann added a commit that referenced this pull request Oct 18, 2026
Plan 003: #193 is merged; the CUDA Docker image of #192 builds with
WW_KOKKOS_LIBM=OFF, so it calls CUDA's libm and stays out of the first
GPU run; #194's KOKKOS_LIBM_ON_VS_OFF.md holds the owner's decision on
that option, and A3 records the value the run's build has. Plan 004: the
UFS NUOPC cap on production/GFS.v17 reads VA after W3WAVE, so its host
uses are listed and synced, and one coupled case runs with the VA
poison, as section 29 did for the ESMF cap.

Tested: nix shell nixpkgs#vale -c scripts/vale.sh on both plans, rc 0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@h0ffmann
h0ffmann deleted the goal/eb10363f-5307-kokkos-libm-on-vs-off branch October 18, 2026 20:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant