# Parameter definitions for thorn LoopControl BOOLEAN verbose "Output some loop information at run time" STEERABLE=always { } "no" BOOLEAN veryverbose "Output detailed debug information at run time" STEERABLE=always { } "no" BOOLEAN selftest "Run a self test with every loop (expensive)" STEERABLE=always { } "no" STRING statistics_filename "File name for LoopControl statistics" STEERABLE=always { "" :: "disable statistics output" ".+" :: "file name" } "LoopControl-statistics" SHARES: IO USES STRING out_dir PRIVATE: KEYWORD initial_setup "Initial configuration" STEERABLE=always { "legacy" :: "Like a non-LoopControl loop" "tiled" :: "Basic LoopControl setup" } "tiled" # NOTE: # - Intel chips divide the D1 cache into two, one for each hyperthread. # The cache is thus not shared! # This is off by default since it seems to affect results on intel processors. BOOLEAN use_smt_threads "Place SMT threads close together" STEERABLE=always { } "no" BOOLEAN align_with_cachelines "Align innermost loops with cache line size" STEERABLE=always { } "yes" INT tilesize_i "Tile size in i direction (in grid points) for loop tiling" STEERABLE=always { 1:* :: "" } 4 INT tilesize_j "Tile size in j direction (in grid points) for loop tiling" STEERABLE=always { 1:* :: "" } 4 INT tilesize_k "Tile size in k direction (in grid points) for loop tiling" STEERABLE=always { 1:* :: "" } 4 INT loopsize_i "Size of each thread's loop in i direction (in grid points) for multithreading" STEERABLE=always { 1:* :: "" } 8 INT loopsize_j "Size of each thread's loop in j direction (in grid points) for multithreading" STEERABLE=always { 1:* :: "" } 8 INT loopsize_k "Size of each thread's loop in k direction (in grid points) for multithreading" STEERABLE=always { 1:* :: "" } 8