- 主题:请问cpu的指令集是x86,arm,那gpu呢?
ISA各家硬件厂商都没有统一,各自是各自的,不像x86,arm那样,很多厂商一起用,所以名字什么的基本也没公开。你可以认为GPU领域,有Nvidia GPU指令集,AMD GPU指令集,Intel GPU指令集,苹果GPU指令集,清华的GPGPU指令集等等。
为了方便其他开发人员编写可以在各个GPU平台上都能正常工作的程序,所以DirectX,OpenGL,OpenCL,Vulcan,Metal等图形API库应运而生。
如果开发人员开发windows平台GPU应用,那么支持DirectX就行了,开发苹果平台专用的,支持Metal就可以了。如果想跨平台,那就是基于openGL,OpengCL,Vulcan开发就可以了。
【 在 pandajj 的大作中提到: 】
: CUDA只是编程语音,不是指令集,gpu有自己的指令集么?
: 如果有科普的书,还请大拿推荐!
--
FROM 223.72.24.*
不能,因为CUDA是nvidia开发的一套基于自家GPU架构(指令集)优化过的编程语言并集成了API库,当然也制定的专用的语法(脱胎于C语言,但是有一定扩展)和语言内置函数,这些都是不支持其他家的GPU的。就是说你用CUDA编写的程序是不能在别的GPU上直接跑的。
目前比较接近CUDA的是OpenCL,基于OpenCL开发GPU应用,就可以支持各种GPU了。AMD GPU也推出了一个叫做ROCm的一个开发平台,类似CUDA,相当于你又要学一种编程平台。所以还是直接用OpenCL吧,如果不想用CUDA的话。
之所以CUDA不是跨平台的,但仍然非常重要,主要是因为它推出的早,而且因为Nvidia的GPU非常强大,所以CUDA成为事实上的标准,在OpenCL没有推出之前,很多GPU应用或者软件都是基于CUDA开发的,所以CUDA比较强势,不过理论上来说OpenCL将来应该应用更广阔,好像Vulcan最近也很火。
【 在 pandajj 的大作中提到: 】
: 谢谢您的详细回复!那nvidia的CUDA在amd gpu,intel gpu都能使用吧?
--
修改:newzzdx FROM 223.72.24.*
FROM 223.72.24.*
相当于搞了个CUDA变种版本,其实没太大必要。
【 在 giant85 的大作中提到: 】
:
: 有些小厂基于CUDA API定义, 重写了基于自己硬件的代码实现。 已有的CUDA代码重新编译一下,就可以跑在非NV硬件上了。
: 不过amd,intel不能或者不屑这么做。
: ...................
--
FROM 223.72.24.*