我已经遍历了多个资源:OpenCL Khronos书,GATech教程,NYU教程,并且我可以阅读更多内容。但是我还是不太了解。内核和程序对象之间有什么区别?
到目前为止,对我来说最好的解释是这,但这还不足以让我完全理解:程序对象:程序对象封装了一些源代码(可能包含多个内核函数)及其上次成功构建。内核:内核对象封装执行内核时使用的内核参数的值。
也许程序对象就是代码?内核是编译后的可执行文件吗?是吗 因为我可以理解这样的事情。
提前致谢!
小智 5
程序是一个或多个内核以及可选支持功能的集合。可以从源代码或几种类型的二进制文件(例如SPIR,SPIR-V,本机)创建程序。在从中选择内核之前,需要为一个或多个设备(使用clBuildProgram或clCompileProgram和clLinkProgram)构建一些程序对象(从源代码或中间二进制文件创建)。考虑程序的最简单方法是,它们就像DLLs一样,可以导出内核供程序员使用。
内核是一个可执行实体(不必编译,因为您可以具有代表硬件的内置内核(例如Intel硬件上的Video Motion Estimation内核)),因此您可以绑定其参数并将其提交给各种队列以执行。