图形处理单元(GPGPU)上的通用计算是一个非常吸引人的概念,可以利用GPU的能力进行任何类型的计算。
我很想使用GPGPU进行图像处理,粒子和快速几何运算。
现在,似乎这个领域的两个竞争者是CUDA和OpenCL。我想知道:
任何现实世界的经验/示例/战争故事都值得赞赏。
AFAIK,JavaCL / OpenCL4Java是目前所有平台上都可用的唯一OpenCL绑定(由于使用了JNA,因此包括MacOS X,FreeBSD,Linux,Windows,Solaris,所有版本均为Intel 32、64位和ppc变体)。
它具有至少可以在Mac和Windows上从Java Web
Start正常运行的演示(为避免在Linux上随机崩溃,请参阅此Wiki页面,例如此粒子演示)。
它还带有一些实用程序(GPGPU随机数生成,基本并行约简,线性代数)和Scala
DSL
。
最后,它是最旧的绑定(自2009年6月以来),并且拥有活跃的用户社区。
(免责声明:我是JavaCL的作者:-))
目标:在OpenCL中实现下面所示的图表。OpenCl内核需要做的主要工作是将系数数组和临时数组相乘,然后在最后将所有这些值累加为一。(这可能是时间最密集的操作,并行性在这里非常有用)。 我正在为执行乘法和加法的内核使用一个辅助函数(我希望这个函数也是并行的)。 图片描述: 每次一个值被传递到与系数数组大小相同的数组(临时数组)中。现在,每次一个值被传递到这个数组中,临时数组都会并行地与系数数组相
有一项政策规定,一个项目的税收应该四舍五入到最接近的0.05。因此,1.499应四舍五入至1.5,7.125应四舍五入至7.25。 上述四舍五入要求可以使用以下逻辑实现: 把税加到该项目的成本上就会产生: 我尝试使用BigDecimal而不是float来存储所有的值,并将刻度设置为小数点后2位。这种方法的问题是,如果没有指定舍入策略,bigDecimal将在某些情况下引发异常。为BigDecima
我试图用Java编写异步编程,并使用ExecutorService创建一个由多个线程支持的池来提交多个可调用任务,但对于如何关闭ExecutorService我没有什么问题。 以下是我的原始代码: 这样做很好,执行器在线程完成后关闭。但我担心如果写错了什么,可调用任务中的代码将永远占用,程序将永远停止,永远不会退出。 我的问题是如何设置强制关闭池中线程的时间,这样我就不需要显式地使用来阻止程序。
问题内容: 在调用对象的函数之前,我需要检查对象是否为null,以避免引发。 最好的方法是什么?我考虑过这些方法。 哪一种是Java最佳编程实践? 问题答案: 方法4是最好的。 将使用短路评估,这意味着如果a的第一个条件为假,则评估结束。
问题内容: 从其他一些应用程序中,我正在获取XML文件。 我想逐个节点读取该XML文件,并将节点值存储在数据库中以备将来使用。 那么,使用Java读取XML文件和检索节点值的最佳方法/ API是什么? 问题答案: dom4j和jdom非常易于使用(暂时忽略“最佳”需求;))
问题内容: 我正在尝试使用Java中的分数。 我想实现算术函数。为此,我首先需要一种将功能标准化的方法。我知道我只有一个公分母才能将1/6和1/2加起来。我将不得不添加1/6和3/6。天真的方法会让我加2/12和6/12,然后减少。如何以最少的性能损失获得一个共同的分母?哪种算法最适合呢? 版本8(感谢hstoerr): 改进包括: 现在equals()方法与compareTo()方法一致 问题答