gpt4 book ai didi

java - JCuda : doing parallel arithmetic operations on arrays?

转载 作者:行者123 更新时间:2023-11-29 06:16:45 25 4
gpt4 key购买 nike

我只是找不到 JCuda 的最简单任务之一的示例:将两个值数组添加到第三个数组。

我总是只找到 C/C++ 示例,它们依赖于某些 CUDA 预编译器,因此对我来说无法使用。那里发生了可怕的事情,例如:

VecAdd<<<blocksPerGrid, threadsPerBlock>>>(d_A, d_B, d_C, N)

嗯,在 JCuda 库中没有与 VecAdd 类似的东西。

JCuda里面有很多子库,比如JCudpp, JCublas, ...真不知道在哪 寻找什么

请帮忙!

最佳答案

我设法组装了一个工作示例:

来源

import java.util.*;

import jcuda.*;
import static jcuda.jcublas.JCublas.*;

public class Main {

private static final int VECTOR_SIZE = 10;

static {
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {

@Override
public void run() {
cublasShutdown();
}

}));

cublasInit();
}

static void printArrays(float[] a1, float[] a2) {
System.out.println("\t" + Arrays.toString(a1));
System.out.println("\t" + Arrays.toString(a2));
System.out.println();
}

public static void main(String[] args) {
float[] a1 = new float[VECTOR_SIZE];
float[] a2 = new float[VECTOR_SIZE];

for (int i = 0; i < VECTOR_SIZE; ++i) {
a1[i] = i + 1;
}

Pointer p1 = new Pointer();
Pointer p2 = new Pointer();

cublasAlloc(VECTOR_SIZE, Sizeof.FLOAT, p1);
cublasAlloc(VECTOR_SIZE, Sizeof.FLOAT, p2);

System.out.println("BEFORE:");
printArrays(a1, a2);

cublasSetVector(VECTOR_SIZE, Sizeof.FLOAT, Pointer.to(a1), 1, p1, 1);
cublasSetVector(VECTOR_SIZE, Sizeof.FLOAT, Pointer.to(a2), 1, p2, 1);

// THE ACTUAL OPERATION: MULTIPLY AND ADD
cublasSaxpy(VECTOR_SIZE, 20f, p1, 1, p2, 1);

cublasGetVector(VECTOR_SIZE, Sizeof.FLOAT, p2, 1, Pointer.to(a2), 1);

System.out.println("AFTER:");
printArrays(a1, a2);

cublasFree(p1);
cublasFree(p2);
}

}

输出

BEFORE:
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

AFTER:
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
[20.0, 40.0, 60.0, 80.0, 100.0, 120.0, 140.0, 160.0, 180.0, 200.0]

注意事项

现在我将玩弄AMD Aparapi .

关于java - JCuda : doing parallel arithmetic operations on arrays?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4822706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com