我正在尝试通过让每个线程计算一个数字是否为素数来生成素数。 由于设备printf()具有有限的缓冲区,有没有办法将输出重定向到主机并打印它没有任何覆盖?谢谢
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <math.h>
#include <conio.h>
#include <iostream>
using namespace std;
__device__ unsigned long long counter = 2;
__global__ void prime()
{
unsigned long long num = atomicAdd(&counter, 1);
long k = 0;
for (long i = 2; i <= sqrt((double)num) && k!=1; i++){
if (num % i == 0){
k = 1;
break;
}
}
if (k != 1)
printf("%ld ", num);
}
int main()
{
int block=2,threads=1000;
prime <<<block,threads>>>();
cudaDeviceSynchronize();
getch();
return 0;
}