MATLAB Coder: разреженная матрица

MATLAB Coder кажется причудливым и может значительно ускорить код MATLAB, преобразовывая код в C/C++ или MEX. Но кажется, что он не поддерживает разреженную матрицу или функцию Matlab sparse, которая необходима для моего кода. Кто-нибудь знает, как побороть эту проблему? Большое спасибо!


person user3570615    schedule 24.04.2014    source источник
comment
Написать свою собственную функцию mex?   -  person Praetorian    schedule 25.04.2014
comment
Разве вычислительное ядро ​​разреженного кода уже не написано на C? Я не знаком с Coder, но подозреваю, что он только ускоряет ваш собственный итеративный код. Это не ускорит вызовы встроенного кода MATLAB.   -  person hpaulj    schedule 25.04.2014
comment
Вы также можете просто сгенерировать код MEX для частей вашего кода MATLAB, который не использует разреженность для ускорения этих частей.   -  person Ryan Livingston    schedule 29.04.2014


Ответы (3)


собственная библиотека может использоваться для обработки разреженной функции Matlab, и она находится в c язык.

Как сказал «libill», вы также можете просто сгенерировать код MEX для частей вашего кода MATLAB, который не использует разреженность для ускорения этих частей.

И для разреженной части используйте вышеуказанную библиотеку.

person Devender Bindal    schedule 30.05.2014

Мое понимание кодера Matlab может быть неправильным, но я думаю, что это инструмент, который преобразует ваши коды Matlab в коды C/C++. Я не уверен, что оптимизация производительности является целью кодера Matlab.

Взгляните на SuiteSparse. Это библиотека C, которая обрабатывает множество разреженных операций. Оператор Matlab «\» в случае разреженной матрицы фактически использует suitesparse. Поэтому я думаю, что вам может быть проще изменить сгенерированные Matlab коды C.

ХТН

person Gurumonster    schedule 13.08.2018

Я просто не уверен, что вы подразумеваете под преобразованием. Я предполагаю, что вы имеете в виду написание своей собственной функции mex. Разреженные пакеты обычно обрабатывают разреженные матрицы по-разному, и у Matlab также есть свой уникальный способ их обработки. Однако в основном они используют формат CSC (или CSR). Matlab также сохраняет матрицу в формате CSC.

Вы можете просмотреть множество разреженных пакетов mex-функций, чтобы увидеть, как это делается. Дело в том, что Matlab не позволит вам сохранять явные нули в своей разреженной структуре данных. НЕ ПЫТАЙТЕСЬ сохранить явные нули в mex-функции Matlab. Matlab задохнется от вас!

person Aznaveh    schedule 24.04.2019