我正在尝试计算以下内容:
Y = Y0 - ( Un.(A*Y0) + Vn.(Y0*Z) )*dt
以最快/最有效的方式,其中 Y0、Un、Vn、A 和 Z 是尺寸约为 300 X 300 的矩阵,“。” 是矩阵点积,“*”表示矩阵乘法。
我的问题是:
正在计算计算独立的子矩阵 A2 = A*Y0 和 Z2 = Y0*Z,然后 Un2 = Un.*A2 和 Vn2 = Vn.*Z2,并行计算比串行计算更快,使得 Y = Y0 - ( Un2 + Vn2)*dt?如果是这样,如何进行这种并行计算的一个很好的例子是什么?
是否有其他更好/推荐的方法(例如,使用 ATLAS)?
该语言是 C++,它将在具有多核(至少双)处理器的 Linux 或 Windows 平台上运行。我目前正在使用 BOOST uBLAS 作为 BLAS 包。