我们来看看Khronos OPENCL组织是如何组成的。我们知道,在OPENGL时期,该标准也是由Khronos这样一个协调机构来运作的。而你会发现,这次OPENCL由苹果作为代表发布,也正是苹果选择NVIDIA战略中的重要一环,与其说OPENCL是苹果发起的,还不如说是NVIDIA策划的。而事实的确如此,NVIDIA副总裁Neil Trevett正是现在Khronos OPENCL工作的主席,OPENCL的标准的创立也是NVIDIA技术为基础的,其中骨干员工也大半来自NVIDIA。其实这也不难理解,要做一个异构并行计算的系统和标准API,除了NVIDIA,你还能找谁呢?
而下面这张图也许是在此次OPENCL发布后较为常见的一个,不过其中意义大家不一定能够完全领会,我们在这里做一个说明。这是一张能够解释大家对OPENCL与CUDA关系疑问的重要“结构”图。NVIDIA第一次明确了两个重要名词“CUDA架构”与“CUDA C语言”。在以往理解中,我们常默认CUDA就是指基于NVIDIA GPU或并行处理器的编译器、C语言、库和相关软件开发环境;而硬件方面,则是指所有支持CUDA的GPU。今天,NVIDIA明确了包括硬件支持和软件环境一起,我们称之为CUDA架构,而常用的基于C语言的开发环境则是CUDA C,或者CUDA Fortran,CUDA C++,以及今后的CUDA JAVA等等。而OPENCL,也与之并列。
具体来说,NVIDIA将CUDA架构看作是一个异构计算中并行计算部分的核心,无论你使用怎样的高级语言或者是怎样的API的形式进行开发,在硬件上均符合CUDA架构(即NVIDIA GPU/并行处理器)。这有点类似于传统CPU领域,无论你使用何种高级语言、汇编语言、API进行软件开发,但是都为X86架构服务。