- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi there,
I work in the field of geophysics, mainly dealing with seismic data processing.
Seismic data processing involves multiple steps, and I need to transmit the results of each operation. Open-source projects like "Seismic Unix" and "Madagascar" use pipes for this purpose, but they are both written in C.
I rewrote some C code for a processing module in Fortran with ifx, but I found that ifx is extremely slow when transmitting data through pipes, while gfortran does not have this issue.
I wrote a small piece of code for testing, as shown below.
main1.f90
integer,allocatable:: a(:,:,:)
allocate(a(100,1024,1024))
a = 1
print*, a
end
main2.f90
integer,allocatable:: a(:,:,:)
allocate(a(100,1024,1024))
read*, a
print*, a(100,100,100)
end
ifx main1.f90 -o main1
ifx main2.f90 -o main2
./main1 | ./main2
For 400MB of data, gfortran took about 10 seconds, while ifx took an astonishing 12 minutes.
What could be the reason for this, and is there any way to improve the I/O performance?
Link Copied

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page