Cuda 所有GPU都使用相同的体系结构吗?

Cuda 所有GPU都使用相同的体系结构吗?,cuda,opencl,gpgpu,Cuda,Opencl,Gpgpu,我在nVIDIA CUDA有一些经验,现在也在考虑学习openCL。我希望能够在任何GPU上运行我的程序。我的问题是:是否每个GPU都使用与nVIDIA多处理器、SIMT结构、全局内存、本地内存、寄存器、现金等相同的体系结构 多谢各位 您会发现OpenCL和CUDA提供的抽象类型非常相似。您通常也可以指望您的硬件具有类似的功能:全局mem、本地mem、流式多处理器等 从CUDA切换到OpenCL,您可能会被以下事实所迷惑:许多相同的概念有不同的名称,例如:CUDA warp==OpenCL波前。

我在nVIDIA CUDA有一些经验,现在也在考虑学习openCL。我希望能够在任何GPU上运行我的程序。我的问题是:是否每个GPU都使用与nVIDIA多处理器、SIMT结构、全局内存、本地内存、寄存器、现金等相同的体系结构


多谢各位

您会发现OpenCL和CUDA提供的抽象类型非常相似。您通常也可以指望您的硬件具有类似的功能:全局mem、本地mem、流式多处理器等


从CUDA切换到OpenCL,您可能会被以下事实所迷惑:许多相同的概念有不同的名称,例如:CUDA warp==OpenCL波前。

您会发现OpenCL和CUDA提供的抽象类型非常相似。您通常也可以指望您的硬件具有类似的功能:全局mem、本地mem、流式多处理器等


从CUDA切换到OpenCL时,您可能会被以下事实所迷惑:许多相同的概念都有不同的名称,例如:CUDA warp==OpenCL波前。

从您的既定目标开始:

我希望能够在任何GPU上运行我的程序

那么是的,你应该学习OpenCL

在回答您的总体问题时,其他GPU供应商使用的架构与Nvidia GPU不同。事实上,单个供应商的GPU设计可能会有相当大的差异,这取决于型号

这是一个原因,给定的OpenCL代码可能会根据不同GPU的性能指标执行完全不同的操作。事实上,为了在任何GPU上实现最佳性能,应该通过改变(例如)本地内存大小来分析算法,以找到给定硬件设计的最佳算法设置

但即使存在这些硬件差异,OpenCL的目标也是提供所有设备CPU、GPU、FPGA等支持的核心功能级别,并包括允许供应商公开独特硬件功能的扩展。尽管OpenCL无法隐藏硬件上的显著差异,但它确实保证了可移植性。这使得开发人员更容易从为一个设备调优的OpenCL程序开始,然后开发为另一个架构优化的程序

为了使识别硬件差异的问题复杂化,CUDA使用的术语与OpenCL使用的术语不同,例如,以下术语的含义大致相同:

CUDA: OpenCL:
可以进行更多的比较和讨论。

从您的既定目标开始:

我希望能够在任何GPU上运行我的程序

那么是的,你应该学习OpenCL

在回答您的总体问题时,其他GPU供应商使用的架构与Nvidia GPU不同。事实上,单个供应商的GPU设计可能会有相当大的差异,这取决于型号

这是一个原因,给定的OpenCL代码可能会根据不同GPU的性能指标执行完全不同的操作。事实上,为了在任何GPU上实现最佳性能,应该通过改变(例如)本地内存大小来分析算法,以找到给定硬件设计的最佳算法设置

但即使存在这些硬件差异,OpenCL的目标也是提供所有设备CPU、GPU、FPGA等支持的核心功能级别,并包括允许供应商公开独特硬件功能的扩展。尽管OpenCL无法隐藏硬件上的显著差异,但它确实保证了可移植性。这使得开发人员更容易从为一个设备调优的OpenCL程序开始,然后开发为另一个架构优化的程序

为了使识别硬件差异的问题复杂化,CUDA使用的术语与OpenCL使用的术语不同,例如,以下术语的含义大致相同:

CUDA: OpenCL:
可以进行更多的比较和讨论。

谢谢您的回答。可以肯定地说,每个GPU都使用SIMT架构吗?我不这么认为,但我不是这方面的专家。单指令多线程SIMT是Nvidia创建的一个术语,用于描述其GPU架构。这些体系结构基本上是带有多线程的单指令多数据SIMD。虽然术语SIMT是由Nvidia创建的,但其他供应商也提出了类似的架构,但我不一定认为这些架构完全相同。我认为你给了他一些有问题的建议,因为在OpenCL中编写代码时,会允许它在不同的GPU上运行,忽略OpenCL版本问题,这一点不容忽视——几乎没有内核能在许多GPU上运行良好。众所周知,体系结构的差异对实现性能最大化的方法有着巨大的影响。谢谢您的回答。可以肯定地说,每个GPU都使用SIMT架构吗?我不这么认为,但我不是SIMT方面的专家
他的样子。单指令多线程SIMT是Nvidia创建的一个术语,用于描述其GPU架构。这些体系结构基本上是带有多线程的单指令多数据SIMD。虽然术语SIMT是由Nvidia创建的,但其他供应商也提出了类似的架构,但我不一定认为这些架构完全相同。我认为你给了他一些有问题的建议,因为在OpenCL中编写代码时,会允许它在不同的GPU上运行,忽略OpenCL版本问题,这一点不容忽视——几乎没有内核能在许多GPU上运行良好。众所周知,体系结构的差异对实现性能最大化的方法有着巨大的影响。