Author: rramanar Date: 2011-04-28 01:00:34 -0400 (Thu, 28 Apr 2011) New Revision: 3575
Modified: trunk/osprey/be/lno/cache_model.cxx trunk/osprey/common/com/config.cxx Log: This update enhances performance of the compiled code on X8664 when using the -O3 flag. The main change here is enabling -OPT:roundoff=2 at -O3 instead of -OPT:roundoff=1. This change enables fast-math functions, aggressive loop nest optimizations, reassociation on floating point expressions and more aggressive round-off settings. These aggressive floating point optimizations improve performance when using the -O3 flag but may affect floating point accuracy. The use of -fp-accuracy=relaxed in addition to -O3 is recommended for cases which need more floating point accuracy. -fp-accuracy=relaxed automatically sets -OPT:roundoff=1. User may also use -OPT:roundoff=1. During subsequent tuning we found that the bad reference bias heuristic affects the computed cache costs and leads to incorrect choice of inner loops and is thus ignored. Code reviewed by Sun Chan. Modified: trunk/osprey/be/lno/cache_model.cxx =================================================================== --- trunk/osprey/be/lno/cache_model.cxx 2011-04-28 02:20:14 UTC (rev 3574) +++ trunk/osprey/be/lno/cache_model.cxx 2011-04-28 05:00:34 UTC (rev 3575) @@ -6739,6 +6739,9 @@ iloop[s] = i; } +#ifndef TARG_X8664 + // Ignoring bad reference bias heuristic to allow the right choice of inner loop + // Only do this for X8664 if (depth != required_inner && arl->Num_Bad()) { INT nbodies = 1; INT i; @@ -6751,6 +6754,8 @@ } *cycles_per_iter += bias / nbodies; } +#endif /* TARG_X8664 */ + if (Debug_Cache_Model) { fprintf(TFile, "*** END CACHE MODEL (REQUIRED INNER LOOP=%d, ", required_inner); Modified: trunk/osprey/common/com/config.cxx =================================================================== --- trunk/osprey/common/com/config.cxx 2011-04-28 02:20:14 UTC (rev 3574) +++ trunk/osprey/common/com/config.cxx 2011-04-28 05:00:34 UTC (rev 3575) @@ -1319,6 +1319,14 @@ Aggregate_Alignment = 16; if ( !Vcast_Complex_Set && Opt_Level > 1 ) Vcast_Complex = TRUE; + if (Opt_Level > 2) { + // + // Enabling malloc_algorithm at O3 + // + if (!OPT_Malloc_Alg_Set) + OPT_Malloc_Alg = 1; + } + #endif } @@ -1634,7 +1642,8 @@ #if defined(TARG_IA64) || defined(TARG_LOONGSON) Roundoff_Level = ROUNDOFF_ASSOC; #else - Roundoff_Level = ROUNDOFF_SIMPLE; + // Enabling OPT:RO=2 at O3 + Roundoff_Level = ROUNDOFF_ASSOC; #endif #endif } ------------------------------------------------------------------------------ WhatsUp Gold - Download Free Network Management Software The most intuitive, comprehensive, and cost-effective network management toolset available today. Delivers lowest initial acquisition cost and overall TCO of any competing solution. http://p.sf.net/sfu/whatsupgold-sd _______________________________________________ Open64-devel mailing list Open64-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open64-devel