一般的な Matrix の実装があり、並列処理と逐次処理で '*' および '+' 演算子を使用するオプションを作成します。
並列計算の例: m1 と m2 の行列があり、m3 = m1 * m2 があるとします。異なるスレッドで m3 行 i' を計算します。プラス:
シリアル計算は、m3[0,0]、m3[0,1] などを計算するだけです。
大きなマトリックスと小さなマトリックスを使用して各操作の時間を測定したところ、小さなマトリックスではシリアル処理が並列処理よりも高速であることがわかりましたが、並列処理は大きなマトリックスでより優れたパフォーマンスを示しました。
The results:
+----------------------------+--------------------------------+------------+
| Big | Small | |
+----------------------------+--------------------------------+------------+
| * | + | * | + | |
+-------------+--------------+---------------+----------------+------------+
| 0.697798sec | 0.0407585sec | 8.7408e-05sec | 0.000109052sec | Parallel |
+-------------+--------------+---------------+----------------+------------+
| 11.9984sec | 0.0235058sec | 6.68e-07sec | 7.76e-07sec | Serial |
+-------------+--------------+---------------+----------------+------------+
誰かが理由を説明してもらえますか?
どうもありがとう!