Как скомпилировать код cuda с помощью устройства и кода хоста, используя clang? - PullRequest
0 голосов
/ 03 июля 2019

Прежде всего, я не хочу делать

clang++ axpy.cu -o axpy --cuda-gpu-arch=<GPU arch>  \
    -L<CUDA install path>/<lib64 or lib>              \
    -lcudart_static -ldl -lrt -pthread

, что описано в официальном документе .Потому что я должен оптимизировать код на стороне хоста с помощью своего пользовательского прохода.

У меня есть два файла битовых кодов, связанных с кодом хоста и устройства:

clang++ -c -emit-llvm --cuda-device-only -O1 a.cu -o a.device.bc
clang++ -c -emit-llvm --cuda-host-only -O1 a.cu -o a.host.bc

, и оптимизировать код хоста с помощью пользовательского прохода:

opt -load=... a.host.bc -o a.host.opt.bc

Теперь я могу создать объектный файл из файла битового кода хоста, выполнив следующую команду:

clang++ -c a.host.opt.bc -o a.host.opt.o

Но проблема заключается в том, чтобы сделать исполняемый файл из

a.device.bc файл битового кода и a.host.opt.o объектный файл.

Но я не могу найти решения по этой проблеме.

Как сделать исполняемый файл cuda из этих двух файлов?(Основная проблема - обработать файл a.device.bc)

...