问题标签 [aparapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 为什么在 AMD GPU 上运行的 Aparapi 内核允许非常大的 @Local 数组,但不支持 Nvidia?
我有一个 Java 程序需要从 GPU 的本地内存访问一个大型数组。我可以使用'@Local float[] mem = new float[1000000];'声明和访问一个大数组 在带有 AMD Radeon GPU 的笔记本电脑上使用 Aparapi,它工作得很好,但是当我在带有 Nvidia GeForce 1660 Ti 的笔记本电脑上尝试同样的事情时,我从 OpenCl 得到资源不足错误。Nvidia 卡有 3 Gigs 的共享内存,所以我认为它应该没有问题,但显然不是。
几个小时以来,我一直在用谷歌寻找解决问题的方法,但我找不到任何相关文件。
下面是初始化内核内存的代码:
java - 有没有办法从 Math.sin() 或类似的类中获取 32 位(浮点)值,也许像 Math.sin(float a)
我正在尝试在 java 中使用我的 GPU,我正在使用 Aparapi,但我有一个问题,如果我使用 (float)Math.sin(x) 它仍然会退回到 CPU,因为我的 GPU 不支持 F64。有浮点数的数学库吗?我应该使用 gpu 来计算罪孽吗?
java - 素数计算结果不一致
我已经从以下链接https://www.logicbig.com/tutorials/misc/gpu-programming/aparapi/intro-with-example.html运行了“通过在 GPU 上执行代码来查找素数” ,但我已修复它,所以它可以工作 + 改为运行 500,000。
当我多次运行时,结果是不同的。primeNumbers[499901],有时是假的,有时是真的。
代码是:
编译是:
javac -g -classpath aparapi-3.0.0.jar;aparapi-jni-1.4.3.jar;bcel-6.5.0.jar;scala-library-2.13.6.jar;*; GpuExample.java
执行是:
java -classpath aparapi-3.0.0.jar;aparapi-jni-1.4.3.jar;bcel-6.5.0.jar;scala-library-2.13.6.jar;*; GpuExample
任何想法为什么它不一致?
结果:
更多信息:在 Windows 10 上运行,我的 GPU 是 AMD Radeon Vega 8 Graphics。我还尝试仅在 primeNumbers 标志设置为 true 时继续,并且可以确认这不起作用(有时从未设置为 true)。我怀疑有些指令没有在 GPU 上执行。
生成的openCL是(使用-Dcom.aparapi.enableShowGeneratedOpenCL=true)
java - Aparapi getProfileInfo() 返回 null(VM 选项设置为启用分析)
我正在使用(基本上)网站在此处提供的相同代码和 VM 选项来测试 Aparapi 的分析。
https://aparapi.com/documentation/profiling-the-kernel.html
方法 getProfileInfo() 返回 null。可能是什么问题,或者我可以做些什么来确定问题?
结果:
这是在带有 GTX 1080 的 Linux Mint 20.1 上。我已经确认 OpenCV 使用演示和我自己的代码可以正常工作。
java - Aparapi Kernels 可以从运行中调用静态方法吗?
问题和基本细节
我正在试验 Aparapi,我想编写一个实用程序类来处理常见操作;例如
我不确定这是否可行,因为网站的文档说它不会,但我发现该网站的文档已经过时了;例如,Aparapi 现在确实支持 2D 和 3D 数组,但文档中另有说明。
为了测试这一点,我编写了以下测试:
除了测试失败之外,它运行得非常好,因为sum
从未修改过(它只是 [0, 0, 0, 0, 0, 0, 0, 0])
所以,我的问题是:Aparapi 是否意味着支持静态方法调用/对添加的实例方法的调用(有关添加的实例方法的详细信息,请参见下文)?或者这并没有因异常而失败的事实是一个错误?
如果它不支持静态方法调用,我希望在我们尝试创建 OpenCL 时会引发异常。
我试过的东西:
我将 VM arg 设置为打印生成的 OpenCL (-Dcom.aparapi.enableShowGeneratedOpenCL=true),我得到以下信息:
现在,我不知道C
,OpenCL
但对于未经训练的人来说,这看起来不错
我尝试的另一件事是扩展Kernel
到不同的abstract class
本地并在那里添加实用程序方法作为实例方法。
例子:
AparapiUtility
使用匿名内部类而不是 a稍作修改的相同测试Kernel
仍然失败,我收到以下 OpenCL:
再一次,看起来不错。