mirror of
https://github.com/vosen/ZLUDA.git
synced 2025-07-19 02:06:32 +03:00
Fix linking of AMD device libraries
This commit is contained in:
@ -127,24 +127,27 @@ pub fn compile_bitcode(
|
|||||||
ptx_impl,
|
ptx_impl,
|
||||||
)?;
|
)?;
|
||||||
bitcode_data_set.add(&stdlib_bitcode_data)?;
|
bitcode_data_set.add(&stdlib_bitcode_data)?;
|
||||||
let lang_action_info = ActionInfo::new()?;
|
let linking_info = ActionInfo::new()?;
|
||||||
lang_action_info.set_isa_name(gcn_arch)?;
|
|
||||||
lang_action_info.set_language(amd_comgr_language_t::AMD_COMGR_LANGUAGE_LLVM_IR)?;
|
|
||||||
let with_device_libs = do_action(
|
|
||||||
&bitcode_data_set,
|
|
||||||
&lang_action_info,
|
|
||||||
amd_comgr_action_kind_t::AMD_COMGR_ACTION_COMPILE_SOURCE_WITH_DEVICE_LIBS_TO_BC,
|
|
||||||
)?;
|
|
||||||
let linked_data_set = do_action(
|
let linked_data_set = do_action(
|
||||||
&with_device_libs,
|
&bitcode_data_set,
|
||||||
&lang_action_info,
|
&linking_info,
|
||||||
amd_comgr_action_kind_t::AMD_COMGR_ACTION_LINK_BC_TO_BC,
|
amd_comgr_action_kind_t::AMD_COMGR_ACTION_LINK_BC_TO_BC,
|
||||||
)?;
|
)?;
|
||||||
|
let link_with_device_libs_info = ActionInfo::new()?;
|
||||||
|
link_with_device_libs_info.set_isa_name(gcn_arch)?;
|
||||||
|
link_with_device_libs_info.set_language(amd_comgr_language_t::AMD_COMGR_LANGUAGE_LLVM_IR)?;
|
||||||
|
// This makes no sense, but it makes ockl linking work
|
||||||
|
link_with_device_libs_info.set_options([c"-Xclang", c"-mno-link-builtin-bitcode-postopt"].into_iter())?;
|
||||||
|
let with_device_libs = do_action(
|
||||||
|
&linked_data_set,
|
||||||
|
&link_with_device_libs_info,
|
||||||
|
amd_comgr_action_kind_t::AMD_COMGR_ACTION_COMPILE_SOURCE_WITH_DEVICE_LIBS_TO_BC,
|
||||||
|
)?;
|
||||||
let compile_action_info = ActionInfo::new()?;
|
let compile_action_info = ActionInfo::new()?;
|
||||||
compile_action_info.set_isa_name(gcn_arch)?;
|
compile_action_info.set_isa_name(gcn_arch)?;
|
||||||
compile_action_info.set_options(iter::once(c"-O3"))?;
|
compile_action_info.set_options(iter::once(c"-O3"))?;
|
||||||
let reloc_data_set = do_action(
|
let reloc_data_set = do_action(
|
||||||
&linked_data_set,
|
&with_device_libs,
|
||||||
&compile_action_info,
|
&compile_action_info,
|
||||||
amd_comgr_action_kind_t::AMD_COMGR_ACTION_CODEGEN_BC_TO_RELOCATABLE,
|
amd_comgr_action_kind_t::AMD_COMGR_ACTION_CODEGEN_BC_TO_RELOCATABLE,
|
||||||
)?;
|
)?;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// Every time this file changes it must te rebuilt, you need llvm-17:
|
// Every time this file changes it must te rebuilt, you need `rocm-llvm-dev` and `llvm-17`:
|
||||||
// /opt/rocm/llvm/bin/clang -Wall -Wextra -Wsign-compare -Wconversion -x hip zluda_ptx_impl.cpp -nogpulib -O3 -mno-wavefrontsize64 -o zluda_ptx_impl.bc -emit-llvm -c --offload-device-only --offload-arch=gfx1010 && llvm-dis-17 zluda_ptx_impl.bc -o - | sed '/@llvm.used/d' | sed '/wchar_size/d' | sed '/llvm.module.flags/d' | sed 's/define hidden/define linkonce_odr/g' | sed 's/\"target-cpu\"=\"gfx1010\"//g' | sed -E 's/\"target-features\"=\"[^\"]+\"//g' | llvm-as-17 - -o zluda_ptx_impl.bc && llvm-dis-17 zluda_ptx_impl.bc
|
// /opt/rocm/llvm/bin/clang -Wall -Wextra -Wsign-compare -Wconversion -x hip zluda_ptx_impl.cpp -nogpulib -O3 -mno-wavefrontsize64 -o zluda_ptx_impl.bc -emit-llvm -c --offload-device-only --offload-arch=gfx1010 && /opt/rocm/llvm/bin/llvm-dis zluda_ptx_impl.bc -o - | sed '/@llvm.used/d' | sed '/wchar_size/d' | sed '/llvm.module.flags/d' | sed 's/define hidden/define linkonce_odr/g' | sed 's/\"target-cpu\"=\"gfx1010\"//g' | sed -E 's/\"target-features\"=\"[^\"]+\"//g' | sed 's/ nneg / /g' | sed 's/ disjoint / /g' | llvm-as-17 - -o zluda_ptx_impl.bc && /opt/rocm/llvm/bin/llvm-dis zluda_ptx_impl.bc
|
||||||
|
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
Reference in New Issue
Block a user