代码之家  ›  专栏  ›  技术社区  ›  user228395

如何在CuPy中分配倾斜的2D内存?

  •  0
  • user228395  · 技术社区  · 6 年前

    在丘比,可以分配一个多维 ndarray 在主机上,然后使用CUDA将其复制到GPU。我的问题是:

    • cupy.ndarray.strides . 如果没有,为什么不呢?
    • 为什么丘比不使用 cudaMalloc2D , cudaMalloc3D cudaMallocPitch ?

    我的目标是用 width height 到全局内存(不是纹理内存-哪个

        float* devPtr = nullptr;
        size_t devPitch;
        cudaMallocPitch((void **) &devPtr, &devPitch, sizeof(float) * width, height);
        cudaMemcpy2D(devPtr, devPitch, my_array.data(),
                     width * sizeof(float), width * sizeof(float), height,
                     cudaMemcpyHostToDevice);        
    

    但是我在CuPy中找不到一种方法来保证在我的自定义内核中需要的属性。我试图“使用源代码,Luke”来了解到底发生了什么,但是找不到一个对CUDA代码的调用来实现这样的结果。

    0 回复  |  直到 6 年前
        1
  •  1
  •   emcastillo    6 年前

    您可以自己模拟这种行为,方法是使用(高度、间距)分配矩阵,并使用形状(高度、宽度)查看视图。应调整节距值,使其与所需的数据类型相匹配。