gpt4 book ai didi

chapel - 我正在尝试使用 Chapel 来改善矩阵乘法的运行时间

转载 作者:行者123 更新时间:2023-12-02 02:09:45 24 4
gpt4 key购买 nike

我正在努力提高我的矩阵乘法速度。我可以做其他实现来加快速度吗这是到目前为止我的结果,我尝试执行 8192,但花了 2 个多小时,而且我的 ssh 连接超时。 enter image description here

这是我的实现:

use Random, Time;
var t : Timer;
t.start();

config const size = 10;
var grid : [1..size, 1..size] real;
var grid2 : [1..size, 1..size] real;
var grid3 : [1..size, 1..size] real;

fillRandom(grid);
fillRandom(grid2);

//t.start();
forall i in 1..size {
forall j in 1..size {
forall k in 1..size {
grid3[i,j] += grid[i,k] * grid2[k,j];
}
}
}
t.stop();
writeln("Done!:");
writeln(t.elapsed(),"seconds");
writeln("Size of matrix was:", size);
t.clear();

我正在将时间与 C++ 中的 MPI 实现进行比较。我想知道是否有一种方法可以将我的矩阵分发到我的两个区域设置(类似于 MPI)?

最佳答案

这种 forall 循环的嵌套在我们当前的实现中并未提供最佳性能。如果您迭代定义 (i,j) 迭代空间的单个二维域,您的算法将执行得更快。对 k 进行串行循环将避免更新 grid3[i,j] 时的数据竞争。例如:

....
const D2 = {1..size, 1..size};
forall (i,j) in D2 do
for k in 1..size do
grid3[i,j] += grid[i,k] * grid2[k,j];

要分布矩阵,您可以使用 block 分布 - 请参阅我们的 online docs 中的示例。当您分发时,您当然需要注意区域设置之间的额外通信。

测试性能时,请务必使用 --fast 进行编译。

关于chapel - 我正在尝试使用 Chapel 来改善矩阵乘法的运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59278318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com