使用 APARAPI 进行 GPU 编程 APARAPI(A-PARallel-API)是一个基于 OpenCL 的用于 GPU 编程的 wrapper。 ://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cuda-aparapi </groupId> <artifactId>aparapi</artifactId> <version>1.4.1</version> </dependency> </dependencies> </project> MatrixMultiplication.java import com.aparapi.Kernel; import com.aparapi.Range; /** * Created by anuradhawick on 12/29/17. */ public class MatrixMultiplication
HSA 1.0 最终标准将会整合去年 AMD Kaveri 发布会上介绍的 Aparapi 和 Project Sumatra。
其中的大部分都可以通过 Aparapi 在GPU上进行计算,可以利用迷你批次训练。 通过 Aparapi 进行 GPU 计算 像我之前提到的,神经网络在近些年复兴的一个重要原因是其训练的方法可以高度并行化,允许我们通过GPGPU高效的加速训练。 本文中,我选择 Aparapi 库来进行GPU的支持。 Aparapi 在连接计算上强加了一些重要的限制: 只允许使用原始数据类型的一维数组(变量)。 在GPU上运行的程序只能调用 Aparapi Kernel 类本身的成员函数。 这样,大部分的数据(权重、输入和输出数据)都要保存在 Matrix 实例里面,其内部是一个一维浮点数组。 而且Aparapi 允许相同的代码运行在CPU和GPU上。 训练 training 的模块实现了多种训练算法。这个模块依赖于上文提到的两个模块。
其中的大部分都可以通过 Aparapi 在GPU上进行计算,可以利用迷你批次训练。 通过 Aparapi 进行 GPU 计算 像我之前提到的,神经网络在近些年复兴的一个重要原因是其训练的方法可以高度并行化,允许我们通过GPGPU高效的加速训练。 本文中,我选择 Aparapi 库来进行GPU的支持。 Aparapi 在连接计算上强加了一些重要的限制: 只允许使用原始数据类型的一维数组(变量)。 在GPU上运行的程序只能调用 Aparapi Kernel 类本身的成员函数。 这样,大部分的数据(权重、输入和输出数据)都要保存在 Matrix 实例里面,其内部是一个一维浮点数组。 而且Aparapi 允许相同的代码运行在CPU和GPU上。 训练 training 的模块实现了多种训练算法。这个模块依赖于上文提到的两个模块。
此外还有一些新兴工具,如 TornadoVM、Rootbeer 与 Aparapi,它们通过字节码转换或 DSL 从 Java 启用 GPU 加速。这些工具适合研究与试验,但未必适合规模化生产。