Fortran IO giving customers grief
By joe
- 1 minutes read - 176 wordsThis is annoying. Intel’s compilers do unbuffered IO by default (as in out of the box). Which means if you have code like this:
#define BIG 1000000000 real*8 X(BIG) do i=1,BIG write (unit=10,*) X(i) enddo
then you are going to suffer terrible performance, as Fortran (Intel’s compiled version) will do a flush at the end of each write. Which means, for a high performance network file system, you are going be hitting it with many ~25 byte writes. Rather than a larger buffer, which still might not be great … but at least it won’t cause as much pain.
I know we can switch it to buffered mode. I know we can tweak and tune the IO at the source level in general, but often not in specific cases.
I’d like to get a nice drop in library that did IO intelligently. Ugh.
This isn’t Intel’s fault, this is a design decision on their part, and we can pretty easily work around some aspects of it. But we need a way to do this in general.