You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Work around CUDA 12 GCC 12 BF16 headers in realtime builds (#705)
CUDA-QX builds CUDA-Q's realtime library from the revision pinned in
.cudaq_version. A CUDA-Q devcontainer update started honoring its GCC 12
CXX selection through CUDAHOSTCXX. CUDA 12.6 nvcc then fails while
parsing GCC 12's AVX-512 BF16 intrinsic headers, before compiling CUDA-Q
realtime's host dispatcher.
Keep the compatibility workaround in CUDA-QX, which orchestrates these
dependency builds. Add a small shared helper that appends the two GCC
BF16 header guards only when nvcc is CUDA 12, the host is x86-64, and
the selected C++ compiler is GCC 12. CUDA-Q realtime does not use those
intrinsics, so this prevents nvcc from parsing unsupported builtin
declarations without changing CUDA-Q source or replacing the selected
host compiler.
Use that helper for the QEC CI dependency build, the All Libs release
artifact build, and the documented realtime rebuild script used by the
CUDA-Q build action and install helper. Include the helper in the CUDA-Q
build-cache key so a compatibility change cannot reuse a stale realtime
build. The release Dockerfile only overlays those artifacts, so covering
the release build makes the published CUDA 12.6 image complete; normal
CUDA-QX source builds in that image use the bundled realtime
installation and do not rebuild it.
Verified with shell syntax checks and a container test of all helper
gates. The exact CUDA-Q revision pinned by CUDA-QX fails with nine BF16
builtin errors under CUDA 12.6/GCC 12.4 without the definitions and
compiles with them. A full CMake configure remains unavailable in PR695
because it has CMake 3.28 while the pinned CUDA-Q revision requires
CMake 4.
---------
Signed-off-by: Melody Ren <melodyr@nvidia.com>
0 commit comments