Date: 2015-01-30 06:09 pm (UTC)
Согласен. Но тут важно уже то, что указано в -L. В системе может быть (и скорее всего) есть несколько libblas.so, лежащих в разных местах. Впрочем, при динамической линковке это решается настройками системы. Но мне чаще встречались фортранные программы, которые тащат копию BLAS внутри себя, а не используют -lblas. И я понимаю, почему: в то недолгое время, когда я считал на суперкомпьютерах, я успел намучиться с разными странными компиляторами, которые там встречаются. Уж проще принести все с собой.

Тут есть еще одна тонкость. На современных процессорах вызов подпрограммы дорогой. И условный переход тоже дорогой. Поэтому мелкие функции вроде умножения матриц 3x3 делать библиотечными невыгодно - вызов дороже вычисления получается. Мой любимый пример - набор инструкций процессора ARM Cortex M4, дешевого, как грязь, в котором, помимо всего прочего, есть инструкции вида int64=int64+int16*int16+int16*int16 или int64=int64+int32*int32, выполняемые за один такт. Притом, что процессор так-то 32-битный. Впрочем, с генерацией этих инструкций есть проблемы даже в Си. Не все компиляторы умеют сводить код к ним. (Это вопрос халтуры при написании компиляторов, а не теории и возможностей - алгоритмы давно существуют).
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting
Page generated Feb. 9th, 2026 01:38 am
Powered by Dreamwidth Studios