免责声明:作者处于初学者级别的C/C++.
维基百科说"OpenCL包含一种用于编写内核的语言(基于C99)".
但是如果你看一下OpenCL编程指南一书中的任何代码示例,你会发现除了内核.cl文件外,总会有一个.cpp文件(甚至很少).
("尽管本书中描述的许多示例应用程序都是使用编程语言C++开发的,但我们专注于OpenCL C API来控制OpenCL组件.")
这是否意味着内核是用类C语言编写的,而所有其他东西(如内存对象管理)都是用C++编写的?为什么一切都不是用C语言编写的?C++绑定不会引入开销吗?
这是否意味着内核是用类C语言编写的,而所有其他东西(如内存对象管理)都是用C++编写的?
OpenCL本身是C99的扩展,所以.cl文件都写在那里.您必须检查C++文件中的内容以查看其中实现的内容.
为什么一切都不是用C语言编写的?
作者可能会发现C++更方便.
C++绑定不会引入开销吗?
不,因为C++语言标准中定义的C/C++桥可以实现几乎零开销.它可能取决于编译器,但通常,当你从C++调用C函数时,它就像从C调用函数一样便宜.C++本身遵循C的"零开销"理念:它的高级(与C相比)特征是没有钱,但是你没有为你不使用的东西买单.