将代码加载到GPU(Intel Sandy Bridge)

时间:2011-11-08 20:44:05

标签: c assembly gpu intel

我的问题不是关于GPGPU。我非常了解GPGPU,这不是我想要的。据称,英特尔的Sand Bridge可以通过一些功能直接在GPU上执行计算。

这是真的吗?

我打算编写的代码将采用内联汇编(在C中)。是否有汇编指令而不是在CPU上执行将内容输出到GPU?

一些相关文档:

PDF具有指令集。

2 个答案:

答案 0 :(得分:3)

我不相信您链接的PDF中详细说明的指令集可以直接在"用户空间"中使用。它是您的操作系统上的GPU驱动程序可用于实现OpenGL和DirectX等更高级别接口的。

对于它的价值,Sandy Bridge GPU非常弱。它不支持OpenCL **,它是ATI / nVidia支持的标准GPGPU库。我建议你编程到那个库(在支持它的硬件上),因为它比你试图编程到裸机接口更便携(也更容易使用!)。 ;看看。


*:尽管不太可能,但可能的界面与英特尔的闭源驱动程序中使用的PDF所描述的界面不同。

**:与OpenGL不同,虽然它是由同一组设计的。

答案 1 :(得分:2)

回答你的第一个问题:不,这不是真的。

让我引用你所链接的资源:

  

图形处理单元由CPU通过内存映射IO的直接接口控制   寄存器,并通过解析CPU已放入内存的命令间接。 (SB GPU手册第2.2章)

因此,不能在cpu上下文中直接执行GPU代码。

对于你的第二个问题:“将内容推送到GPU”是用mov指令完成的。 Target是一个mem映射的IO寄存器,源于你想要写的东西。您可能需要插入一些“sfence”或类似的指令,以确保不会发生弱内存重新排序。