标签: aparapi

jMonkey优化类似于Java3D的

编辑:为了进行实时绘图,在opengl和opencl之间的"互操作性"中开始使用ljjgl(jmonkeyengine和jocl的基础),现在可以实时计算和绘制100k粒子.也许mantle版本的jmonkey引擎可以解决这个drawcall开销问题.

几天来,我一直在学习Eclipse(java 64位)中的jMonkey引擎(版本:3.0)并尝试使用GeometryBatchFactory.optimize(rootNode);命令优化场景.

没有优化(具有改变球体位置的能力):

在此输入图像描述

好的,只有1-fps来自pci-express带宽+ jvm开销.

通过优化(无法改变球体位置):

在此输入图像描述

现在即使三角形数量增加也是29 fps.

Java3D有一种setCapability()方法,即使在优化的形式下也能够读/写场景对象.jMonkey引擎3.0必须能够满足这个主题,但我找不到它的任何痕迹(搜索过的教程和示例,失败了).

问题:如何在jMonkey 3.0中设置场景节点的read/write position/rotation/scale功能optimized?如果你不能回答第一个问题,你能告诉我为什么在使用优化命令时三角数会增加吗?我是否必须创建一种新方法来访问图形卡并自己更改变量(可能是jogl?)?

场景信息:16k粒子(16x16 res的球体)+ 1点光源(以及4096分辨率的阴影).

我确信我们可以通过pci-express轻松地在几毫秒内发送数千个浮点数.

  • 附加信息:我正在使用Aparapi内核来更新粒子位置,这需要10毫秒(16k*16k的交互来计算力).(在优化模式下不会改变任何东西:()aparapi可以访问那些优化数据吗?

对于batchNode.batch();优化的情况,这里再次使用减少的对象数1 fps:

在此输入图像描述

对象编号现在只有几百个,但fps仍然是1!

将球体位置发送到gpu并让它计算顶点位置可能比计算cpu上的顶点以及向gpu发送大量数据更好.

这里没有人帮忙吗?已经尝试过batchNode但没有帮助.

我不想改变3d api,因为jMonkey人已经重新发明了轮子,我对目前的情况很满意.只是试图挤出更多的性能(取消阴影给出100%的速度,但质量也很重要!).

这个java程序将成为一个小行星撞击场景模拟器(将有小行星大小,质量,速度,角度的选择)与带有LOD的行进立方体算法(将是数百万个粒子).

Marching-cubes算法会大大减少三角形数.如果你无法回答这个问题,那么任何行进立方体(或任何O(n)凸包)算法都将被接受!数据:作为源的x,y,z数组和作为目标的三角形条形阵列(等面网格点)

谢谢.

以下是有关流的一些示例(分辨率低得多):

1)通过引力折叠立方体形状的岩石组: 在此输入图像描述

2)排斥力开始显现: 在此输入图像描述

3)排斥力+引力使得组形成更平滑的形状: 在此输入图像描述

4)组形成一个球体(如预期的那样): 在此输入图像描述

5)然后,一个大的恒星身体接近: 在此输入图像描述

6)即将触摸: 在此输入图像描述

7)影响的时刻: 在此输入图像描述

借助Barnes-Hutt算法和截断电位,粒子数将增加10倍(可能超过100倍).

不是Marching-Cubes算法,包裹nbody的鬼布可以给出低分辨率的船体(比BH更容易但需要更多的计算)

鬼布会受到nbody(重力+排除)的影响,但是不会受到包裹它的布的影响.Nbody不会被渲染,但布料网格将以较低的triange数量渲染.

在此输入图像描述 在此输入图像描述

如果MC或以上工作,这将使程序渲染一个包裹布,大约200倍的粒子.

java opengl java-3d jmonkeyengine aparapi

34
推荐指数
1
解决办法
3090
查看次数

Aparapi数据类型

我有以下代码供学习.

当在aparapi上运行时,我的计算函数会产生意外的结果.

我的代码或aparapi有任何问题吗?

结果是;

Result      Num         Expected
2026982348  406816880   40681688012
2026982516  406816881   40681688180
2026982594  406816882   40681688258
2026982662  406816883   40681688326
2026982830  406816884   40681688494
2026982898  406816885   40681688562
2026982966  406816886   40681688630
2026983044  406816887   40681688708
2026983212  406816888   40681688876
2026983280  406816889   40681688944
2026983338  406816890   40681689002
2026983506  406816891   40681689170
2026983584  406816892   40681689248
2026983652  406816893   40681689316
2026983820  406816894   40681689484
2026983888  406816895   40681689552
2026983956  406816896   40681689620
2026984134  406816897   40681689798
2026984202  406816898   40681689866
2026984270  406816899   40681689934
Run Code Online (Sandbox Code Playgroud)

编辑:如果我设置executionMode JTP或CPU,我得到真实的结果(结果==预期)但在GPU模式下有一个问题.我正在使用2013年末的macbook pro视网膜与Windows 10.

Edit2:我的计算方法的返回行导致问题.如果我回来Long.MAX_VALUE,它的确有效.但是(long) tc * 100 …

java aparapi

7
推荐指数
1
解决办法
263
查看次数

如何安装aparapi

我一直在寻找一种用 Java 开发 openCL 的方法。我发现 aparapi 很有趣,因为它专注于并行化,但也创建 openCL 代码。据我了解,无论有没有 GPU,代码都可以运行,但仍然可以并行运行。我的麻烦是:在哪里可以找到有关如何安装什么的文档?AMD 网站经常被指出,但它不包含有关 aparapi 的信息,我也想知道他们的代码是否可以在 Nvidia 卡上运行。Google 代码的链接已过时,Github 站点也没有多大帮助。非常感谢指向更多文档的指针。

顺便说一句:我在 Github 上注意到 aparapi 的脉搏并不势不可挡。从 aparapi 开始明智吗?我认为我最好远离 openCL 本身,因为它对我来说太低级了。但也许有人可以争论我如何做出更好的决定(LWJGL?)。

java opencl aparapi

5
推荐指数
2
解决办法
2280
查看次数

Aparapi 添加示例

我正在研究 Aparapi ( https://code.google.com/p/aparapi/ ),并且其中包含的示例之一有一种奇怪的行为。示例是第一个“添加”。构建并执行它,就可以了。我还放了下面的代码来测试GPU是否真的被使用

if(!kernel.getExecutionMode().equals(Kernel.EXECUTION_MODE.GPU)){
    System.out.println("Kernel did not execute on the GPU!");
}
Run Code Online (Sandbox Code Playgroud)

而且效果很好。但是,如果我尝试将数组的大小从 512 更改为大于 999 的数字(例如 1000),则会得到以下输出:

!!!!!!! clEnqueueNDRangeKernel() failed invalid work group size
after clEnqueueNDRangeKernel, globalSize[0] = 1000, localSize[0] = 128
Apr 18, 2013 1:31:01 PM com.amd.aparapi.KernelRunner executeOpenCL
WARNING: ### CL exec seems to have failed. Trying to revert to Java ###
JTP

Kernel did not execute on the GPU!
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

  final int size = 1000;

  final float[] a = new float[size];
  final float[] b = …
Run Code Online (Sandbox Code Playgroud)

macos opencl java-6 aparapi

2
推荐指数
1
解决办法
1501
查看次数

Aparapi GPU执行速度慢于CPU

我正在尝试测试Aparapi的性能。我看过一些博客,结果表明Aparapi在执行数据并行操作时确实提高了性能。

但我无法在测试中看到这一点。这就是我所做的,我编写了两个程序,一个使用Aparapi,另一个使用普通循环。

程序1:在阿帕拉皮

import com.amd.aparapi.Kernel;
import com.amd.aparapi.Range;

public class App 
{
    public static void main( String[] args )
    {
        final int size = 50000000;

        final float[] a = new float[size];
        final float[] b = new float[size];

        for (int i = 0; i < size; i++) {
           a[i] = (float) (Math.random() * 100);
           b[i] = (float) (Math.random() * 100);
        }

        final float[] sum = new float[size];

        Kernel kernel = new Kernel(){
           @Override public void run() {
              int gid = …
Run Code Online (Sandbox Code Playgroud)

java parallel-processing aparapi

2
推荐指数
1
解决办法
2334
查看次数