找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 95|回复: 1

stream流计算出错

[复制链接]
发表于 2018-8-22 15:40:23 | 显示全部楼层 |阅读模式
ESC4000G3
我想尝试一下stream流,所以就写了一个简单的程序,创建了两个流,每个流处理256个数据,在核函数里面将数加1,即原来的256*2个数一次是0 1 2 ...254 255 256 257 ...510 511,正常情况下经过流处理以后应该变成1 2 3 ...255 256 257 258 ...511 512,但是我的程序运行以后却出现了问题,变成了1 2 3 ...255 256 256 257 ...510 511,请问问题出现在哪里?const int N = 256;
const int FULL_DATA_SIZE = 2 * N;

        cudaDeviceProp prop;
        int whichDevice;
        cudaGetDevice(&whichDevice);
        cudaGetDeviceProperties(&prop, whichDevice);
        if (!prop.deviceOverlap)
        {
                printf("Device will not handle overlaps, so no speed up from streams.\n");
                return 0;
        }

        cudaStream_t stream[FULL_DATA_SIZE/N];
        for (int i = 0; i < FULL_DATA_SIZE / N; i++)
        {
                cudaStreamCreate(&stream[i]);
        }
        int *host_a;
        int *dev_a;
        //利用cudaMalloc函数分配GPU内存
        HANDLE_ERROR(cudaMalloc((void **)&dev_a, FULL_DATA_SIZE * sizeof(int)));
        //利用cudaHostAlloc分配主机固定内存
        HANDLE_ERROR(cudaHostAlloc((void **)&host_a, FULL_DATA_SIZE * sizeof(int), cudaHostAllocDefault));
        //生成主机数据
        for (int i = 0; i < FULL_DATA_SIZE; i++)
        {
                host_a[i] = i;
                cout << host_a[i] << "\t";
        }
        cout << "\n******************************\n";
        for (int i = 0; i < FULL_DATA_SIZE / N; i++)
        {
                HANDLE_ERROR(cudaMemcpyAsync(dev_a + i*N, host_a + i*N, N * sizeof(int), cudaMemcpyHostToDevice, stream[i]));
                kernel << <1, N, 0, stream[i] >> >(dev_a);
                HANDLE_ERROR(cudaMemcpyAsync(host_a + i*N, dev_a + i*N, N * sizeof(int), cudaMemcpyDeviceToHost, stream[i]));
        }
        for (int i = 0; i < FULL_DATA_SIZE/N; i++)
        {
                cudaStreamDestroy(stream[i]);
        }


        for (int i = 0; i < FULL_DATA_SIZE; i++)
        {
                cout<<host_a[i]<<"\t";
        }
        cudaFreeHost(host_a);
        cudaFree(dev_a);

回复

使用道具 举报

 楼主| 发表于 2018-8-22 16:08:10 | 显示全部楼层
Jetson TX2
问题找到了,核函数的调用出了问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表