通过更改线程数更改CUDA代码输出的说明
我想确定有多少x^2+1形式的数字是素数,对于1=1) { 如果(tid通过更改线程数更改CUDA代码输出的说明,cuda,nvidia,Cuda,Nvidia,我想确定有多少x^2+1形式的数字是素数,对于1=1) { 如果(tid
#define THREADS 2048
...
solve<<<BLOCKS, THREADS>>>(N, dev);
^
|
2048 is illegal here
#定义线程2048
...
求解(N,dev);
^
|
2048在这里是非法的
您在内核调用上做得不正确,因此代码不会告诉您发生了此错误
因此,在每个块2048个线程的情况下,您的内核甚至没有执行(您的结果应该是假的)
在将线程减半的情况下,超时可能是由于内核执行时间太长,导致线程启动
我试着用块
=16和线程
=1024运行代码
当N=100000时,在我的M2050 GPU上的总执行时间约为1.5秒。当N=1000000时,执行时间约为75秒。当N=10000000时,执行时间非常长。在任何当前GPU上,每个块不能运行2048个线程:
#define THREADS 2048
...
solve<<<BLOCKS, THREADS>>>(N, dev);
^
|
2048 is illegal here
#定义线程2048
...
求解(N,dev);
^
|
2048在这里是非法的
您在内核调用上做得不正确,因此代码不会告诉您发生了此错误
因此,在每个块2048个线程的情况下,您的内核甚至没有执行(您的结果应该是假的)
在将线程减半的情况下,超时可能是由于内核执行时间太长,导致线程启动
我试着用块
=16和线程
=1024运行代码
N=100000时,在M2050 GPU上的总执行时间约为1.5秒。N=1000000时,执行时间约为75秒。N=10000000时,执行时间非常长