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 IOSTRING



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