ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Суббота
31 октября
/964695
Топик полностью
Ксения (13.12.2019 23:00 - 23:02, просмотров: 170) в ответ на ваши фортран и питон интеловского разлива остаются фортраном и питоном. а то что интел прикрутил сбоку - это оптимизатор. мне известно по крайней мере два языка, у которых матрицы и вектора (и математика с ними) являются их составной исходной - автор: Mahagam
Когда векторная операция присутствует в языке в явном виде, то компилируется в вызов библиотечной функции, где всё уже до блеска оптимизировано вплоть до ассемблерного программирования времязатратных мест. И "зоопарк" эта же библиотека тоже поддерживает. Например, матбиблиотека MKL от Intel при запуске определяет, под каким процессором ее запустили и в зависимости от этого вяжет приложение с тем DLL-модулем, где процессорно-зависимые примитивы под него оптимизированы. В настоящее время их 6 штук (SSE разных сортов входят в Pentium4): mkl_p4.dll mkl_p4m.dll mkl_p4m3.dll mkl_avx.dll mkl_avx2.dll mkl_avx512.dll Причем, качество оптимизации очень хорошее - я сама на ассемблере (!) писала, но обогнать эту библиотеку по скорости так и не смогла. Вот и программистам, если они хотят иметь высокую скорость вычислений, следует использовать либо матричную операцию (если она есть в языке), либо вызывать библиотечную функцию (если матричных операций в языке нет). А не ожидать от компилятора вселенской мудрости. И это совершенно нормальная практика - скажем, никто нынче FFT-процедуру не пишет сам, а все пользуются библиотечными функциями. P.S. Кстати, даже IAR, компилируя под AVR, сдвиги компилирует, как вызов библиотечных функций, которые уже написаны отдельно для сдвигов различной длины. Причем в этих библиотеках сдвиги на 8 бит и более заменяются на перестановку целых байтов. Т.е. даже в таком относительно простом случае компилятор с оптимизаций не справляется.
Ответить
Ответы