You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note that bar is called by foo but it's not defined in the PTX module. Trying to load this PTX module, with cuModuleLoadData, generates a runtime error: CUDA_ERROR_NO_BINARY_FOR_GPU.
Expected behavior
Other targets that produce an executable would fail to compile this with an "undefined reference" error which is actually raised by the linker. The NVPTX targets don't involve a linker but they shouldn't produce incomplete PTX modules like the one above; instead the should raise an error like the other targets do.
The text was updated successfully, but these errors were encountered:
japaric
added
the
O-NVPTX
Target: the NVPTX LLVM backend for running rust on GPUs, https://llvm.org/docs/NVPTXUsage.html
label
Jan 2, 2017
NVPTX target specification
This change adds a built-in `nvptx64-nvidia-cuda` GPGPU no-std target specification and a basic PTX assembly smoke tests.
The approach is taken here and the target spec is based on `ptx-linker`, a project started about 1.5 years ago. Key feature: bitcode object files being linked with LTO into the final module on the linker's side.
Prior to this change, the linker used a `ld` linker-flavor, but I think, having the special CLI convention is a more reliable way.
Questions about further progress on reliable CUDA workflow with Rust:
1. Is it possible to create a test suite `codegen-asm` to verify end-to-end integration with LLVM backend?
1. How would it be better to organise no-std `compile-fail` tests: add `#![no_std]` where possible and mark others as `ignore-nvptx` directive, or alternatively, introduce `compile-fail-no-std` test suite?
1. Can we have the `ptx-linker` eventually be integrated as `rls` or `clippy`? Hopefully, this should allow to statically link against LLVM used in Rust and get rid of the [current hacky solution](https://github.com/denzp/rustc-llvm-proxy).
1. Am I missing some methods from `rustc_codegen_ssa::back::linker::Linker` that can be useful for bitcode-only linking?
Currently, there are no major public CUDA projects written in Rust I'm aware of, but I'm expecting to have a built-in target will create a solid foundation for further experiments and awesome crates.
Related to #38789Fixes#38787Fixes#38786
STR
Note that
bar
is called byfoo
but it's not defined in the PTX module. Trying to load this PTX module, withcuModuleLoadData
, generates a runtime error:CUDA_ERROR_NO_BINARY_FOR_GPU
.Expected behavior
Other targets that produce an executable would fail to compile this with an "undefined reference" error which is actually raised by the linker. The NVPTX targets don't involve a linker but they shouldn't produce incomplete PTX modules like the one above; instead the should raise an error like the other targets do.
The text was updated successfully, but these errors were encountered: