Броненосец против блиц ++ - PullRequest
       5

Броненосец против блиц ++

17 голосов
/ 02 февраля 2011

Я начинаю новый научно-вычислительный проект на C ++, и, поскольку в него включено множество обширных числовых процедур, я рассматриваю возможность использования некоторых из них - Armadillo или Blitz ++ для эффективной обработки массивов / матриц / тензоров. Какой из них лучше использовать?

Ответы [ 4 ]

17 голосов
/ 02 февраля 2011

Мы были очень довольны Armadillo , который мы завернули в R , используя пакет интеграции Rcpp R / C ++ - итоговый пакет RcppArmadillo .

Конрад очень полезен и предан, и Armadillo находится в стадии активной разработки.Насколько я понимаю, Blitz ++, хотя в свое время он был новаторским и очень влиятельным для шаблонной линейной алгебры, больше не разрабатывается активно.

Edit 2012-06-28 : по-видимому,новая разработка Blitz ++ продолжается на сайте Sourceforge для Blitz .

Edit 2017-12-16 : похоже, Blitz ++ теперь на GitHub.

12 голосов
/ 21 марта 2012

Как всегда в этом случае, имея дело с линейной алгеброй и C ++, я настоятельно рекомендую взглянуть на Eigen.библиотека когда-либо написанная на мой взгляд.

4 голосов
/ 05 декабря 2012

Для полноты: я настоятельно рекомендую не использовать Boost :: uBLAS, на тот случай, если кто-то рассматривает это. Я использовал его, и API громоздок, а производительность в целом ниже, чем Eigen и Armadillo ; это даже упоминается в разделе часто задаваемых вопросов uBLAS

В: Должен ли я использовать uBLAS для новых проектов?

A: На момент написания (09/2012) было доступно много хороших библиотек матриц, например, MTL4, armadillo, eigen ... uBLAS предлагает хорошую (но не выдающуюся) производительность. С другой стороны, последнее значительное улучшение uBLAS произошло в 2008 году, и с 2009 года не было внесено никаких существенных изменений. Поэтому нужно задать себе несколько вопросов, чтобы помочь в принятии решения: ... Простота в использовании? uBLAS прост в использовании для простых вещей, но при выходе из пути требует приличных знаний C ++. Спектакль? Есть более быстрые альтернативы. Передовой? uBLAS более 10 лет и он пропустил все новые вещи из C ++ 11.

«Я начинаю новый научно-вычислительный проект ...»

Armadillo API пытается имитировать синтаксис MATLAB, с которым, я полагаю, вы знакомы.

0 голосов
/ 29 октября 2015

Одна вещь, с которой я столкнулся при работе с Ublas, заключается в том, что он не предоставляет возможность выполнять операции, такие как max(u,0), u+1, abs(u), где u - вектор. Кроме того, синтаксис Boost Ublas неудобен для записи по сравнению с ARMADILLO. Также есть сравнение скорости [click] ( Сравните блиц ++, броненосец, boost :: MultiArray ) Итак, я рекомендую броненосец.

...