java 调用gpu_使用GPU加速Java、C++程序需要怎么操作?

gpu跑的是对应的gpu指令,并不是什么语言,cpu也一样。

所有语言一样是要被编译成对应平台的机器指令。或者用解析器执行时转换成机器指令。python做深度学习,要做gpu加速,底层还是要通过编译器转换成gpu指令。所用的工具一般是CUDA,Opencl,DirectCompute.

使用CUDA就是把C/C++代码编译成GPU的指令。再配合其他API调用代码,只能用在Nvidia的GPU。

OpenCL跟DirectCompute是不分显卡的。只要显卡硬件支持通用计算,实现了该驱动。CL的kernel是一种类C的语言。最终会被编译成GPU指令。至于C++ Java也可以做的,也只是调用编译好的Kernel。往里面拷贝数据,穿参数。让GPU计算完后,CPU再取回数据。

GPU计算一般是面向大型的统一的数据,所谓统一就是数据类型都是一样的。就是固定类型,大小的数组。因为是SIMD/SIMT,适合做简单的计算。对每个数据单元的处理是一样的,不适合有复杂条件跳转的逻辑。所以GPU加速使用场景比较有限。

另外的SIMD指令加速,对于小型的数据,可以优先考虑。因为GPU加速,可能需要内存拷贝,使用开销相对较大。用SIMD的话,直接就是用CPU的特殊指令MMX SSE AVX加速。Java应该会有对应的包,C++用Intrinsic头文件。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值