我正在测试简单内核的最大线程数.我发现线程总数不能超过4096.代码如下:
#include <stdio.h>
#define N 100
__global__ void test(){
printf("%d %d\n", blockIdx.x, threadIdx.x);
}
int main(void){
double *p;
size_t size=N*sizeof(double);
cudaMalloc(&p, size);
test<<<64,128>>>();
//test<<<64,128>>>();
cudaFree(p);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的测试环境:特斯拉M2050上的CUDA 4.2.9.代码编译用
nvcc -arch=sm_20 test.cu
Run Code Online (Sandbox Code Playgroud)
在检查输出是什么时,我发现缺少一些组合.运行命令
./a.out|wc -l
Run Code Online (Sandbox Code Playgroud)
我总是得到4096.当我检查cc2.0时,我只能找到x,y,z维度的最大块数(1024,1024,512),每个块的最大线程数是1024.内核(<<<64,128>>>或者<<<128,64>>>)都处于极限状态.任何的想法?
注意:CUDA内存操作用于阻止代码,以便显示内核的输出.
| 归档时间: |
|
| 查看次数: |
597 次 |
| 最近记录: |