Хорошие Матричные Библиотеки? [закрыто]

Я имел дело с математически интенсивным кодом и мне нужна хорошая матричная библиотека. Я мог бы использовать двумерный массив, но полная матричная библиотека (с умножением, сложением и т. Д.) Была бы гораздо более удобной. Я, очевидно, уже гуглил это, но это дало мне множество вариантов. Я надеялся, что мнения нескольких опытных программистов помогут сузить кругозор.

What are some good free matrix/linear algebra libraries for C++?

Ответы на вопрос(4)

собственный это очень быстрая библиотека для работы с матрицами и линейной алгеброй, которая использует аппаратное ускорение, когда доступно.

 16 июн. 2012 г., 23:01
аппаратное ускорение? он использует gpu? как?
 16 июн. 2012 г., 23:03
Он не использует графический процессор. С главной веб-страницы "Явная векторизация выполняется для наборов команд SSE 2/3/4, ARM NEON и AltiVec с постепенным отступлением от не векторизованного кода".
 16 июн. 2012 г., 23:04
хорошо спасибо mybad

Существует такжеIT ++, который имеет простой в использовании синтаксис, похожий на Matlab.броненосец также имеет очень похожий синтаксис, но, как известно, значительно быстрее, чем IT ++. (Armadillo использует шаблонное метапрограммирование, в то время как IT ++ этого не делает). И Armadillo, и IT ++ обеспечивают собственное разложение, разложение по сингулярным значениям, обратную матрицу и т. Д.uBlas использует шаблонное метапрограммирование для скорости, но не может делать инверсию матрицы и т. д.

Разница в скорости сводится к компромиссу с точки зрения разных наборов функциональных возможностей в различных областях, например. IT ++ имеет много функций для обработки сигналов, в то время какброненосец почти исключительно фокусируется на линейной алгебре.

Это поднимает связанный с этим вопрос: скорость библиотеки является лишь одним из факторов ее общей полезности или ценности. Например, у вас может быть очень быстрая библиотека, но для изучения ее API / синтаксиса требуется много времени, или синтаксис сложен в использовании. Другой проблемой является количество функциональности, уже присутствующей в библиотеке - например. вам может понадобиться написать свои собственные функции. Вам также может понадобиться решить, является ли целью библиотеки облегчение преобразования кода Matlab в C ++, или вы уже знакомы с синтаксисом Matlab.

Учитывая вышеперечисленные моменты, вы можете в конечном итоге тратить больше времени на кодирование и отладку, чем на выполнение кода, что в конечном итоге лишает цели создания быстрой библиотеки. Другими словами, необработанная скорость выполнения является только одним фактором, и на нее не следует полагаться как на общий решающий фактор. Время разработки также является очень важным фактором (например, «время до продукта»), не только с точки зрения затрат, но также и потому, что меньшее время, затрачиваемое на кодирование, освобождает вас от необходимости заниматься другими делами.

Решение Вопроса

Ты можешь попробоватьuBlas

Functionality

uBLAS provides templated C++ classes for dense, unit and sparse vectors, dense, identity, triangular, banded, symmetric, hermitian and sparse matrices. Views into vectors and matrices can be constructed via ranges, slices, adaptor classes and indirect arrays. The library covers the usual basic linear algebra operations on vectors and matrices: reductions like different norms, addition and subtraction of vectors and matrices and multiplication with a scalar, inner and outer products of vectors, matrix vector and matrix matrix products and triangular solver. The glue between containers, views and expression templated operations is a mostly STL conforming iterator interface.

В прошлом я использовалброненосец , Я не могу говорить о его скоростных возможностях - его рекомендовал мне друг, поскольку он демонстрирует некоторое сходство с функциями и обозначениями MATLAB. Я не пробовал ничего очень интенсивного с этим, но это служило моим целям в то время, когда я использовал это. Я также слышал хорошие вещи о uBlas, как это также рекомендуется здесь.

Ваш ответ на вопрос