要搞清楚CUDA是什么,先要明白CPU和GPU的区别。
CPU架构有复杂的控制单元和巨大缓存。
这种设计是为了处理复杂逻辑运算。这要求CPU必须有很强的单核性能。
但CPU物理核心数量有限,就算最高端的服务器CPU,面对海量简单计算时,也会因为线程数量限制而排队。
快看网的推荐算法,本质是海量矩阵乘法。
这些计算本身不复杂,不需要多强逻辑推理,但数量极其庞大。
让CPU去算矩阵,是高射炮打蚊子,效率极低,而且容易把服务器撑爆。
GPU架构完全不同。
GPU没有复杂控制单元,内部塞满了成百上千个简单的流处理器。
这些流处理器只能做基础运算。
但因为数量庞大,它们可以同时并行处理海量数据。
这完美契合了AI算法和推荐系统需要的大规模并行计算。
可是,硬件再强,也需要软件驱动。
在CUDA出现前,程序员想用显卡算力做非图形渲染的通用计算,简直是噩梦。
他们必须把非图形数据,强行伪装成图形像素数据,通过复杂图形API通道传给显卡。
等显卡算完,还要把输出像素数据反向解析回通用数据。
这种操作极其繁琐,写错一行代码,就会导致程序崩溃。
所以,空有强大并行算力,却没人能轻易用在非游戏领域。
直到黄仁勋做出大胆决定,推出CUDA。
CUDA全称是计算统一设备架构。
它本质是一个软件开发平台和编程模型。
英伟达在每张显卡底层嵌入了CUDA硬件指令集,同时在软件层面推出一整套编译器、库文件和开发工具。
CUDA最伟大也最可怕的地方在于,它允许程序员直接用最普及的C语言,调用显卡底层算力。
程序员不再需要学晦涩的图形API,也不需要伪装数据。
只要会写C语言,只要装了CUDA开发包,就能轻松把一段并行计算代码跑在英伟达显卡上。
这极大降低了GPU通用计算门槛。
华尔街投资人不理解,为什么一家卖硬件的公司,要养几千软件工程师维护一个免费给开发
(本章未完,请点击下一页继续阅读)