CUDA真是NVIDIA绝对牢不可破的生态吗?

未来不会再有对手了吗?所有的科学计算都只能使用n卡?
收藏者
0
被浏览
105

5 个回答

wddp LV

发表于 5 天前

AMD也想割韭菜罢了,你把7900堆个80g的hbm3e出来,卖个2万块。 rocm又是开源的,社区能给你卷出麻花儿。
现在7900xtx卖8000,恶心谁呢

晓晓的波浪 LV

发表于 5 天前

用过你就知道了,这玩意就是c语言扩展,编译去操作gpu硬件,你要生产gpu,怎么都得做一个,不然咋给机器学习用。无非就是做成和cuda差不多的样子。伟大的google告诉我们,偷别人的api接口不算侵犯版权,所以你可以放心大胆的做成一模一样,叫cvda也行。

旅顺的海 LV

发表于 5 天前

要给现在的英伟达的壁垒排个名次的话,我觉得应该是这样:
TOP1:GPU芯片设计能力;
TOP2:NVLINK(互联能力);
TOP3:CUDA;
TOP4:HBM3e。
TOP3都算是英伟达自己的能力,HBM3e是来自三海美的外部能力。
如果是大模型时代之前的话,TOP1应该是Cuda。
现在大模型时代的算子趋向统一,Cuda的优势没有以前那么大了,别人是可以看到cuda的背影。
所以理论上来说,英伟达现在的优势更偏硬件方向。

迟钝的小松鼠 LV

发表于 5 天前

三等公司卖苦力,二等公司卖软硬件,一等公司卖协议。——我刚入行的时候就听前辈这么说,事实上这么多年下来看到业界盛衰欺负都遵循这个规律。
NVIDIA通过CUDA加强了硬件的垄断地位,事实上也是在卖协议,但要说NVIDIA地位牢不可破,那也未必。
AI的技术栈生态像下面这张图一样,是分层的。

CUDA真是NVIDIA绝对牢不可破的生态吗?-1.jpg

CUDA起到的就是一个承上启下的作用,对上支持PyTorch/TensorFlow这样的AI框架,对下把GPU硬件的计算能力包装成算子(operator),理论上,开发一个AI框架不用CUDA,当然不用NVIDIA的GPU也完全做得到,但是,无论CUDA还是GPU都是NVIDIA投入多年的积累,想要短时间做出超越者其中任何一个都不大可能。
更重要的是,CUDA和NVIDIA实际上互为犄角之势,你去做一个CUDA的替换品,跟不上NVIDIA自家CUDA跟得上自己GPU的节奏;你去做一个英伟达GPU的替代品,跟不上NVIDIA的CUDA对AI框架的支持。
而AI框架的生态也有很多人,这些人也不傻,他们知道成熟的技术更可靠,你的CUDA替代品没有CUDA成熟,他们就依然会优先使用英伟达的CUDA,你的CUDA替代品也就得不到发展机会,当然也没法挑战英伟达的地位。
这就是一个逃不出的死循环。
所以,如果要打破NVIDIA对生态的垄断,只有一条路,就是——降低GPU成本
因为,虽然AI生态喜欢成熟的技术,但是他们更爱省钱
AI圈里其他的玩家都在烧钱,钱都让英伟达赚去了,天下苦英伟达久矣!
这时候,如果有一家能够做出算力和英伟达差不太多的GPU,都不用一样强,只要差不多在一个档次,但是价格远低于英伟达,那就造成很高的性价比,这样AI生态自然会跟着来。
打破英伟达垄断的,看起来不像是AMD,苹果倒是有希望,当然,某些遥遥领先的厂商也有可能。
此外,英伟达的CUDA发展到现在有一个劣势,就是CUDA支持的是AI框架,而AI框架目前需要的算子基本上趋于收敛,没有更多算子需求了,也就是说,对于CUDA进一步功能需求不强烈了,所以焦点依然是硬件GPU上。
最终,打破英伟达垄断还是要靠降低GPU硬件成本,提高硬件性价比。

哈皮豆豆 LV

发表于 5 天前

有人说,我做一款AI芯片,只要原生支持PyTorch就好了呀,用户直接用PyTorch跑模型,根本接触不到CUDA呀。没错,一般的用户只要在PyTorch层面做应用,但是总是有新的模型架构出来,这些架构都需要做特定的性能优化才能在一个芯片上得到较高的性能,这时候就涉及到算子开发了。比如说一开始LLM在GPU上的性能不好,后来社区针对Nvidia GPU做了flash attention等的优化才把LLM的性能提升到了比较可观的程度。CUDA已经被各种开源AI框架、library深度集成进去,有各种开发者主动为这些框架贡献代码、优化性能。如果一个AI芯片公司自己做了一套编程语言,那所有的AI框架、library集成的工作,只能自己去做,相当于一家公司在和整个社区竞赛,看谁迭代的快。
有人说,那我不自己设计语言,我兼容Triton好不好?可以,但是Triton起初就是一个专门针对Nvidia GPU提出的编程语言,它比CUDA的抽象程度更高,比CUDA的编程语法更简洁,有可能会在一定程度上取代CUDA。不过,它底层的各种优化,也是针对Nvidia GPU的硬件进行的。当然,Triton现在逐渐在支持多种backend,芯片制造商可以写自己的TritonGPU dialect。但是,Triton语言是要求底层的硬件是要符合一个类似GPU的架构的:有Global memory、Shared memory、block、warp、SIMT编程等等,你看,这不还是一个GPU么?
单从CUDA编程语法来看,做一款能兼容CUDA编程的AI芯片并不难。CUDA是一个编程语言,从编译器角度,就是一个编译器的front end。目前clang已经内置支持了CUDA,可以把cuda代码编译成LLVM IR,当然和Nvidia闭源的NVCC编译器支持的官方CUDA稍有差别。Compiling CUDA with clang
另外,AMD的HIP也是兼容CUDA语法的编程语言,也已经在clang中支持了。
开源社区还有OpenCL、SYCL等GPU编程语言,编程思想都是和CUDA一致的。熟悉CUDA的开发者上手这些语言是比较快的,而且也有一些自动化工具能把CUDA代码自动转成这些开放的GPU编程语言。
这些编程语法,要求底层的硬件能支持和Nvidia GPU类似的架构,如block/warp/thread等线程层级、Global memory/shared memory/register等内存层级等。那么问题来了,如果芯片架构一致,Nvidia就会在自己的地盘用丰富的经验打败你,你的硬件和Nvidia有啥差异呢?
所以现在AI芯片的设计有两个流派,一个就是ASIC流派,用一种和Nvidia GPU非常不一样的硬件架构,比如存内计算、稀疏计算等等,在特定任务上会比Nvidia GPU有优势(功耗、TCO等),但是编程语言上就很难和CUDA以及其它GPU编程语言兼容,软件生态不太好建立;另一个流派就是买一个现成的GPU IP(如imagination),原生兼容OpenCL/CUDA,但是性能在各种领域被Nvidia GPU吊打。
长期不好说,短期内,Nvidia GPU以及CUDA还是会继续垄断AI的生态。

您需要登录后才可以回帖 登录 | 立即注册