2012-02-20 4 views
1

Я тестировал интерфейс BLAS sdot для одноточечных операций с точной точкой с плавающей точкой. Я обнаружил, что результаты библиотеки Intel MKL немного отличаются от результатов кода fortran BLAS, приведенного в http://netlib.org/blas/. MKL кажутся более точными.Выполнение операции BLAS sdot в библиотеке MKL

Мне просто интересно, есть ли оптимизация, сделанная MKL? Или как MKL реализует его, чтобы сделать его более точным?

+0

Не могли бы вы объяснить, как вы определили, что MKL более точен, чем ссылка fortran BLAS для 'sdot'? – talonmies

+0

Я использовал эти два 'sdot' в решении bicgstab, оказывается, что MKL сходится намного быстрее. –

ответ

1

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

Первыми соображениями может быть то, что они используют оптимизированную сборку и всегда сохраняют текущую сумму в стеке с плавающей запятой x87 80 бит без округления до 32 бит на каждой итерации. Или, может быть, они используют SSE (2) и вычисляют всю сумму в двойной точности (что не должно иметь большого значения для добавления и умножения, по производительности). Или, может быть, они используют совершенно другое вычисление или какие-то черные волшебные трюки.

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

+0

Я бы предположил, что реализация SSE2 с векторными регистрами может выполнять точечный продукт, используя сплавленные операции FMAD в алгоритме восстановления типа дерева. Это должно страдать от большой скопированности и ошибки промежуточного округления, чем одно скалярное суммирование. – talonmies

+0

Большое спасибо за ваши ответы! Я думаю, что ребята из Intel, должно быть, сделали большую оптимизацию на своей платформе. Спасибо! –

 Смежные вопросы

  • Нет связанных вопросов^_^