ROCm / ROCR-Runtime

ROCm Platform Runtime: ROCr a HPC market enhanced HSA based runtime
https://rocm.docs.amd.com/projects/ROCR-Runtime/en/latest/
Other
205 stars 97 forks source link

Issues with building rocm 5.7.x with `ld.lld: error: undefined symbol: __llvm_amdgcn_image_load_1darray_v4f32_i32` #169

Open pelahi opened 8 months ago

pelahi commented 8 months ago

I am attempting to build rocm from source using a script (see https://github.com/PawseySC/rocm-from-source/tree/generalisation-compilers) and encountering issues building the Runtime package.

Note that some of the issues initial encountered are discussed in https://github.com/RadeonOpenCompute/ROCR-Runtime/issues/166. The solution for this issue was to patch cmake (specifically adding https://github.com/RadeonOpenCompute/ROCm-Device-Libs/blob/amd-stg-open/cmake/OCL.cmake#L43 to unconditionally use -mcode-object-version=none).

I am getting undefined symbol __llvm_amdgcn_image_load_* in builds of 5.7.0 and 5.7.1. The errors seen are:

BUILDING bitcode for ocl_blit_object_gfx700...
cd /scratch/pawsey0001/spack/rocm-build-gcc-nolibc/rocm-5.7.0-gcc/ROCR-Runtime/src/build/image/blit_src && /software/setonix/2023.08/pawsey/software/rocm/gcc/12.2.0/rocm-5.7.0rev1/llvm/bin/clang-17 -O2 -x cl -Xclang -finclude-default-header -cl-denorms-are-zero -cl-std=CL2.0 -target amdgcn-amd-amdhsa -mcpu=gfx700 -mcode-object-version=4 -o ocl_blit_object_gfx700 /scratch/pawsey0001/spack/rocm-build-gcc-nolibc/rocm-5.7.0-gcc/ROCR-Runtime/src/image/blit_src/imageblit_kernels.cl
ld.lld: error: undefined symbol: __llvm_amdgcn_image_load_2darray_v4f32_i32
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image_float)
>>> referenced 9 more times

ld.lld: error: undefined symbol: __llvm_amdgcn_image_load_1darray_v4f32_i32
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image_float)
>>> referenced 9 more times

ld.lld: error: undefined symbol: __llvm_amdgcn_image_load_3d_v4f32_i32
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image_float)
>>> referenced 9 more times

ld.lld: error: undefined symbol: __llvm_amdgcn_image_load_2d_v4f32_i32
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image_float)
>>> referenced 9 more times

ld.lld: error: undefined symbol: __llvm_amdgcn_image_load_1d_v4f32_i32
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image)
>>> referenced by /tmp/imageblit_kernels-55e2a1.o:(read_image_float)
>>> referenced 11 more times

In the related ticket there were several comments about it being possible that there isn't a consistent build using the 5.7.x tag: