Compiler construction 在叮当声中支持CUDA

Compiler construction 在叮当声中支持CUDA,compiler-construction,llvm,clang,Compiler Construction,Llvm,Clang,我正在尝试使用Clang3.0将一个简单的CUDA程序转换为LLVMIR。节目如下: #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

我正在尝试使用Clang3.0将一个简单的CUDA程序转换为LLVMIR。节目如下:

 #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;
 }
#包括
#包括
__全局函数(int*a)
{
//内核定义
*a=线程IDX.x+块IDX.x*块DIM.x;
}
int main()
{
int*h_a,*d_a,n;
n=sizeof(int);
h_a=(int*)malloc(n);
*h_a=5;
Cudamaloc((无效*)和d_a,n);
cudaMemcpy(d_a,h_a,n,cudamemcpyhostodevice);
//内核调用
克内尔芬奇(杜阿);
cudaMemcpy(h_a,d_a,n,cudaMemcpyDeviceToHost);
printf(“%d”,*h_a);
返回0;
}

应该包括哪些附加头文件?Clang 3.0目前不支持代码的哪部分?

您的Clang版本太旧了。对CUDA的支持非常有限。升级后,对于名为
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
$clang++-o hello-I/samples/common/inc-L/hello.cu-lcudart\u static-lcuda-ldl-lrt-pthread
有关更多信息,请参阅