Package: clang
Version: 1:13.0-54
Severity: normal

Dear Maintainer,

The upstream versions of clang-13 and clang-14 fulfill the minimum
requirements to build HIP language programs, but contain a bug that
prevents them from functioning correctly when the HIP library is
installed in /usr.

This problem was fixed in upstream llvm, and the change is expected to
land in clang-15. The change is very minimal and only affects the HIP
language. It can be found here:
https://github.com/llvm/llvm-project/commit/6730b44480fcce18bfbbae0c46719250e9eae425

This problem is important to address to help the packaging of ROCm
proceed, as the Debian native package will install HIP into /usr.


To reproduce the problem:

# install HIP to /usr
https://gist.github.com/cgmb/edb7b790ab55681fb2ba5385ee02489b

# create a HIP language program
cat > example.cpp << 'EOF'
#include <hip/hip_runtime.h>

__global__ void square(int *array, int n) {
    int tid = blockIdx.x;
    if (tid < n)
        array[tid] = array[tid] * array[tid];
}
EOF
# compile it
clang++ \
  -v \
  -std=c++11 \
  --offload-arch=gfx908 \
  -mllvm -amdgpu-early-inline-all=true \
  -mllvm -amdgpu-function-calls=false \
  --hip-device-lib-path="/usr/lib/x86_64-linux-gnu/amdgcn/bitcode" \
  --rocm-path="/usr" \
  -fhip-new-launch-api \
  -D__HIP_PLATFORM_AMD__=1 -D__HIP_PLATFORM_HCC__=1 \
  -mf16c \
  -O3 -DNDEBUG \
  -x hip \
  -o example.o \
  -c example.cpp

# see output
Debian clang version 13.0.1-3+b2
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Found candidate GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Selected GCC installation: /usr/bin/../lib/gcc/x86_64-linux-gnu/11
Candidate multilib: .;@m64
Selected multilib: .;@m64
Found HIP installation: /usr, version 3.5.0
 "/usr/lib/llvm-13/bin/clang" -cc1 -triple amdgcn-amd-amdhsa -aux-triple 
x86_64-pc-linux-gnu -emit-obj --mrelax-relocations -disable-free 
-disable-llvm-verifier -discard-value-names -main-file-name example.cpp 
-mrelocation-model pic -pic-level 1 -fhalf-no-semantic-interposition 
-mframe-pointer=none -fno-rounding-math -aux-target-cpu x86-64 
-aux-target-feature +f16c -fcuda-is-device -mllvm -amdgpu-internalize-symbols 
-fcuda-allow-variadic-functions -fvisibility hidden 
-fapply-global-visibility-to-externs -mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/hip.bc -mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/ocml.bc -mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/ockl.bc -mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/oclc_daz_opt_off.bc 
-mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/oclc_unsafe_math_off.bc 
-mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/oclc_finite_only_off.bc 
-mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc 
-mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/oclc_wavefrontsize64_on.bc 
-mlink-builtin-bitcode 
/usr/lib/x86_64-linux-gnu/amdgcn/bitcode/oclc_isa_version_908.bc -target-cpu 
gfx908 -debugger-tuning=gdb -v -resource-dir /usr/lib/llvm-13/lib/clang/13.0.1 
-internal-isystem /usr/lib/llvm-13/lib/clang/13.0.1 -internal-isystem 
/usr/include -D __HIP_PLATFORM_AMD__=1 -D __HIP_PLATFORM_HCC__=1 -D NDEBUG 
-internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 
-internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11
 -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward 
-internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 
-internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11
 -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward 
-internal-isystem /usr/lib/llvm-13/lib/clang/13.0.1/include -internal-isystem 
/usr/local/include -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include 
-internal-externc-isystem /usr/include/x86_64-linux-gnu 
-internal-externc-isystem /include -internal-externc-isystem /usr/include 
-internal-isystem /usr/lib/llvm-13/lib/clang/13.0.1/include -internal-isystem 
/usr/local/include -internal-isystem 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include 
-internal-externc-isystem /usr/include/x86_64-linux-gnu 
-internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 
-std=c++11 -fdeprecated-macro -fno-autolink -fdebug-compilation-dir=/home/cgmb 
-ferror-limit 19 -fhip-new-launch-api -fgnuc-version=4.2.1 -fcxx-exceptions 
-fexceptions -fcolor-diagnostics -vectorize-loops -vectorize-slp -mllvm 
-amdgpu-early-inline-all=true -mllvm -amdgpu-function-calls=false 
-cuid=9b98635caacf7494 -fcuda-allow-variadic-functions -faddrsig 
-D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/example-4e3c77.o -x hip example.cpp
clang -cc1 version 13.0.1 based upon LLVM 13.0.1 default target 
x86_64-pc-linux-gnu
ignoring nonexistent directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring nonexistent directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/include"
ignoring duplicate directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11"
ignoring duplicate directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11"
ignoring duplicate directory 
"/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward"
ignoring duplicate directory "/usr/include"
ignoring duplicate directory "/usr/lib/llvm-13/lib/clang/13.0.1/include"
ignoring duplicate directory "/usr/local/include"
ignoring duplicate directory "/usr/include/x86_64-linux-gnu"
ignoring duplicate directory "/usr/include"
ignoring duplicate directory "/usr/local/include"
ignoring duplicate directory "/usr/lib/llvm-13/lib/clang/13.0.1/include"
ignoring duplicate directory "/usr/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/llvm-13/lib/clang/13.0.1
 /usr/include
 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11
 
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11
 /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward
 /usr/lib/llvm-13/lib/clang/13.0.1/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
End of search list.
In file included from example.cpp:1:
In file included from /usr/include/hip/hip_runtime.h:62:
In file included from /usr/include/hip/amd_detail/amd_hip_runtime.h:76:
/usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/cmath:45:15: 
fatal error: 'math.h' file not found
#include_next <math.h>
              ^~~~~~~~
1 error generated when compiling for gfx908.


When the upstream patch
https://github.com/llvm/llvm-project/commit/6730b44480fcce18bfbbae0c46719250e9eae425.patch
is applied, the system headers will no longer be set up in an incorrect
order, and the clang++ build command should succeed.

-- System Information:
Debian Release: bookworm/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 5.13.0-40-generic (SMP w/32 CPU threads)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=C, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: unable to detect

Versions of packages clang depends on:
ii  clang-13  1:13.0.1-3+b2

clang recommends no packages.

clang suggests no packages.

-- no debconf information

Reply via email to