我可以在intel iris上运行Cuda或opencl吗?

Fud*_*oli 8 xcode gpu opencl

我有一个Macbook pro 2014年中期的intel iris和intel核心i5处理器16GB的RAM.我正在计划学习一些光线追踪的3D.但是,我不确定,如果我的笔记本电脑可以在没有任何nvidia硬件的情况下快速渲染.

所以,我很感激,如果有人能告诉我是否可以使用Cuda,那么请您以非常简单的方式教我如何在影响后启用OpenCL.我正在寻找初学者的任何教程,以学习如何创建或构建OpenCL?

hus*_*sik 15

Cuda仅适用于nvidia硬件,但可能有一些库将其转换为在cpu内核上运行(而不是igpu).

AMD正致力于"简化"旧的cuda内核,将它们转换为opencl或类似的代码,以便它们变得更加通用.

只要硬件和操作系统都支持,Opencl就可以在任何地方使用.Amd,Nvidia,Intel,Xilinx,Altera,Qualcomm,MediaTek,Marvell,德州仪器......支持这一点.也许甚至Raspberry pi-x也可以支持.

stackoverflow.com中opencl的文档正在开发中.但是有一些网站:

如果是 Iris Graphics 6100:

您的集成gpu有48个执行单元,每个单元有8个ALU单元,可以进行添加,乘法和更多操作.它的时钟频率可以升至1GHz.这意味着每秒最多48*8*2(1加+ 1乘)*1G = 768千兆浮点运算,但仅当每个ALU能够同时进行1次加法和1次乘法时.768 Gflops不仅仅是AMD的R7-240这样的低端分立式GPU(截至2017年10月19日,AMD的低端产品是RX550,拥有1200 GFlops,比英特尔的Iris Plus 650快近900 GFlops).光线跟踪需要重新访问太多的几何数据,因此设备应该有自己的内存(例如Nvidia或Amd),让CPU完成其工作.

如何在计算机上安装opencl可以根据操作系统和硬件类型进行更改,但使用opencl安装的计算机构建软件类似:

  • 查询平台.这可能是AMD,英特尔,Nvidia的重复,因为重复安装了错误的驱动程序,在较新的opencl版本支持之前的实验平台.
  • 查询平台(或所有平台)的设备.这给了单个设备(如果存在驱动程序错误或其他一些需要修复的东西,则为其重复).
  • 使用平台创建上下文(或多个)
  • 使用上下文(所以一切都将隐含同步):

    • 使用内核字符串构建程序.通常CPU可以花费比GPU更少的时间来构建程序.(有一个二进制加载选项来shurtcut这个)
    • 从程序构建内核(现在作为对象).
    • 从主机端缓冲区或opencl管理的缓冲区创建缓冲区.
    • 创建命令队列(或多个)

就在计算之前(或计算数组):

  • 选择内核的缓冲区作为其参数.
  • 在"输入"缓冲区上排队缓冲区写入(或映射/取消映射)操作

计算:

  • 排队nd范围内核(指定运行哪个内核以及有多少个线程)
  • 在"输出"缓冲区上排队缓冲区读取(或映射/取消映射)操作
  • 如果您没有使用阻塞类型enqueueBufferRead,请不要忘记使用clFinish()与主机同步.
  • 使用您的加速数据.

不再需要opencl之后:

  • 确保所有命令队列都为空/完成内核工作.
  • 以创建的相反顺序释放所有内容

如果您需要加速开源软件,可以使用简单的opencl内核切换热点并行化循环,如果它还没有其他加速支持的话.例如,您可以加速powdertoy砂箱模拟器的气压和热平流部分.