Ксения (13.12.2019 23:00 - 23:02, просмотров: 1307) ответил 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 бит и более заменяются на перестановку целых байтов. Т.е. даже в таком относительно простом случае компилятор с оптимизаций не справляется.