我正在尝试计算以下内容:

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软件包。

    最佳答案

    您的问题很小。您应该尝试使用诸如Eigen(或您提到的ATLAS)之类的东西。我更喜欢Eigen,因为它使用起来很快。

    10-07 12:19