将指针指向的图像数据划分为多个段

时间:2015-07-14 13:06:42

标签: c++ cuda

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

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);

1 个答案:

答案 0 :(得分:1)

采用两行,并假设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);