- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
Before I go too far down this path, I would like to assure myself there isn't a better way. I am using intel Fortran 17.1 on windows 7 and RH6 Linux. I find significant benefit in times using internal procedures. I need to use the same routines in multiple routines in multiple source files. I have put the low level routines in a source file which I then INCLUDE after the CONTAINS statement for all the high level routines where I want these low level routines to be available as internal routines. I did try the inline attribute. It seems the low level routine has to be in the same file and cannot be a module procedure in another file. I think that I am getting a better speedup with internal routines than inlining (if it is happening). This approach seems to work. If there is a cleaner way, I'd love to hear about it. thanks scott
링크가 복사됨
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
I suggest trying -ipo (/Qipo on Windows) - this is the whole-program interprocedural optimization feature. Add this option to every ifort command, and you should be able to use a module procedure and get benefits.
Using INCLUDE works, but causes code bloat and may miss some cross-source optimization opportunities.
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
It's not necessary that those libraries be compiled with -ipo unless you would like them to be included in the optimization. The unresolved module procedure references are more a concern for me.
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
- 신규로 표시
- 북마크
- 구독
- 소거
- RSS 피드 구독
- 강조
- 인쇄
- 부적절한 컨텐트 신고
It sounds to me that having your common routines in modules would be more effecient but maybe I am misunderstanding the original post. Using include to "cut and paste" the same code in many places does indeed seem like code bloat as you are compiling the same code many times instead of once.