"Edinburgh Optimizing Software" Search Server

Copyright (C) 2000-2004 by Grigori G.Fursin

http://homepages.inf.ed.ac.uk/gfursin

ICSA, School of Informatics,
University of Edinburgh, UK


The Iterative Compilation Server (or Search Server) is used for applying new iterative compilation techniques.
Information: Current version: 3.6 Release date: 2004.July.xx Host: localhost Default port: 4856 (native) 4956 (gnu) Run: java server java server --help ;for information about options. Instructions: initiate search directory =[directory] file_project =[filename] file_diag_out =[filename] file_diag_out_append =[param] ; 0 - don't append ; 1 - append file_tree_in =[filename] ; Tree File "2" prepared by ; application checker server ; Need to have '+' at the beginning ; of each line to use in search strategy strategy =[param] ; strategy number ; 0 - simple strategy step =[param] ; starting point precision =[param] ; if difference between run time of ; transformed application and original ; one is more or equal then [param] then ; consider it as a better transformation optimization =[param] ; optimization to use while compiling ; transformed code no_transformations =[param] ; 1 - skip transformation, but still ; do all steps (for checking run time ; difference -] to find out precision ; parameter) record_transformations=[filename] ; name of file to record tranformations go terminate ;additions after 2002.September: go1 ; tree for the whole project go2 ; compile all with opt ; parse & compile choosen with opt1 ; save original time go2a ; the same but with loop level profiling delete files _eos_s_time1 if don't want to continute from that part step=[param] ; <>0 - only one particular step go3 ; search go3a ; the same but with loop level profiling ignore_incorrect_out start_from_beginning file_project_out file_info_out file_time_in array_pad_only param_grid =[param] ; parameter for the grid search strategy param_rnd =[param] ; parameter for the random search strategy go4 ; write time file (_eos_s_time1) from output diag file go5 ; calculate number of iterations go6 ; creation of performance prediction (mpc) files create_dirs_each_step =[param] ; 1 = create directory for each step ; and copy various files there dir_ic =[param] ; the name of the directory where ; working files created during each ; step are saved number_of_executions =[param] ; number of executions of the program ; during iterative compilation. ; for LLP the data from the last ; execution is taken
Strategies: *** Simple Strategy *** 1a) common array transformations non-common array transformations for each procedure (each array transformed separately) loop tiling, tiling+unrolling, unrolling 1b) common array transformations non-common array transformations for each procedure (each array transformed separately, back order) loop tiling, tiling+unrolling, unrolling 1c) common array transformations non-common array transformations for each procedure (all arrays transformed simultaniously) loop tiling, tiling+unrolling, unrolling 2a) the same as 1a but array transformations are at the end 2b) the same as 1b but array transformations are at the end 2c) the same as 1c but array transformations are at the end *** Grid Strategy *** Search space with big steps then come back to the best found and search smaller search space (param_grid) around the best found parameter 3a) the same transformations as 1a but Grid Strategy 3c) the same transformations as 1a but Grid Strategy 4a) the same as 3a but array transformations are at the end 4c) the same as 3c but array transformations are at the end *** Random Strategy *** Search space with random parameters (number of iterations is param_rnd for each array or loop) 5a) the same transformations as 1a but Random Strategy 5c) the same transformations as 1a but Random Strategy 6a) the same as 5a but array transformations are at the end 6c) the same as 5c but array transformations are at the end *** Hybrid Strategy *** 7a) the same transformations as 1a but Hybrid Strategy 7c) the same transformations as 1a but Hybrid Strategy 8a) the same as 7a but array transformations are at the end 8c) the same as 7c but array transformations are at the end *** Parallel Strategy *** if outer loop is selected (tiling) -> the inner loop (unrolling) should be selected as well! Therefore, the number of inner loops should be the same as the number of timers! Only 1 outer loop can be selected (i.e. only one loop tiling per loop nest) if Optimization1=0 then do not check/compare with the second optimization 11c) common array transformations non-common array transformations for each procedure (all arrays transformed simultaniously) loop tiling, tiling+unrolling, unrolling for all loops simultaneously 12c) the same as 1c but array transformations are at the end