Cuda nvcc需要很长时间来编译简单的代码
我有这段非常简单的代码,nvcc需要花费很长时间来编译(它100%加载我的两个CPU内核,而且从不停止)。这是由于循环展开造成的吗?有没有更简单的方法可以更快地初始化本地内存Cuda nvcc需要很长时间来编译简单的代码,cuda,Cuda,我有这段非常简单的代码,nvcc需要花费很长时间来编译(它100%加载我的两个CPU内核,而且从不停止)。这是由于循环展开造成的吗?有没有更简单的方法可以更快地初始化本地内存 #include "cuda_runtime.h" #include <stdio.h> #include "cuComplex.h" __global__ void test() { cuComplex myPoints[20][20]; for (int i=0; i<20;i++)
#include "cuda_runtime.h"
#include <stdio.h>
#include "cuComplex.h"
__global__ void test()
{
cuComplex myPoints[20][20];
for (int i=0; i<20;i++)
for (int j=0; j<20;j++)
{
myPoints[i][j].x=0.0;
myPoints[i][j].y=0.0;
}
for (int i=0; i<20;i++)
for (int j=0; j<20;j++)
{
printf("%d %d",myPoints[i][j].x,myPoints[i][j].y);
}
}
main()
{
}
#包括“cuda_runtime.h”
#包括
#包括“cuComplex.h”
__全局无效测试()
{
cuComplex myPoints[20][20];
对于这个明显的编译器错误已经被报告给英伟达编译团队哪一个CUDA版本?它在CUDA 4.1上编译得很快。它是CUDA 5……只是最新版本。我将尝试在CUDA 4.2.1上用CUDA 4.2INFING编译。这是非常快的。你有什么问题?CUDA 5中的bug还是新特性?我看到了Lon。在CUDA5中的编译时间也是如此。我真的没有答案,但我观察到20*20*sizeof(cuComplex)每个线程需要占用大量的寄存器空间。如果我将_uu_u_u_u_u_u______________________________________________________对于每个线程,如果myPoints数组不是“寄存器空间”,则任何合理数量的线程都会很快用完它,它将是本地内存。在线程之间共享它可能没有意义,而且可能没有足够的共享内存让每个线程都有那么多的空间。程序在每个线程中使用大量本地内存的情况并不少见,在某些情况下,它甚至不是瓶颈。这听起来像是编译器错误。