LoopControl

Erik Schnetter <schnetter@cct.lsu.edu>

August 20 2007

Abstract

1 Introduction

2 Physical System

3 Numerical Implementation

4 Using This Thorn

4.1 Obtaining This Thorn

4.2 Basic Usage

4.3 Special Behaviour

4.4 Interaction With Other Thorns

4.5 Examples

4.6 Support and Feedback

5 History

5.1 Thorn Source Code

5.2 Thorn Documentation

5.3 Acknowledgements

References

6 Parameters




align_with_cachelines
Scope: private  BOOLEAN



Description: Align innermost loops with cache line size



  Default: yes






explore_eagerly_before_iteration
Scope: private  INT



Description: Try to explore the parameter space as much as possible before this iteration



Range   Default: (none)
0:*






initial_setup
Scope: private  KEYWORD



Description: Initial configuration



Range   Default: tiled
legacy
Like a non-LoopControl loop
tiled
Basic LoopControl setup






loopsize_i
Scope: private  INT



Description: Size of each thread’s loop in i direction (in grid points) for multithreading



Range   Default: 8
1:*






loopsize_j
Scope: private  INT



Description: Size of each thread’s loop in j direction (in grid points) for multithreading



Range   Default: 8
1:*






loopsize_k
Scope: private  INT



Description: Size of each thread’s loop in k direction (in grid points) for multithreading



Range   Default: 8
1:*






max_size_factor
Scope: private  INT



Description: Maximum size for modifying loop sizes



Range   Default: 4
1:*






random_jump_probability
Scope: private  REAL



Description: Probability of a random jump to begin exploring a very different param



Range   Default: 0.1
0.0:1.0






selftest
Scope: private  BOOLEAN



Description: Run a self test with every loop (expensive)



  Default: no






settle_after_iteration
Scope: private  INT



Description: Do not explore the parameter space any more at or after this iteration



Range   Default: (none)
-1
always continue exploring
0:*






statistics_every_seconds
Scope: private  REAL



Description: Output statistics every so many seconds



Range   Default: -1.0
-1.0
don’t output
0.0:*
output every so many seconds






statistics_filename
Scope: private  STRING



Description: File name for LoopControl statistics



Range   Default: LoopControl-statistics
disable statistics output
.+
file name






tilesize_i
Scope: private  INT



Description: Tile size in i direction (in grid points) for loop tiling



Range   Default: 4
1:*






tilesize_j
Scope: private  INT



Description: Tile size in j direction (in grid points) for loop tiling



Range   Default: 4
1:*






tilesize_k
Scope: private  INT



Description: Tile size in k direction (in grid points) for loop tiling



Range   Default: 4
1:*






tryout_iterations
Scope: private  INT



Description: Try out new params for this many iterations before judging them



Range   Default: 1
1:*






use_smt_threads
Scope: private  BOOLEAN



Description: Place SMT threads close together



  Default: yes






verbose
Scope: private  BOOLEAN



Description: Output some loop information at run time



  Default: no






very_expensive_factor
Scope: private  REAL



Description: Params worse than the current-best by more than this factor are ignored more quickly



Range   Default: 1.5
1.0:*






veryverbose
Scope: private  BOOLEAN



Description: Output detailed debug information at run time



  Default: no






out_dir
Scope: shared from IO STRING



7 Interfaces

General

Implements:

loopcontrol

Inherits:

cycleclock

Adds header:

loopcontrol.h

Uses header:

cycleclock.h

vectors.h

8 Schedule

This section lists all the variables which are assigned storage by thorn Carpet/LoopControl. Storage can either last for the duration of the run (Always means that if this thorn is activated storage will be assigned, Conditional means that if this thorn is activated storage will be assigned for the duration of the run if some condition is met), or can be turned on for the duration of a schedule function.

Storage

NONE

Scheduled Functions

CCTK_STARTUP

  lc_setup

  set up loopcontrol

 

 Before: driver_startup
 Language:c
 Type: function

CCTK_PRESTEP

  lc_steer

  update loopcontrol algorithm preferences

 

 Language:c
 Options: meta
 Type: function

CCTK_ANALYSIS

  lc_statistics_analysis

  output loopcontrol statistics

 

 Language:c
 Options: meta
 Type: function

CCTK_TERMINATE

  lc_statistics_terminate

  output loopcontrol statistics

 

 Language:c
 Options: meta
 Type: function