Сумма строк матрицы броненосца на основе TbbC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сумма строк матрицы броненосца на основе Tbb

Сообщение Anonymous »

Следуя примеру tbb для Parallel_reduce здесь с базовыми типами данных, я хотел попробовать реализовать версию tbb суммы строк матрицы Armadillo. (Я понимаю, что для этой цели можно использовать Arma::sum, но это была попытка лучше узнать tbb, Armadillo и то, как они работают вместе.)
Следующий код предназначен для перебора столбцов матрицы X и добавления значений столбцов к текущему итоговому вектору. Компилируется нормально, но вылетает во время выполнения. Мне интересно, где я ошибаюсь. Является ли использование X.col(j) неправильным? Спасибо!
arma::vec parallelRowsumTBB_withArma(arma::mat X){

arma::vec y=tbb::parallel_reduce(
tbb::blocked_range(0,X.n_cols),
arma::vec(X.n_rows).fill(0),
[&](const tbb::blocked_range& r, arma::vec runningTotal) { //note the definition of runningTotal here
for(int j=r.begin(); j!=r.end(); ++j){
runningTotal = runningTotal + X.col(j);
}
return runningTotal;
},
[](arma::vec a, arma::vec b){
return a + b;
}
);
return y;
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... llo-matrix
Ответить

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

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

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

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

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