[ET Trac] [Einstein Toolkit] #515: Silently overrides DEBUG and OPTIMISE options

Einstein Toolkit trac-noreply at einsteintoolkit.org
Thu Aug 18 07:38:43 CDT 2011


#515: Silently overrides DEBUG and OPTIMISE options
----------------------------+-----------------------------------------------
  Reporter:  barry.wardell  |       Owner:  eschnett
      Type:  defect         |      Status:  new     
  Priority:  major          |   Milestone:          
 Component:  SimFactory     |     Version:          
Resolution:                 |    Keywords:          
----------------------------+-----------------------------------------------

Comment (by eschnett):

 The option --debug is not about debugging symbols. As you say, there is
 almost never a reason to run without them, since the don't slow down the
 code and don't increase memory usage; the only reason to disable them
 would be if they cause an internal compiler error. What --debug does is
 enable additional debug statements in the code which perform self-tests
 and thus lead to a slower execution. Such tests could include checking for
 integer overflow, checking array bounds in Fortran, etc. What you instead
 may want to use in your case is --no-optimise, which disables optimisation
 (without adding these debug statements); this still lets you debug, but
 runs faster.

 Cactus outputs all its configuration settings when it configures, such as
 "Setting DEBUG to 'yes'". The options --debug, --optimise etc. should be
 documented, as they are prominent features.

 Yes, simfactory overwrites certain settings. Simfactory assumes that the
 MDB entries are correct, and thus propagates these settings, such as the
 cache size. The option list and the MDB really belong together and form a
 unit; it is an "implementation detail" that the option lists are stored in
 a different file and with a different format.

 In general, --debug and --optimise do not conflict. It is just that these
 don't make sense together, because --debug enables somewhat expensive
 additional self-checks, and --optimise tries to improve execution speed,
 so these goals conflict. In practice, many compilers segfault when these
 two are given together. To protect new users, the default for --optimise
 depends on the setting for --debug. It seems that the current
 implementation in simfactory doesn't quite do that, as it unconditionally
 sets --optimise when --debug is set. (--optimise isn't quite useless,
 because you can still specify --no-optimise.)

 Enabling --debug by default on a particular machine goes a bit against the
 idea of simfactory, which is to make things independent on particular
 machines. I envisioned that you have probably two configurations, one for
 debugging and one for production, and these configurations would both
 potentially exist on multiple machines. This allows you e.g. to take a
 debug session from your laptop and move on to a larger workstation if you
 run out of memory; for this to work reliably, the configuration settings
 (source tree, thorn list, etc.) need to be independent of the machine on
 which one is running. This is the working model that "sim sync" enables.
 That is, you would choose two configuration names (maybe "sim-debug" and
 "sim") for these two purposes, and sync/build these on several systems. To
 build the debug configuration, you say "sim build --debug", and "sim
 build" to build the production simulation; as described in
 <https://docs.einsteintoolkit.org/et-
 docs/Simulation_Factory_Advanced_Tutorial>.

 Your second patch is fine, please apply.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/515#comment:5>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list