Version 4 (modified by daley, 10 years ago) (diff)

some FLASH info

Obtaining the FLASH code

Some of the FLASH code base to be used for this activity is not part of the standard distribution. To ensure that everyone in PERI with access to the code understands that it cannot be redistributed, anyone desiring access to the repository (coming soon) will need to e-mail Paul Hovland, agreeing not to redistribute the code. This is in addition to the standard FLASH license agreement (one responsible party per institution).

A new release of FLASH is planned for mid-September.


  • RTflame problem (limited refinement)
  • White dwarf problem

NOTE: These configurations require code that is not part of the current public FLASH distribution.

FLASH userguide

The FLASH userguide is available at:

The important sections are:

  1. Quick Start

3.6 The runtime parameter file (flash.par)

  1. The FLASH configuration script (setup)
  2. Timer and Profiler Units

FLASH setup information

FLASH uses PARAMESH to manage the oct-tree AMR grid. An important parameter in this distributed data structure is MAXBLOCKS which indicates the maximum number of blocks per processor. It is particularly relevant in limited memory environments because this static memory allocation can be very large. Its value can be adjusted by passing the -maxblocks option to the setup script, e.g.


Using TAU with FLASH

FLASH has setup support for instrumenting each subroutine using the TAU toolkit. Simply pass the full-path of a TAU makefile in the -tau option of the setup script, e.g.


This instructs setup to replace the compilers in Makefile.h with the TAU wrapper compiler scripts, and also to copy the TAU instrumentation file at tools/tau/select.tau into the object directory. The select.tau file excludes certain subroutines from TAU instrumentation. Please note, some of the subroutines may be excluded unnecessarily as the list was constructed using an older version of FLASH with older versions of the TAU software stack.

FLASH timers

FLASH has in-built timers giving timing information for labelled code sections. These are switched on by default, but they can be switched off by replacing them with a stub implementation at setup time. This is done by passing the following line to the setup script:


As an alternative, a custom timer implementation has been written. This times the labelled code sections in FLASH using TAU timers and not the in-built FLASH timers. Timing data for any labelled code section therefore appears alongside routine level data in the TAU profile, e.g.

[chris@hplaptop MULTIGET_TIME_OF_DAY]$ pprof -p -n 20 -s Reading Profile files in profile.*


%Time Exclusive Inclusive #Call #Subrs Inclusive Name

msec total msec usec/call

100.0 27.3 7829590 32 96 244674686 FLASH

59.6 48.2 4663871 32 224 145745970 DRIVER_EVOLVEFLASH 57.7 1145 4516119 32 6410 141128734 * custom:evolution 40.4 2155 3165100 32 14603 98909381 DRIVER_INITFLASH 40.0 148 3130132 32 768 97816632 * custom:initialization 39.2 218 3071459 640 640 4799155 * custom:hydro 39.2 325 3071241 640 1280 4798813 HYDRO 39.2 657 3070915 1280 2560 2399152 HY_PPM_SWEEP 31.9 29.2 2493992 32 128 77937243 GRID_INITDOMAIN 31.8 329 2493440 32 1741 77920004 GR_EXPANDDOMAIN

"* custom:" prefix indicates a FLASH labelled section.

This can be included in a FLASH simulation by passing the following line to the setup script:


(Please note, the timer implementation is not in the tar ball we sent you, but it will be available when we create the PERI svn branch).