Распараллелить заполнение собственной матрицы в C++C++

Программы на C++. Форум разработчиков
Anonymous
Распараллелить заполнение собственной матрицы в C++

Сообщение Anonymous »

Предположим, я пытаюсь заполнить MatrixXf скользящим средним другого MatrixXf, вот так

Код: Выделить всё

MatrixXf ComputeRollingMean(const MatrixXf& features) {
MatrixXf df(features.rows() - 30, features.cols());

for (size_t i = 30; i < features.rows(); ++i) {
MatrixXf mat = features.block(i-30, 0, 30, 3);
RowVectorXf mean_vector = mat.colwise().mean();
RowVectorXf stdev_vector = ((mat.rowwise() - mean_vector).colwise().squaredNorm() / (mat.rows()-1)).cwiseSqrt();
MatrixXf zscores = (mat.rowwise() - mean_vector).array().rowwise() / stdev_vector.array();
RowVectorXf zscore = zscores(last, all);
df.block(index, 0, 1, 3) = zscore;
}
return df;
}
Похоже, что у Эйгена есть какой-то процесс параллелизма

Код: Выделить всё

#include 
а затем

Код: Выделить всё

int main() {
Eigen::initParallel();
...}
Но я не уверен, как это можно распараллелить цикл for в моей функции ComputeRollingMean. Кто-нибудь знает, как я могу распараллелить и, возможно, выбрать номер процесса, который я хочу запустить, пожалуйста?

Подробнее здесь: https://stackoverflow.com/questions/782 ... atrix-in-c

Вернуться в «C++»