Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.
29280 Discussions

I/O performance when transfer data through pipe with ifx on Linux

Jun_CN
Beginner
369 Views

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?

0 Kudos
0 Replies
Reply