怎么样理解在OpenCL 系统中 Kernel是如何运行起来的?

  • 2 replies
  • 3251 views
怎么样理解在OpenCL 系统中 Kernel是如何运行起来的,比如接收到了怎样的命令的,对应的格式又是怎样的?



Re: 怎么样理解在OpenCL 系统中 Kernel是如何运行起来的?
« 回复 #1 于: 五月 06, 2020, 03:14:20 pm »
怎么样理解在OpenCL 系统中 Kernel是如何运行起来的,比如接收到了怎样的命令的,对应的格式又是怎样的?

你好, OpenCL是一个纸面的规范, 你在具体的硬件平台上用的runtime, 则是具体的vendor对该规范的实现.

而在这个纸面的规范中, 并没有说明主机如何和设备通信, 控制设备上的kernel的启动,这并没有约定.

回到常见的GPU作为device的场合, NV对此严格保密. AMD适当披露了一些信息, 大值有将显卡的一些控制寄存器和显存, 映射成主机这边能访问的内存, 然后按照一定的格式写入该内存, 自动触发硬件上的kernel的启动发布任务.等等.

如果想知道详情, 参考AMD的ROCm(在GITHUB上), 里面有详细的描述. 我建议你看一下如何它能实现从user mode, 实现无OS/Driver的干涉的情况下, 通过往特定的内存地址, 写入特定的东西, 完成命令的发布(包括kernel的启动, 数据的传输, 等等).

Re: 怎么样理解在OpenCL 系统中 Kernel是如何运行起来的?
« 回复 #2 于: 五月 14, 2020, 11:11:30 am »
十分感谢! :)