10 likes | 94 Views
Why is understanding compiler sensitivities of models important?. Different compilers, which are after all the interface between researchers expectations expressed in the model code and the computer hardware, are very variable. Compilers differ in their
E N D
Why is understanding compiler sensitivities of models important? • Different compilers, which are after all the interface between researchers expectations expressed in the model code and the computer hardware, are very variable. Compilers differ in their • interpretation of computer language standards • response to bad or poor programming • advice, help, warnings given • behaviour when optimising code • performance of the compiled code • See the Fortran compiler comparison from Polyhedron Software • http://www.polyhedron.com. Diagnostic test suite results for run time errors. HECToR Cray XT4 units under construction (March 2007) at the Cray facility at Chippewa Falls, MN. Table 1. A comparison of compiler messages on HECToR, Cray XT4, for a test case (Unified Model, UM, version 6.1, global atmosphere) compiled with three different compilers. Compiler Sensitivity Study Do compilers really differ that much? While different compilers report errors, which are always investigated, they also report warnings if requested, which are rarely investigated. These warnings and cautions show great variability in number (see Table 1) and there is very limited commonality in the message type. The results when this bad code is run can also differ. The different compiler’s handling of this bad code could significantly change model results. The results of an example of bad/wrong coding shown in the TEST program are listed in Table 2 for a variety of compilers. The major issue for the modelling community is the variability of results for what is admittedly bad coding, which can even change with newer compiler releases. Worse still is the failure to warn of this bad coding. program TEST real a(3) data a/3*1.0/ data a(2)/2.0/ print *, a stop end Table 2. Using the TEST program several compilers and compiler versions were tested on different computer systems How large are the performance differences of models with different compilers? Performance measurements on a computer system like HECToR must take into account ‘jitter’, the performance variability found on systems with large numbers of cores, a large user base and with a high utilisation. The error bars in Figure 1 represents some measure of the ‘jitter’ seen on HECToR. In general the Pathscale compiled UM code performs better than the PGI compiled code although there is evidence of an issue with input/output. This output performance difference is currently being investigated. This study is an example of the general technical support provided by the NCAS Computational Modelling Services (CMS) group Loïs Steenman-Clark Jeff Cole Simon Wilson William McGinty Rosalyn Hatcher Andy Heaps Annette Osprey Grenville Lister Gerry Devine Figure 1. Performance differences on HECToR for the Unified Model (UM) version 6.1 with different compilers. The effect of changing resolution and input/output load can be seen. Contact: l.steenman-clark@reading.ac.uk NCAS Staff Meeting, Oxford, November 2009