0
我有使用兩個裝配的矩陣for循環的基礎上,從不同的庫基質,使用以下算法(此基於犰狳):矩陣減少,自定義減少運營商的OpenMP
inline void loop_over_matrix_serial(const size_t &size, arma::mat &matrix)
{
for (size_t i = 0; i < size; ++i)
for (size_t j = 0; j < size; ++j)
matrix(i, j) += position_function(i, j);
}
爲了爲了加速這一操作,我想使用OpenMP進行縮減。在其他問題中已經存在自定義簡化運算符,例如:C++ Armadillo and OpenMp: Parallelization of summation of outer products - define reduction for Armadillo matrix,但它的目標是完整的矩陣,而不是單個元素。我怎樣才能以所示方式爲所有矩陣定義一個自定義運算符,但是從不同的庫中爲減少呢?它將始終是從右側添加的雙值。
我看不出在你的代碼中還原 - 只是將數組中的每個元素設置爲計算值。減少稱爲減少,因爲它們減少了從輸入到輸出的數據維度。因此,例如,'dot_product'將兩個向量縮減爲單個標量。二維結構上的逐行求和產生一維結構。 –