ww3-gpu Device Math Data Flow

ww3-gpu Device Math Data Flow A data-flow diagram generated by Archify. 01 / Call 02 / Route 03 / Library 04 / Bits 05 / Verification Kokkos kernel · expf logf powf sincosf · 01 / Call · per sea point Kokkos kernel expf logf powf sincosf per sea point ww::dm · libm_device.hpp · 02 / Route · host or device ww::dm libm_device.hpp host or device gen_tables · reads host libmvec · 03 / Library · WW_KOKKOS_LIBM gen_tables reads host libmvec WW_KOKKOS_LIBM Kokkos::exp etc. · host branch, glibc · 03 / Library · CPU unchanged Kokkos::exp etc. host branch, glibc CPU unchanged ww::libm · glibc, libmvec copies · 03 / Library · device branch ww::libm glibc, libmvec copies device branch CUDA libdevice · LIBM=OFF only · 04 / Bits · other bits CUDA libdevice LIBM=OFF only other bits CPU result · Fortran's glibc bits · 04 / Bits · regtested CPU result Fortran's glibc bits regtested GPU result · glibc algorithms · 04 / Bits · not run GPU result glibc algorithms not run libm_bits, host · 2^32 inputs, 0 differ · 05 / Verification · done (v) libm_bits, host 2^32 inputs, 0 differ done (v) device_check.cu · not run, needs owner · 05 / Verification · pending device_check.cu not run, needs owner pending libm call IF_ON_HOST IF_ON_DEVICE LIBM=OFF ww_libm_tables.hpp glibc same ops a few ULP glibc reference 2^32, 0 differ vs host glibc ⚠ not run Legend primary data policy / PII async batch data store data flow