traffic_lightsрад, что вы занимаетесь этими задачами профессионально, я, кстати тоже, причем к лапаку имею непосредственное отношение, так как в 90-е участвовал в оптимизации бласов для Y-MP, C90, T3D, а в начале двухтысячных - участвовал в написании кубласов (это которые для Нвидии).
Цитата:
Весь код, написанный в LAPACK НА 77-ом фортране (а он почти весь на нем)...
Вот тут вы ошибаетесь, сам лапак - в большей части - да, еще на фортране, а вот бласы (если хочется иметь оптимизированный вариант) уже никто никогда не пишет на фортране, я вас уже отсылал к ATLASу, не поленитесь взглянуть в его исходники, и с удивлением увидите, что и холецкого переписали, и линейные системы, вот до сингулярного все никак не дойдут.
Цитата:
Весь код, написанный в LAPACK НА 77-ом фортране (а он почти весь на нем) при помощи f2c переводится в сишный код.
и производительность после этого идет в то самое место - основная идея Фортрана, которая до сих пор держит его на плаву - возможность разбить одномерный массив на двухмерный на входе в подпрограмму и оптимально считать индексы. Если вы сделаете f2c, то у компилятора эта информация потеряется, поэтому он не может (не имеет права) оптимизировать, и производительность падает.
-- 27.12.2022, 13:49 --Я был удивлен когда недавно узнал что существуют во первых современные стандарты фортрана а во вторых он по скорости практически тоже самое что и Си. Так как написанное работает хорошо и с той же скоростью, видимо никто и не стремится что то переделывать.
У фортрана есть хорошая особенность - вы можете на вход функции подать одномерный массив и внутри функции трактовать этот массив как 2-х, 3-х и тд мерный массив, отдав на откуп компилятору оптимизацию индексов. Это позволяет сильно упростить угадывание кеш-мисс и сильно упрощает визуальное восприятие алгоритма. В классическом С такой возможности не было, поэтому С часто проигывал на матричных задачах Фортрану.
В 99-ом Сшники опомнились и ввели эту конструкцию в стандарт С, в С++ ее до сих пор нет, но там можно за счет темплейтов сделать аналогичное, хотя криво.