在GPU上使用X11时,XShmGetImage是否会给你的主机/设备内存回馈?

1 人关注

如果你有X11在GPU上运行,像这样。

Fri Aug  2 23:52:39 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.30       Driver Version: 430.30       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M60           Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   28C    P8    14W / 150W |    141MiB /  7618MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      3255      G   /usr/lib/xorg/Xorg                            57MiB |
|    0      3286      G   /usr/bin/gnome-shell                          81MiB |
+-----------------------------------------------------------------------------+

如果你运行XShmGetImage(),它会给你一个指向GPU内存或主机内存地址的指针吗?

如果是GPU,我想你可以用它在NVIDIA显卡上做其他操作,比如对这些数据进行H264编码。

是否有办法将一个GPU内存块的内存复制到另一个GPU内存块?

我正在使用NVENC库。

c++
linux
x11
nvidia
gnome
Suhail Doshi
Suhail Doshi
发布于 2019-08-03
1 个回答
Andreas
Andreas
发布于 2019-08-03
已采纳
0 人赞同

阅读 麻省理工学院共享内存扩展的 文件。

下一步是创建共享内存段。这是最好的 因为你需要利用XImage中的信息来知道要分配多少内存,所以最好在创建XImage之后进行。