Распараллелить заполнение собственной матрицы в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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