У меня есть программа CUDA C/C++ для CUDA 7.5. И как известно: libNVVM Library — оптимизирующая библиотека компилятора, генерирующая PTX из NVVM IR.
Я могу получить PTX, используя: nvcc -ptx <file>.cu -o <file>.ptx
Но как я могу получить NVVM IR (LLVM IR) от <file>.cu
?
И как мне скомпилировать NVVM IR (LLVM IR) или Optimized IR для целевой архитектуры?
Нужны ли мне для этого сторонние библиотеки или программы, такие как: libcuda.lang, ...?
- Подробнее читайте по адресу: http://docs.nvidia.com/cuda/nvvm-ir-spec/index.html#ixzz3tod7pdD7
Компилятор NVVM (основанный на LLVM) генерирует код PTX из NVVM IR.
Компиляторы NVVM IR и NVVM в основном не зависят от используемого исходного языка. Часть PTX codegen компилятора NVVM должна знать исходный язык из-за разницы в DCI (интерфейсе драйвера/компилятора).
С технической точки зрения, NVVM IR — это LLVM IR с набором правил, ограничений и соглашений, а также набором поддерживаемых встроенных функций. Программа, указанная в NVVM IR, всегда является допустимой программой LLVM. Легальная программа LLVM может не быть легальной программой NVVM.
clang++ -S -emit-llvm -o axpy -I<CUDA install path>/samples/common/inc -L<CUDA install path>/<lib64 or lib> axpy.cu -lcudart_static -lcuda -ldl -lrt -pthread
! - person algoProg   schedule 13.10.2016