怎样用显卡进行程序计算?
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头文件。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有