cudaMemcpy不复制任何数据

维卡什B

我使用cuda-gdb检查dcost的值,发现cudaMemcpy即使返回了也没有进行复制cudaSuccess

这是我的代码:

#include<stdint.h>

int main(){
int64_t nvtx_scale = ((int64_t)1)<<14;

uint64_t* cost = (uint64_t*)malloc(sizeof(uint64_t)*nvtx_scale);

for(int64_t i=0; i < nvtx_scale; i++)
    cost[i] = uint64_t(-1);

uint64_t* dcost;
cudaMalloc(&dcost, nvtx_scale*sizeof(uint64_t));

cudaError_t err;

err = cudaMemcpy(dcost, cost, sizeof(uint64_t)*nvtx_scale, cudaMemcpyHostToDevice);
return 0;
}

这是否与我CUDA_DEBUGGER_SOFTWARE_PREEMPTION=1按照cuda-gdb文档中的建议进行设置的事实有关,以允许在不停止显示管理器的情况下使用同一gpu进行调试?

看守人

以下是您的代码的稍作修改的版本:

#include<stdint.h>
#include<iostream>

int main(){
    int64_t nvtx_scale = ((int64_t)1)<<14;

    uint64_t* cost = (uint64_t*)malloc(sizeof(uint64_t)*nvtx_scale);

    for(int64_t i=0; i < nvtx_scale; i++)
        cost[i] = uint64_t(123456789);

    uint64_t* dcost;
    cudaMalloc(&dcost, nvtx_scale*sizeof(uint64_t));
    cudaMemcpy(dcost, cost, sizeof(uint64_t)*nvtx_scale, cudaMemcpyHostToDevice);

    memset(cost, 0, sizeof(uint64_t)*nvtx_scale);
    cudaMemcpy(cost, dcost, sizeof(uint64_t)*nvtx_scale, cudaMemcpyDeviceToHost);

    for(int i=0; i<10; i++) {
        std::cout << i << " " << cost[i] << std::endl;
    }

    return 0;
}

像这样为我编译并运行:

C:\Users\talonmies>nvcc cudacopy.cu
cudacopy.cu
   Creating library a.lib and object a.exp

C:\Users\talonmies>cuda-memcheck a.exe
========= CUDA-MEMCHECK
0 123456789
1 123456789
2 123456789
3 123456789
4 123456789
5 123456789
6 123456789
7 123456789
8 123456789
9 123456789
========= ERROR SUMMARY: 0 errors

如果无法重现此内容,则说明您的CUDA安装存在问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Stream.CopyTo不复制任何流数据

来自分类Dev

Glusterfs不复制数据

来自分类Dev

Glusterfs不复制数据

来自分类Dev

FFmpeg元数据不复制

来自分类Dev

绑定数据而不复制

来自分类Dev

硬盘被识别,但 dd 不复制任何内容

来自分类Dev

重新分配不复制旧数据

来自分类Dev

实现memmove而不复制源数据

来自分类Dev

memcpy不复制结构内部的数据

来自分类Dev

c#中的Robocopy不复制数据

来自分类Dev

cudaMemcpy实际上没有复制任何内容

来自分类Dev

如何一次复制多个快照而不复制数据?

来自分类Dev

PostgreSQL数据库不复制。没有错误

来自分类Dev

R中的线性回归而不复制内存中的数据?

来自分类Dev

如何从类中返回大向量而不复制数据

来自分类Dev

合并数据帧而不复制 R 中的行

来自分类Dev

mpiexec,不复制DLL

来自分类Dev

BufferedReader不复制文件

来自分类Dev

cp不复制文件

来自分类Dev

如何在不复制数据透视表的情况下复制它?

来自分类Dev

如何仅复制文件属性(元数据)而不复制文件的实际内容?

来自分类Dev

如何在不复制空单元格的情况下复制过滤的数据

来自分类Dev

如何在站点的页面之间共享静态数据而不复制数据?

来自分类Dev

使用 cudaMemcpy2D 复制一维跨步数据的方法

来自分类Dev

R合并而不复制列

来自分类Dev

char * / string串联而不复制?

来自分类Dev

不复制就返回std :: function

来自分类Dev

放回向量而不复制

来自分类Dev

Docker不复制新映像