实际上,我正在使用jetson TX2。我从相机捕获图像,为unsigned char * image。然后,我需要做一些图像处理。为此,我使用了GPU。使用Jetson TX2,我们可以避免数据主机/设备和设备/主机的传输,因为RAM在GPU和CPU之间共享。为此,我使用:
int height = 6004 ;
int width = 7920 ;
int NumElement = height*width ;
unsigned char *img1 ;
cudaMallocManaged(&img1, NumElement*sizeof(unsigned char));
使用该方法,PCI没有限制。我的问题是如何将缓冲区中的图像分配给img1。此方法有效,但时间太长:
for(int i =0 ; i<NumElement ; i++)
img[i] = buffer[i] ;
[我使用朴素的for循环失去了GPU的优势...如果我仅使用该方法:
img = buffer
类似,进入内核时出现问题..
谢谢您的帮助! :)
与cudaMemcpy
一起使用cudaMemcpyDefault
,类似
cudaMemcpy(&buffer[0], &img[0], NumElement * sizeof(char), cudaMemcpyDefault);
您也可能使用memcpy