Skip to content

OpenACC kernel names truncated for long source paths, causing duplicate device functions (NVVM_ERROR_COMPILATION) #99

Description

@joshkamm

Summary

With the cuBLAS/cuSolver header issue (#98) out of the picture, the GPU build still fails on the Perlmutter login node — integrals.cpp dies during OpenACC device code generation:

nvvmCompileProgram: failed with error 9: NVVM_ERROR_COMPILATION
nvnvvmd: error: /tmp/nvacc....gpu (39808, 24): parse invalid redefinition of function
  '_124_..._src_integrals_integrals_cpp___nv__Z18compute_4c_ol_onediiPiPfiiPdS1_RSt6vectorIS2_IdSaIdEESaIS4_EEiiiiiiiiiiS1_S1_PS1_S8_S8_S8_S1_'

The redefined symbol demangles to compute_4c_ol_oned(...) (integrals.cpp:7156) — a long-standing function (June 2024, 45c984f), not recent code.

Key facts

Environment

  • Perlmutter login node (no GPU visible); NVHPC 25.5 (nvc++ 25.5-0), CUDA math_libs 12.9
  • SlaterGPU git-main, USE_ACC=ON, pixi source build (pixi-build-cmake)

Suggested diagnostics

  1. Compile integrals.cpp alone with an explicit target, e.g. -gpu=cc80, on the login node — if it passes, the default-target-set hypothesis is confirmed and a pinned -gpu= flag (or building on a GPU node) is the answer.
  2. Try the nvhpc/24.11 module available on Perlmutter with the same TU.
  3. Compare against a compute node / athena (GPU visible, 25.5) to separate compiler version from device visibility.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions