问题标签 [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.

0 投票
1 回答
510 浏览

java - 用 aparapi 计算 Levenshtein 距离

我正在研究使用 APARAPI 实现 Levenshtein 距离算法的可能性,但我遇到了一些限制问题- 特别是我需要在内核中创建一个被禁止的数组。

有没有办法解决这个问题,或者更好的是有没有人有一种适用于 APARAPI 的 Levenshtein 距离方法?

附加代码只是为了尝试对 APARAPI 内容进行排序,我知道我没有对结果做任何事情,我现在只是执行一次。

0 投票
0 回答
282 浏览

java - 从 Aparapi 线程返回

我正在使用 Aparapi,但无法返回我想要的数据。我发现 Aparapi 的工作方式类似于线程。

从这段代码中,我试图将找到的返回到我的返回中。

0 投票
1 回答
2180 浏览

parallel-processing - 在使用 OpenCL 时并行化...

原则

我知道,如此简单的计算不值得精心并行化。就是这样一个例子,数学运算只是一些更有趣的计算的占位符。

[伪代码]

最特殊的表达方式可能是:output[id] !== 25. 这意味着: 如果input有四个元素(按此顺序):[8, 5, 2, 9],那么output应该是[64, 25]2or的平方9不会被用作的项output(因为output[id] !== 25trueforid = 1input[id] = 5)。

如果您正在优化这段代码,您可能希望提前计算每个的平方input[id](不证明第二个while条件),但不能保证结果稍后是相关的(如果先前计算的结果是 25 ,当前计算的结果是无趣的)。

概括地说,我说的是计算结果 output[id]( output[id] = calculateFrom(input[id]);) 可能与每个都不相关的情况id——结果 ( output[id]) 的需要取决于另一个计算的结果。

我的目标

我想使用OpenCL内核和队列以尽可能并行和高性能的方式执行这个循环。

我的想法

  • 我想:为了能够并行化这样的do...while循环,我们应该output[id] = calculateFrom(input[id]);提前同时进行一些计算()(不知道结果output[id]是否有用)。如果先前的结果是25,那么结果output[id]就会被拒绝。

  • 也许我们应该考虑 的概率output[id] !== 25。如果概率非常高,我们不会提前进行很多计算,因为它们的结果可能会被拒绝。如果概率绝对低,那么我应该提前做更多的计算。

  • 我们应该听听处理单元的当前状态。如果它已经过度紧张,我们不应该进行不重要的提前计算。但是,如果有足够的资源来处理提前计算,那为什么不呢。- 因为:如果提前计算和之前的计算(这些提前计算所依赖的)被同时处理,那么提前附加也可能减慢之前的计算 - (见我的第二个问题)

我的问题

  1. 并行化这些程序是明智的还是高性能的?
  2. 我应该根据哪些标准来决定处理单元是否有足够的资源来执行我的提前计算任务?或者:我怎么知道我的处理单元是否过度紧张
  3. 您是否知道任何其他并行化此类do...whiles 的计划?你对此有什么想法吗?

我希望我想告诉你的总是很清楚。但如果不是,请评论我的问题。- 感谢您的回答和帮助。

0 投票
2 回答
3296 浏览

java - jMonkey 优化类似于 Java3D 的

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

几天来,我一直在 Eclipse(java 64 位)中学习 jMonkey 引擎(ver: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-kernels 更新粒子位置,这需要 10 毫秒(16k * 16k 相互作用来计算力)。(在优化模式下不会改变任何东西:()aparapi 可以访问那些优化的数据吗?

对于batchNode.batch();优化的情况,这里又是 1 fps,对象数减少:

在此处输入图像描述

对象数量现在只有几百,但 fps 仍然是 1!

仅将球体位置发送到 gpu 并让它计算顶点位置可能比在 cpu 上计算顶点并将大量数据发送到 gpu 更好。

没人来帮忙吗?已经尝试过 batchNode 但没有提供足够的帮助。

我不想更改 3d api,因为 jMonkey 人已经重新发明了轮子,我对目前的情况感到满意。只是想提高一点性能(取消阴影可以提高 %100 的速度,但质量也很重要!)。

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

Marching-cubes算法会大大减少三角形数。如果您不能给出任何答案,那么任何用于 java 的行进立方体(或任何 O(n) 凸包)算法都将被接受!数据:x、y、z 阵列作为源,三角带阵列作为目标(等表面网格点)

谢谢。

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

1) 一个立方体形岩群在引力作用下的坍塌: 在此处输入图像描述

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

3)排斥力+万有引力使团形成更光滑的形状: 在此处输入图像描述

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

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

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

7) 撞击时刻: 在此处输入图像描述

在 Barnes-Hutt 算法和截断势的帮助下,粒子数将增加 10 倍(可能是 100 倍)。

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

鬼布会受到nbody(重力+排斥)的影响,但nbody不会受到包裹它的布的影响。Nbody 不会被渲染,但布料网格将以较低的三角形计数渲染。

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

如果 MC 或更高版本有效,这将让程序为大约 200 倍以上的粒子渲染包裹布。

0 投票
1 回答
950 浏览

java - 使用浮点或整数数组计算 Pi

我正在使用 Aparapi 在 GPU 上的 Java 程序中进行数字运算。据我了解,Aparapi 非常适合浮点数组。

我想使用 Aparapi 将 Pi 计算到小数点后 N。我正在考虑使用 Leibniz 方法,但我不确定如何处理以浮点或整数形式表示和存储长小数。

整数数组是否可以工作,数组的大小是所需的 N 个小数?

如果我将它与 Leibniz 方法一起使用,我需要为我找到的 M 个项计算 N 个整数的数组(Liebniz 说 pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 ....),然后将它们加在一起并将结果数乘以 4。但这意味着我需要为我计算的每个术语分配 M 个整数,这会加起来并且确实会占用内存。

tl;dr:如何使用浮点运算循环计算 Pi,以便我可以使用 Aparapi 来计算?

非常感谢!

0 投票
1 回答
741 浏览

aparapi - getGlobalId() 的 aparapi 起始索引

我使用 aparapi 进行并行化,我想转换这个 java 代码:

在 aparapi 中的等价物:

0 投票
1 回答
1361 浏览

macos - Aparapi 添加示例

我正在研究 Aparapi ( https://code.google.com/p/aparapi/ ) 并且包含其中一个示例的奇怪行为。样本是第一个,“添加”。构建和执行它,没问题。我还放了下面的代码来测试GPU是否真的用过

它工作正常。但是,如果我尝试将数组的大小从 512 更改为大于 999 的数字(例如 1000),我将得到以下输出:

这是我的代码:

}

我尝试使用指定大小

正如谷歌小组中所建议的那样,但没有任何改变。

我目前正在使用 Java 1.6.0_43 的 Mac OS X 10.8 上运行。Aparapi 版本是最新的(2012-01-23)。

我错过了什么吗?有任何想法吗?

提前致谢

0 投票
1 回答
265 浏览

java - Aparapi 是否提供任务并行性?

aparapi(Open CL 的 Java 中的 API)是提供任务并行还是仅提供数据并行。如果提供任务并行性,是否保证任务将在不同的设备上执行

0 投票
1 回答
452 浏览

java - Aparapi 类将字节码转换为 OpenCL 内核

我正在使用Aparapi从 Java 编写 OpenCL。

但是我找不到哪个 Aparapi 类将 Java 字节码转换为 OpenCL 内核。你能指点我吗?

0 投票
1 回答
403 浏览

performance - OpenCL 索引操作:算法与常量索引缓冲区

所以我正在使用 Aparapi(它从 Java 代码生成 OpenCL)编写一个神经网络库。无论如何,在很多情况下,在进行前向传播和反向传播时,我需要执行复杂的索引操作来找到给定权重的源/目标节点。

在许多情况下,这是非常简单的 1D 到 2D 公式,但在某些情况下,例如对于卷积网络,我需要做一些更复杂的操作来找到索引(通常类似于 3D 到 1D 到 3D)。

我一直坚持使用算法来计算这些指数。另一种方法是将每个权重的源索引和目标索引简单地存储在一个常量 int 数组中。我避免了这种情况,因为这几乎会使内存存储量增加一倍。

我想知道计算索引与从常量数组​​中读取索引的速度差异是多少?我是在失去速度来换取记忆吗?差异显着吗?