Поддержка CUDA в Clang - PullRequest
       23

Поддержка CUDA в Clang

3 голосов
/ 13 февраля 2012

Я пытаюсь преобразовать простую программу CUDA в LLVM IR, используя Clang 3.0.Программа выглядит следующим образом:

 #include <stdio.h>
 #include <clang/test/SemaCUDA/cuda.h>

 __global__ void kernfunc(int *a)
 {
    //kernel definition
    *a = threadIdx.x + blockIdx.x * blockDim.x;
 }

 int main()
 {
    int *h_a, *d_a, n;

    n = sizeof(int);
    h_a = (int*)malloc(n);
    *h_a = 5;

    cudaMalloc((void*)&d_a, n);
    cudaMemcpy(d_a, h_a, n, cudaMemcpyHostToDevice);
    //kernel call
    kernelfunc<<<1,1>>>(d_a);
    cudaMemcpy(h_a, d_a, n, cudaMemcpyDeviceToHost);

    printf("%d", *h_a);
    return 0;
 }

Какие дополнительные файлы заголовков должны быть включены?Какая часть кода в настоящее время не поддерживается Clang 3.0?

1 Ответ

1 голос
/ 26 марта 2016

Ваша версия Clang слишком старая. Поддержка CUDA была добавлена ​​в Clang 3.8 . После обновления для файла с именем hello.cu команда выглядит следующим образом:

$ clang++ -o hello -I<CUDA install path>/samples/common/inc -L<CUDA install path>/<lib64 or lib> hello.cu -lcudart_static -lcuda -ldl -lrt -pthread

Подробнее см. В официальной документации 1008 *.

...