<< 新闻中心

国产化GPU并行计算CUDA开发 -Java篇


——国产化Java开发基于显卡高性能并行运算技术

2020-06-20 18:44:23 作者 书写人生

什么是CUDA?

    CUDA(Compute Unified Device Architecture)是NVIDIA公司开发的一种计算架构,可以利用NVIDIA系列显卡对一些复杂的计算进行并行加速。

为什么要用CUDA加速?

    在科学计算领域所要用到的计算往往不是我们熟知的普通矩阵,而是千维甚至万维的矩阵,而普通的CPU串行计算往往不能满足与科学计算所要求的性能。最好的例子就是深度学习,可以说深度学习起源于感知机但正真发展在于计算能力的提高,也就是显卡计算的兴起。深度学习的计算都是基于矩阵的计算,而普通一个识别手写数字的神经网络都有上千个隐含节点,故CUDA性能优化是一门重要的技术。

为什么显卡可以加速?

    首先,显卡可以加速最大的原因是其含有上千个CUDA核心,而CPU的核心往往都在各位数,这就决定了显卡可以高度并行的对一些高维度矩阵进行计算。CPU的I/O需要数百上千个周期,串行的计算大部分时间都消耗在I/O上,而显卡则不然,NVIDIA显卡的架构是类似于SIMD架构的SIMT架构,T指的是Threads,也就是单指令多线程架构,上一个线程在进行运算操作时下一个线程就开始I/O操作,类似于指令流水线的形式,当Threads数量足够多时,就可以屏蔽I/O所带来的大量开销,所以本身架构决定了CPU与显卡计算方式的区别。

    CPU就好比是一个身强体壮的大汉一下可以挑100公斤粮食,显卡好比是只能挑起10公斤粮食的小矮人,但有20个。现在有2000公斤粮食,I/O相当于需要1分钟时间把粮食装进桶才能挑走(每次只能一个人装桶),运算时间相当于挑一次到目的地需要20分钟。CPU每趟需要21分钟,共20趟,总共需要420分钟。显卡第一趟也需要21分钟,且只能挑10公斤粮食,但第一趟在刚装完桶时,第二个小人就开始装桶了,在第一个小人送完时最后一个小人也装完了桶,接着第一个小人又可以装桶了,所以从共需要2000/10=200个轮回,但每个轮回只需要1分钟,加上最后的小人需要20分钟送完,总计200×1+20=220分钟,比CPU快近一倍的时间。当运算需求越大时,GPU的优势越明显。

CUDA如此强大,是否可以在国产化中使用Java或迁移或改造?

    当然可以实现Java系统和Web服务系统的B/S架构并行计算,并且利用Java Web服务,还可以将服务器GPU资源合理分配利用给各个用户。

    在浏览器中,用户即可完成GPU调用工作,不仅能国产化要求,还可以将同一个强大的GPU资源共享给所有用户,实现资源共享,统一调度与分配(否则每个用户必须拥有一张高性能显卡)。

    具体更多实现细节,因涉及商业技术秘密,不在此详述。想了解更多Java国产化与并行计算技术,欢迎致电我司技术研发,为您提供更完整的解决方案。


    公司名称:四川书写人生科技有限公司

    通信地址:成都市金牛区兴盛西路2号固特大厦3幢A座405A

    公司座机:028-83410634

    微信电话:191-8044-7517

    联系邮件:admin@skycto.com

    我们承诺:邮件12小时回,微信4小时回复,欢迎致电联系。

推荐阅读

首页 分享微博 分享微信 回到顶部