#performance #fortran #compiler-construction #gfortran
Вопрос:
Когда массивы stride
равны 1 (очень распространенный случай), кажется, что код, скомпилированный для общего случая (любого ненулевого stride
), часто будет неоптимальным.
С другой стороны, создание нескольких версий скомпилированных функций и подпрограмм, когда некоторые аргументы stride=1
масштабируются экспоненциально с количеством аргументов, являющихся массивами.
Какого подхода придерживается здесь ГФортран?
Комментарии:
1. Предположительно, это для фиктивных аргументов массива, и вас волнует СМЕЖНЫЙ атрибут?
2. Что-то с шагом 1 является смежным, но атрибут СМЕЖНОСТИ сильнее: он делает объект просто смежным. Это то, к чему должен обратиться тот, кто отвечает?
3. @francescalus Я никогда не использовал F2008, но, как я понимаю, матрица NxN с ведущим размером > N не будет смежной, но каждый из ее столбцов может быть смежным (шаг=1). Я не думаю, что ответ должен касаться СМЕЖНОГО тега.
4. [Привет @bobcat, вот один ответ от разработчиков gfortran groups.google.com/g/comp.lang.fortran/c/jcUiMfc4xi0/m/… Возможно, было бы полезно задать этот вопрос также на этом форуме]
5. @roygvib Спасибо. Я переориентировал вопрос на GFortran, чтобы сделать его более понятным, если какие-либо эксперты GFortran захотят написать ответ.