Nvptx: Use llbc as default linker
This commit is contained in:
parent
b889870082
commit
746acc47a1
9 changed files with 9 additions and 16 deletions
|
|
@ -2956,11 +2956,6 @@ impl Target {
|
|||
matches!(self.linker_flavor, LinkerFlavor::Bpf),
|
||||
"`linker_flavor` must be `bpf` if and only if `arch` is `bpf`"
|
||||
);
|
||||
check_eq!(
|
||||
self.arch == Arch::Nvptx64,
|
||||
matches!(self.linker_flavor, LinkerFlavor::Ptx),
|
||||
"`linker_flavor` must be `ptc` if and only if `arch` is `nvptx64`"
|
||||
);
|
||||
|
||||
for args in [
|
||||
&self.pre_link_args,
|
||||
|
|
|
|||
|
|
@ -19,9 +19,7 @@ pub(crate) fn target() -> Target {
|
|||
options: TargetOptions {
|
||||
os: Os::Cuda,
|
||||
vendor: "nvidia".into(),
|
||||
linker_flavor: LinkerFlavor::Ptx,
|
||||
// The linker can be installed from `crates.io`.
|
||||
linker: Some("rust-ptx-linker".into()),
|
||||
linker_flavor: LinkerFlavor::Llbc,
|
||||
|
||||
// With `ptx-linker` approach, it can be later overridden via link flags.
|
||||
cpu: "sm_30".into(),
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ platform.
|
|||
|
||||
## Requirements
|
||||
|
||||
This target is `no_std` and will typically be built with crate-type `cdylib` and `-C linker-flavor=llbc`, which generates PTX.
|
||||
This target is `no_std`, and uses the `llvm-bitcode-linker` by default. For PTX output, build with crate-type `cdylib`.
|
||||
The necessary components for this workflow are:
|
||||
|
||||
- `rustup toolchain add nightly`
|
||||
|
|
@ -38,7 +38,7 @@ While the compiler accepts `#[target_feature(enable = "ptx80", enable = "sm_89")
|
|||
A `no_std` crate containing one or more functions with `extern "ptx-kernel"` can be compiled to PTX using a command like the following.
|
||||
|
||||
```console
|
||||
$ RUSTFLAGS='-Ctarget-cpu=sm_89' cargo +nightly rustc --target=nvptx64-nvidia-cuda -Zbuild-std=core --crate-type=cdylib -- -Clinker-flavor=llbc -Zunstable-options
|
||||
$ RUSTFLAGS='-Ctarget-cpu=sm_89' cargo +nightly rustc --target=nvptx64-nvidia-cuda -Zbuild-std=core --crate-type=cdylib
|
||||
```
|
||||
|
||||
Intrinsics in `core::arch::nvptx` may use `#[cfg(target_feature = "...")]`, thus it's necessary to use `-Zbuild-std=core` with appropriate `RUSTFLAGS`. The following components are needed for this workflow:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//@ assembly-output: ptx-linker
|
||||
//@ compile-flags: --crate-type cdylib -Z unstable-options -Clinker-flavor=llbc
|
||||
//@ compile-flags: --crate-type cdylib
|
||||
//@ only-nvptx64
|
||||
|
||||
#![no_std]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//@ assembly-output: ptx-linker
|
||||
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_50 -Z unstable-options -Clinker-flavor=llbc
|
||||
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_50
|
||||
//@ only-nvptx64
|
||||
|
||||
#![no_std]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//@ assembly-output: ptx-linker
|
||||
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_86 -Z unstable-options -Clinker-flavor=llbc
|
||||
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_86
|
||||
//@ only-nvptx64
|
||||
|
||||
// The PTX ABI stability is tied to major versions of the PTX ISA
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//@ assembly-output: ptx-linker
|
||||
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_86 -Z unstable-options -Clinker-flavor=llbc
|
||||
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_86
|
||||
//@ only-nvptx64
|
||||
|
||||
// The PTX ABI stability is tied to major versions of the PTX ISA
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//@ assembly-output: ptx-linker
|
||||
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_86 -Z unstable-options -Clinker-flavor=llbc
|
||||
//@ compile-flags: --crate-type cdylib -C target-cpu=sm_86
|
||||
//@ only-nvptx64
|
||||
|
||||
// The following ABI tests are made with nvcc 11.6 does.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
//@ assembly-output: ptx-linker
|
||||
//@ compile-flags: --crate-type cdylib -Z unstable-options -Clinker-flavor=llbc
|
||||
//@ compile-flags: --crate-type cdylib
|
||||
//@ only-nvptx64
|
||||
//@ revisions: LLVM20 LLVM21
|
||||
//@ [LLVM21] min-llvm-version: 21
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue