为什么控制台不显示整个输出?

时间:2017-08-15 04:22:01

标签: cuda

我正在尝试通过让每个线程计算一个数字是否为素数来生成素数。 由于设备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;
}

0 个答案:

没有答案