- 主题:请问cpu的指令集是x86,arm,那gpu呢?
opencl 是公开标准。牙膏厂、核弹厂和农企都支持的。
牙膏厂甚至还有个 portable opencl,可以在 cpu 上面跑 opencl 程序。这样当显卡不支持的时候,大家写的 opencl 程序仍然可以正常地跑。作为最后的 backup 方案。
opencl, opengl, directx, vulkan, metal 这些都是向显卡提交任务的 API 而已。和 ISA 是两回事。
【 在 nokia9500 的大作中提到: 】
: isa必然是各用各的。amd 用opencl。
--
修改:hgoldfish FROM 59.61.198.*
FROM 59.61.198.*
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.*
谢谢您的详细回复!那nvidia的CUDA在amd gpu,intel gpu都能使用吧?
【 在 newzzdx 的大作中提到: 】
: 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开发就可以了。
: ...................
--
FROM 222.129.131.*
那amd gpu也用CUDA?有必要开发新语言么?
【 在 nokia9500 的大作中提到: 】
: isa必然是各用各的。amd 用opencl。
--
FROM 222.129.131.*
谢谢您的回复!
【 在 hgoldfish 的大作中提到: 】
: 之前看到农企在 LLVM 里面维护了 AMDGPU 的指令集。
:
--
FROM 222.129.131.*
不能,因为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.*
【 在 newzzdx 的大作中提到: 】
: 不能,因为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最近也很火。
: ...................
有些小厂基于CUDA API定义, 重写了基于自己硬件的代码实现。 已有的CUDA代码重新编译一下,就可以跑在非NV硬件上了。
不过amd,intel不能或者不屑这么做。
--
修改:giant85 FROM 117.35.158.*
FROM 117.35.158.*
相当于搞了个CUDA变种版本,其实没太大必要。
【 在 giant85 的大作中提到: 】
:
: 有些小厂基于CUDA API定义, 重写了基于自己硬件的代码实现。 已有的CUDA代码重新编译一下,就可以跑在非NV硬件上了。
: 不过amd,intel不能或者不屑这么做。
: ...................
--
FROM 223.72.24.*
农企实际已经做了。叫做 ROCm. 基本上就是 CUDA 函数改个前缀。
【 在 giant85 的大作中提到: 】
: 芑稹
: 有些小厂基于CUDA API定义, 重写了基于自己硬件的代码实现。 已有的CUDA代码重新编译一下,就可以跑在非NV硬件上了。
: 不过amd,intel不能或者不屑这么做。
: ...................
--
FROM 59.61.198.*
明白了,谢谢您的详细解释!
【 在 newzzdx 的大作中提到: 】
: 不能,因为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最近也很火。
: ...................
--
FROM 222.129.131.*