JavaGPU编程-第一节-安装配置Jcuda

关于Jcuda

关于Cuda,大家都并不陌生,使用Cuda可以在N卡上运行程序, 但Cuda和Java的混合使用一直都是个麻烦事,毕竟两者本来都不该有交集,但GPU的高并发能力强大无比,上基本都是Java通过JNI调用CUDA程序,但麻烦无比,所以为何不直接使用Jcuda来简化开发流程呢?

这几天在用Jcuda,看也没多少关于Jcuda的文章,属实遗憾,所以想填补一下这方面的空白

JCuda目前提供以下功能:

    支持 CUDA 驱动程序 API 可以在驱动程序 API 中加载自己的模块 支持 CUDA 运行时 API 不同基于 CUDA 的库之间的完全互操作性,即 JCublas - CUBLAS的Java绑定,NVIDIA CUDA BLAS 库 JCufft - CUBLAS的Java绑定,NVIDIA CUDA FFT 库 JCudpp - CUDA Data Parallel Primitives Library 的 Java 绑定 JCurand - 用于 CURAND 的 Java 绑定,NVIDIA CUDA 随机数生成器 JCusparse - CUSPARSE 的 Java 绑定,NVIDIA CUDA 稀疏矩阵库 JCusolver - CUSOLVER 的 Java 绑定,NVIDIA CUDA 求解器库 JNvgraph - 用于nvGRAPH的Java绑定,NVIDIA CUDA图形库 从本机库的文档中提取全面的 API 文档 OpenGL 互操作性 方便的错误处理

当然使用Jcuda需要先安装Cuda,我建议可以看这篇来安装

如何将Jcuda在自己程序中使用?

对于Maven项目,可以直接在pom.xml中将jcuda添加进来

<dependency>
    <groupId>org.jcuda</groupId>
    <artifactId>jcuda</artifactId>
    <version>11.6.1</version>
</dependency>
<dependency>
    <groupId>org.jcuda</groupId>
    <artifactId>jcublas</artifactId>
    <version>11.6.1</version>
</dependency>
<dependency>
    <groupId>org.jcuda</groupId>
    <artifactId>jcufft</artifactId>
    <version>11.6.1</version>
</dependency>
<dependency>
    <groupId>org.jcuda</groupId>
    <artifactId>jcusparse</artifactId>
    <version>11.6.1</version>
</dependency>
<dependency>
    <groupId>org.jcuda</groupId>
    <artifactId>jcusolver</artifactId>
    <version>11.6.1</version>
</dependency>
<dependency>
    <groupId>org.jcuda</groupId>
    <artifactId>jcurand</artifactId>
    <version>11.6.1</version>
</dependency>
<dependency>
    <groupId>org.jcuda</groupId>
    <artifactId>jcudnn</artifactId>
    <version>11.6.1</version>
</dependency>

非Maven项目的话,可以再官网自己下载JCuda文件

注意:JCuda的版本需要和Cuda版本匹配,否则会出问题!!!

查看是否成功

我使用的是Maven项目

import jcuda.Pointer;
import jcuda.runtime.JCuda;

public class Test {
          
   
    public static void main(String args[])
    {
          
   
        Pointer pointer = new Pointer();
        JCuda.cudaMalloc(pointer, 4);
        System.out.println("Pointer: "+pointer);
        JCuda.cudaFree(pointer);
    }
}
经验分享 程序员 微信小程序 职场和发展