assembly - 寻址图形芯片最直接的方法是什么?

标签 assembly x86 gpu intel

我的老式 PC 中有一个 Intel HD 420。

我想知道 - 我们可以使用汇编代码直接对 CPU 进行寻址,使用 muladd 等命令。

如何将汇编计算命令传递给图形芯片(例如 Intel HD),或者说 AMD Ryzen 的“gpu 部分”?它与 ARM 图形芯片的机制相同吗?

(没有 apu、板载显卡、intel-hd、ryzen 标签)

编辑:我知道 OpenCL 是正确的方法,并且就通信而言,板载芯片与任何其他外围硬件(例如打印机)一样好。 然而,出于理论上的好奇心,寻找最简单的汇编片段,在板载图形芯片(如 Intel HD XXX)上执行任何类型的普通计算。

最佳答案

GPU 是一个独立的核心,您只能通过 MMIO 与之交互;它不是像 x87 最初那样的协处理器(其中 fmul 在单独的芯片上运行)。您可以像图形驱动程序一样访问它。

没有 CPU 指令直接在 GPU 上执行操作,因为它根本不是紧密耦合的,因此高延迟是 GPGPU 的一个问题。将工作发送到 GPU 看起来就像存储到内存中,然后将指向该物理内存的指针传递给 GPU,例如通过 mov [mem]、rax 或其他内容到 GPU 的 MMIO 寄存器之一的地址。

对于英特尔来说,如果您确实想深入研究 Linux DRM(直接渲染管理器)和在请求内核访问后与 GPU 通信的 X11 驱动程序,那么这些都是开源的。

关于assembly - 寻址图形芯片最直接的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62706375/

相关文章:

assembly - ia32/ia64上的ADC和ADCX指令之间有什么区别?

c++ - Windows x64 的近绝对调用 (0xFF 0x15) 寻址

C++ 汇编器输出——引用是如何实现的

assembly - 一条清除PF(奇偶校验标志)的指令——获得结果寄存器中的奇数位

ubuntu - 无法选择功能为 : [[gpu]] 的设备驱动程序 ""

android - 即使在启用主机 GPU 仿真后也没有发现 EGLConfig 错误

ffmpeg - 如何在 VMware Workstation 上使用物理计算机的 GPU?

assembly - 如何在 mips 程序集中注册 "NOT"

linux - Linux 中的返回信号

assembly - 为什么英特尔微处理器的 64 位模式不支持 MOV AH,1?