Реализация операции BLAS SDOT в библиотеке MKL - PullRequest
1 голос
/ 20 февраля 2012

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

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

1 Ответ

1 голос
/ 20 февраля 2012

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

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

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

...