当数据大小增加超过260k时,我的CUDA程序停止工作(它什么都不打印).
有人能告诉我为什么会这样吗?这是我的第一个CUDA计划.如果我想要更大的素数,如何在CUDA上使用大于long long int的数据类型?
显卡是GT425M.
#include<stdio.h>
#include<stdlib.h>
#include<cuda.h>
#define SIZE 250000
#define BLOCK_NUM 96
#define THREAD_NUM 1024
int data[SIZE];
__global__ static void sieve(int *num,clock_t* time){
const int tid = threadIdx.x;
const int bid = blockIdx.x;
int tmp=bid*THREAD_NUM+tid;
if(tid==0) time[bid] = clock();
while(tmp<SIZE){
int i=1;
while(((2*tmp+3)*i+tmp+1)<SIZE){
num[(2*tmp+3)*i+tmp+1] = 0;
i++;
}
tmp+=BLOCK_NUM*THREAD_NUM;
}
if(tid==0) time[bid+BLOCK_NUM] = clock();
}
void GenerateNumbers(int *number,int size){
for(int i=0;i<size;i++)
number[i] = 2*i+1;
number[0] = 2;
}
int main(){
GenerateNumbers(data,SIZE);
int *gpudata;
clock_t* time;
int cpudata[SIZE];
cudaMalloc((void**)&gpudata,sizeof(int)*SIZE); …Run Code Online (Sandbox Code Playgroud)