#1834: Thorn CT_Analytic does not build on Shelob -----------------------------------+---------------------------------------- Reporter: eschnett | Owner: Type: defect | Status: new Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Keywords: | -----------------------------------+---------------------------------------- The file CT_Analytic_Exact_Calc.cc takes more than 30 minutes to build on Shelob, and the build process is thus aborted by the operating system:
{{{ COMPILING arrangements/CTThorns/CT_Analytic/src/CT_Analytic_Exact_Calc.cc
Message from root@shelob1 on <no tty> at 17:25 ... {string1} EOF icpc: error #10106: Fatal error in /usr/local/compilers/Intel/composer_xe_2013.5.192/bin/intel64/mcpcom, terminated by kill signal compilation aborted for /project/eschnett/shelob/Cvanilla/configs/sim/build/CT_Analytic/CT_Analytic_Exact_Calc.cc (code 1) }}}
I've looked at the source code. It seems Kranc-generated, with expressions spanning many lines and many calls to pow. Maybe a small change to the Kranc script choosing different options (e.g. enabling CSE, or replacing calls to pow by explicit multiplication) could remedy this.
At the moment I will disable this thorn on Shelob.
#1834: Thorn CT_Analytic does not build on Shelob ------------------------------------+--------------------------------------- Reporter: eschnett | Owner: Type: defect | Status: new Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by hinder):
The Kranc script is in arrangements/CTThorns/m. It looks like there is no newer compiler version on shelob.
Another option might be to leave some of the operations to be performed numerically, rather than substituting everything into a single expression finally.
#1834: Thorn CT_Analytic does not build on Shelob ------------------------------------+--------------------------------------- Reporter: eschnett | Owner: Type: defect | Status: new Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by knarf):
Does that file also need so long on other machines using the Intel compiler? Maybe something could be done using the compiler flags?
#1834: Thorn CT_Analytic does not build on Shelob ------------------------------------+--------------------------------------- Reporter: eschnett | Owner: Type: defect | Status: new Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by hinder):
It's fine on Intel 15 on Datura, and GCC on Mac OS. If we could set the compiler flags for that specific source file to disable optimisation, that would work around the problem, but I don't think there is such a mechanism in Cactus. I don't think the routine is performance-sensitive.
#1834: Thorn CT_Analytic does not build on Shelob ------------------------------------+--------------------------------------- Reporter: eschnett | Owner: Type: defect | Status: new Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by rhaas):
You can modify compiler flags on a per-file bases via makefiles. For example (this is for LocalInterp2, but currently not under review): {{{ LocalInterp2/src/make.code.deps: Interpolate.cc.o: CXXFLAGS += -fp-model precise }}}
#1834: Thorn CT_Analytic does not build on Shelob ------------------------------------+--------------------------------------- Reporter: eschnett | Owner: Type: defect | Status: new Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by bentivegna):
I assume that this is due to the fact that many of the coefficients are specified parametrically, via lengthy superpositions. I have just committed a change that reduces the number of terms in one of these superpositions, as this functionality is currently not used anywhere and who needs more parameters can always increase this number and regenerate the thorn.
The change reduced the corresponding generated code by two thirds. Erik, does this solution alleviate the compile problem on Shelob?
#1834: Thorn CT_Analytic does not build on Shelob ------------------------------------+--------------------------------------- Reporter: eschnett | Owner: Type: defect | Status: closed Priority: unset | Milestone: Component: EinsteinToolkit thorn | Version: development version Resolution: fixed | Keywords: ------------------------------------+--------------------------------------- Changes (by eschnett):
* status: new => closed * resolution: => fixed
Comment:
Yes, things are now working on Shelob. Thanks!
trac@lists.einsteintoolkit.org