c++ - 将指针指向的图像数据分成多段

标签 c++ cuda

我有一个 unsigned char *ptr 指向单 channel 图像的数据。假设图像有 400 个像素,每个像素是一个字节。因此,ptr 指向一个 400 字节的 block 。

unsigned char *ptr = image.data;

我想将数据分成两部分,因为我想在一个 CUDA 流中处理一半像素,在第二个 CUDA 流中处理另一半像素。

我只想知道如何将这些数据分成两部分,以及如何使用两个不同的 CUDA 流分别复制这两个部分?以下代码中h_half_srch_second_half_src应该是什么?

//Copy FIRST HALF of source image from host to device
cudaMemcpyAsync(d_half_pixels, h_half_src, dsize, cudaMemcpyHostToDevice, *strean_one);

//Copy SECOND HALF of source image from host to device
cudaMemcpyAsync(d_second_half_pixels, h_second_half_src, dsize, cudaMemcpyHostToDevice, *strean_two);

最佳答案

取你的两行,并假设 dsize 是总大小(对你来说是 400):

size_t half_dsize = dsize / 2;

//Copy FIRST HALF of source image from host to device
cudaMemcpyAsync(d_half_pixels, image.data, half_dsize,
                cudaMemcpyHostToDevice, *strean_one);

//Copy SECOND HALF of source image from host to device
cudaMemcpyAsync(d_second_half_pixels, image.data + half_dsize, half_dsize,
                cudaMemcpyHostToDevice, *strean_two);

关于c++ - 将指针指向的图像数据分成多段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31407513/

相关文章:

c++ - 将 char 转换为 bool(将 bool 传递给 main)

Java 泛型和 C++ 模板

memory - 为什么全局内存版本比我的 CUDA 代码中的常量内存更快?

opencv - BruteForceMatcher_GPU匹配器错误

matlab - 如何使用 CUDA 功能阻止 Matlab 在(错误的)mex 文件执行时崩溃

C++/boost : declaring an encapsulated shared_array

c++ - 如果 Derived 不向 Base 添加新成员(并且是 POD),那么可以安全地完成什么样的指针转换和取消引用?

c++ - 避免多个 bool 值的优雅方法?

c++ - CUDA 初学者 - 在继续之前强制等待线程完成

cuda,虚拟/隐式 block 同步