Java Grande SOR多线程基准测试

时间:2014-02-25 21:27:56

标签: java multithreading

我有一个关于SOR的问题(连续放松)。我知道SOR可以被描述为N * N网格,你可以在网格上执行n次迭代,并且可以报告执行时间。该基准测试具有迭代外循环和两个内循环。内部循环用于更新网格的每个值,但网格的值需要计算中的邻居,因此它是一种串行执行。我的问题是允许并行,我必须知道我是否将在thread()中运行每个迭代,或者我将在一个线程上运行每一行。任何人都可以指导我哪个循环应该具有并行性吗?

1 个答案:

答案 0 :(得分:1)

它是一个二维数组,值只取决于同一行中的其他值;连续值中的任何值都不取决于列中的任何值。

这意味着行可以彼此隔离地计算到完整的遍数。

由于行中间的值取决于前一遍中整行的计算,因此很难在计算行时共享工作。在一个通道内操作的行内跨度的工作窃取队列对于这样一个廉价的实际任务来说将是很多协调开销。分发它似乎太精细了。

因此,一行是一个自然的工作单位。你可能有一个工作窃取行的队列。