Компилятор C / C ++ Matlab против MKL - PullRequest
8 голосов
/ 10 апреля 2011

Есть ли существенная разница в производительности между числовыми процедурами Matlab, представленными как dll C / C ++ через Matlab mcc, по сравнению с эквивалентными процедурами, найденными в Math Kernel Library?

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

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Matlab добавляет слой ко всему, что он называет, fftw, lapack, mkl.

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

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

0 голосов
/ 18 октября 2011

Для процедур преобразования Фурье я бы рекомендовал FFTW в зависимости от сценария использования. FFTW оптимизирован для сценария однократной подготовки, повторного использования. Поэтому, если вам нужно вычислить преобразование такого же типа, скажем, преобразование 1024x2000 (не в степени 2) внутри цикла, FFTW будет быстрее. Если вам нужно вычислить другой тип преобразования (размеры меняются каждый раз), тогда MKL будет быстрее.

Принцип работы FFTW заключается в том, что ваше программное обеспечение сначала вызывает подпрограмму подготовки, которая может занять от нескольких мс до нескольких секунд (вы можете настроить это), чтобы проверить вашу конкретную платформу и выбрать наиболее оптимизированную подпрограмму. Затем вы можете повторно вызвать процедуру преобразования с оптимизированным параметром.

У всех других известных библиотек есть fix-ed-оптимизация, которая может или не может быть оптимальной для вашей платформы.

...