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

Divide the image data pointed by a pointer into multiple segments

本文关键字:数据 图像 指针      更新时间:2023-10-16

我有一个指向单个通道图像数据的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);

取您的两行,并假设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);