- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对英特尔线程构建 block 印象深刻。我喜欢我应该如何编写任务而不是线程代码,并且我喜欢它在我有限的理解下如何工作(任务在一个池中,4核上不会有100个线程,一个任务不能保证运行,因为它不在它自己的线程并且可能远离池。但它可能与另一个相关任务一起运行,因此您不能做典型的线程不安全代码之类的坏事)。
我想了解更多关于写作任务的信息。我喜欢这里的“基于任务的多线程 - 如何为 100 个内核编程”视频 http://www.gdcvault.com/sponsor.php?sponsor_id=1 (目前倒数第二个链接。警告它不是“好”)。我最喜欢的部分是“最好并行解决迷宫”,大约在 48 分钟左右(您可以单击左侧的链接。如果有的话,这部分确实是您需要观看的全部内容)。
但是我喜欢看更多的代码示例和一些关于如何编写任务的 API。谁有好的资源?我不知道一个类或一段代码在将其推送到池后会是什么样子,或者当您需要复制所有内容以及将所有内容推送到池中时,代码看起来会如何。
最佳答案
Java 有一个类似于 Thread Building Blocks 的并行任务框架——它被称为 Fork-Join 框架。它是 available用于当前的 Java SE 6 并包含在即将推出的 Java SE 7 中。
除了 javadoc 类文档之外,还有一些资源可用于开始使用该框架。来自 jsr166 page , 提到
“还有一个 wiki,其中包含这些类(class)的附加文档、注释、建议、示例等。”
fork-join examples ,例如矩阵乘法是一个很好的起点。
我使用 fork-join 框架解决了一些 Intel's 2009 threading challenges .该框架是轻量级且开销低的——我的框架是骑士巡回赛问题的唯一 Java 条目,它在比赛中的表现优于其他条目。 Java 源代码和文章可从挑战站点下载。
编辑:
I have no idea how a class or pieces of code may look after pushing it onto a pool [...]
RecursiveTask
javadocs - 评论是我的。)
// declare a new task, that itself spawns subtasks.
// The task returns an Integer result.
class Fibonacci extends RecursiveTask<Integer> {
final int n; // the n'th number in the fibonacci sequence to compute
Fibonnaci(int n) { this.n = n; } // constructor
Integer compute() { // this method is the main work of the task
if (n <= 1) // 1 or 0, base case to end recursion
return n;
Fibonacci f1 = new Fibonacci(n - 1); // create a new task to compute n-1
f1.fork(); // schedule to run asynchronously
Fibonacci f2 = new Fibonacci(n - 2); // create a new task to compute n-2
return f2.invoke() + f1.join(); // wait for both tasks to compute.
// f2 is run as part of this task, f1 runs asynchronously.
// (you could create two separate tasks and wait for them both, but running
// f2 as part of this task is a little more efficient.
}
}
// default parallelism is number of cores
ForkJoinPool pool = new ForkJoinPool();
Fibonacci f = new Fibonacci(100);
int result = pool.invoke(f);
[...] or how weird code may look when you need to make a copy of everything and how much of everything is pushed onto a pool.
关于parallel-processing - 任务怎么写? (平行码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2814838/
这个问题在这里已经有了答案: Can I get `cabal install` to use multiple cores? (3 个回答) 关闭 7 年前。 在使用类似于 GNU make 的 -
我正在尝试通过 akeeba backup 在 parallels plesk 面板中安装一个 joomla 站点。我在哪里面临文件权限问题。 An error occured Could not o
我在 MATLAB 中使用箱线图函数。我需要为 6 个“XTicks”绘制 6 个不同数据集的箱线图,即 x 轴上的每个刻度线应包含 6 个相应的框、晶须、中线和其域内的异常值集。我尝试通过为每个变量
我需要在 Kaplan Meier 图上呈现 at_risk 数字。 最终结果应该与此类似: 我在渲染时遇到的问题是 No。处于危险中的患者数量位于图表底部。此处显示的值对应于 x 轴上的值。因此本质
我想知道你们中的任何一个人为什么知道我的表现糟透了吗? 我正在努力实现的目标; 生成220万个文件。要创建每个文件,平均需要2-5个数据库调用。 我正在使用的服务器具有24个内核和190GB的RAM。
请帮忙。我正在研究具有此要求的算法。 给定 4 个“右”矩形(右矩形的边平行于 x 或 y),找出它们中的任何一个覆盖的区域 例如,灰色区域被下图中的 4 个矩形中的任何一个覆盖。 enter ima
我是一名优秀的程序员,十分优秀!