将指针指向的图像数据分成多段
Divide the image data pointed by a pointer into multiple segments
我有一个unsigned char *ptr
指向单通道图像的数据。假设图像有 400 个像素,每个像素是一个字节。因此,ptr
指向一个 400 字节的块。
unsigned char *ptr = image.data;
我想将数据分成两部分,因为我想在一个 CUDA 流中处理一半像素,在第二个 CUDA 流中处理另一半像素。
我只想知道如何将这些数据分成两部分以及如何使用两个不同的 CUDA 流分别复制这两个部分? h_half_src
和 h_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);
我有一个unsigned char *ptr
指向单通道图像的数据。假设图像有 400 个像素,每个像素是一个字节。因此,ptr
指向一个 400 字节的块。
unsigned char *ptr = image.data;
我想将数据分成两部分,因为我想在一个 CUDA 流中处理一半像素,在第二个 CUDA 流中处理另一半像素。
我只想知道如何将这些数据分成两部分以及如何使用两个不同的 CUDA 流分别复制这两个部分? h_half_src
和 h_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);