Intel compiler 11.1 produces incorrect optimized code in FVM

All questions about installation
Forum rules
Please read the forum usage recommendations before posting.
Post Reply
Yvan Fournier

Intel compiler 11.1 produces incorrect optimized code in FVM

Post by Yvan Fournier »

Hello,

A bug in the intel C/C++ compiler (at least version 11.1 on Nehalem architectures) may lead to a crash when writing restart files in parallel, with an error log indicating a segmentation fault under fvm_part_t_block_copy_array.

This bug does not appear when compiled in debug mode, nor does it appear with the Intel compiler on Itanium.

The attached file may be used to replace fvm-0.15.1/src/fvm_part_to_block.c to correct the issue (it simply lowers the optimization level when using the Intel compiler in the affected function).

Compiling FVM with GCC instead of ICC is another possible workaround.

Best regards,

  Yvan
Attachments
fvm_part_to_block.c
(20.27 KiB) Downloaded 200 times
Yvan Fournier

Re: Intel compiler 11.1 produces incorrect optimized code in

Post by Yvan Fournier »

Another alternate patch possible is attached here.

It does not lower the optimization level, but adds intermediate variables and seems to bypass the issue (this is actually the version of the file intended for patch release 2.0.1 and development versions 2.1.x, the intermediate variables being added to ensure arithmetic is done on long integers for meshes with more than 2 billion faces, but this change also seems to circumvent the compiler bug.

Best regards,

  Yvan
Attachments
fvm_part_to_block.c
(20.44 KiB) Downloaded 193 times
Post Reply