从火炬c和x2B中的cuda阵列读取数据+;无需将阵列传输到CPU 我试图读取GPU中的CUDA阵列到Trac C++ CUDA中。虽然我读了阵列,但似乎阵列首先将cuda阵列传输到CPU,然后在torch中再次将阵列传输到其框架中的cuda。我可以这么说,因为CPU使用率很高,而将阵列传输到torch的过程也不是那么顺利。我正在使用下面的代码,它正在工作

从火炬c和x2B中的cuda阵列读取数据+;无需将阵列传输到CPU 我试图读取GPU中的CUDA阵列到Trac C++ CUDA中。虽然我读了阵列,但似乎阵列首先将cuda阵列传输到CPU,然后在torch中再次将阵列传输到其框架中的cuda。我可以这么说,因为CPU使用率很高,而将阵列传输到torch的过程也不是那么顺利。我正在使用下面的代码,它正在工作,c++,python-3.x,pytorch,torch,libtorch,C++,Python 3.x,Pytorch,Torch,Libtorch,pOutData数据是指向存储RGB数据的GPU内存的数据指针。指针位置的数据长度为{224,224,3}。我正在接收来自另一个程序的指针,因此无法在此包含代码 auto options = torch::TensorOptions().dtype(torch::kUInt8).device(torch::kCUDA, 0); auto input_tensor = torch::from_blob(pOutData, {224, 224, 3}, options); 理想情况下,当

pOutData数据是指向存储RGB数据的GPU内存的数据指针。指针位置的数据长度为{224,224,3}。我正在接收来自另一个程序的指针,因此无法在此包含代码

auto options = torch::TensorOptions().dtype(torch::kUInt8).device(torch::kCUDA, 0);     
auto input_tensor = torch::from_blob(pOutData, {224, 224, 3}, options);
理想情况下,当GPU与GPU位置之间进行数据传输时,CPU利用率应为零或可忽略不计,但我的情况如下:
有没有人可以在不传输CPU的情况下直接将cuda阵列读取到torch中的cuda?

您能更明确地说明您观察到的错误吗?“CPU使用率相当高”并没有真正的帮助。您是否也可以完成代码示例,使其包含pOutData的创建(我假设它是GPU内存中某些数据的指针)?此外,正如您所说,GPU-GPU传输比GPU-CPU-GPU快得多,所以我想您可以尝试将此传输与另一个显式GPU-CPU-GPU传输进行基准测试,并比较结果。@trialNerror更新了问题