From cTuning.org
Navigation: cTuning.org > CTools > ICI
If you are interested in the current projects, would like to add new project or would like to help with the implementations, you are welcome to participate in the discussions below. You are also encouraged to send a summary email to the cTuning Discussions Mailing List (mail, web view/register) to keep cTuning community informed about your feedback. You can also contact cTuning steering committee if you have general questions. Finally, you can also select a Wiki option to watch the modifications of this page.
Extend basic plugin functionality
Provide universal function cloning through ICI in GCC
Description: Add support for univeral function cloning through ICI to be able to optimize clones at fine-grain level using ICI.
Who is interested?: Grigori Fursin (submitted this project), Cupertino Miranda
Who may have time to help?:
How to proceed?: Discussion page for ICI function cloning. It may also need program instrumentation to link external libraries and add selection calls (Discussion page for ICI program instrumentation)...
Port ICI to LLVM
Description: Port ICI to LLVM to enable fine-grain program optimizations, instrumentation and analysis.
Who is interested?: Grigori Fursin (submitted this project), Andy Nisbet?, ISP RAS guys?
Who may have time to help?:
How to proceed?: We need to discuss differences between LLVM and GCC internal structure ...
Port ICI to Open64
Description: Port ICI to Open64 to enable fine-grain program optimizations, instrumentation and analysis.
Who is interested?: Grigori Fursin (submitted this project)
Who may have time to help?:
How to proceed?: We need to discuss what to do with the rigid structure of Open64 that does not allow pass reordering, etc ...
Provide ICI program instrumentation
Description: Add support to insert function clone selection mechanisms, link external libraries (such as hardware counters monitoring routines), insert calls at the beginning and end of the function (including main) through ICI. It is needed to finalize implementation of the technique described in (FCOP2005, FMPP2007 and FT2009)
Who is interested?: Grigori Fursin (submitted this project), Zbigniew Chamski
Who may have time to help?: Zbigniew Chamski?
How to proceed?: Discussion page for ICI program instrumentation. One of many usage examples can be function cloning (Discussion page for ICI function cloning).
Add support for multi-ISA generation in GCC
Description: Add multi-ISA code generation support in GCC to extend adaptive scheduling techniques for CPU/GPU or CELL systems (JGVP2009)
Who is interested?: Grigori Fursin (submitted this project), Cupertino Miranda?
Who may have time to help?: ?
How to proceed?: It can be combined with ICI function cloning
Enable transparent collection of optimization data
Description: Move prototypes from FT2009 into GCC, ICI, CCC and cDatabase
Who is interested?: Grigori Fursin (submitted this project)
Who may have time to help?: Grigori Fursin?
How to proceed?: it is a long-term project and requires combination of ICI function cloning and ICI program instrumentation.
Add support for source-to-source compilation in GCC
Description: Convert multiple internal GCC representations back to the source code to be able to create various function clones and compile/optimize them for heterogeneous architectures with the explicit memory transfers, etc. It could be useful for many R&D projects.
Who is interested?: Grigori Fursin (submitted this project)
Who may have time to help?:
How to proceed?: long-term project - any help is appreciated ... Can be useful for analysis tools, cross-compilation, code generation and optimization for CPU-GPU and other heterogeneous systems
Add code generation for NVIDIA GPU
Description: Add code generation for NVIDIA GPU (similar to CUDA) + combine with ICI function cloning and run-time adaptation techniques
Who is interested?: Grigori Fursin (submitted this project)
Who may have time to help?:
How to proceed?: can enable research on an adaptive high-level abstraction layer and unified view of future heterogeneous architectures (data partitioning and adaptive code scheduling).
Provide a unified view of heterogeneous architectures (CPU/GPU, CELL-like, FPGA, accelerators), optimizations and data movement/partitioning with a high-level abstraction layer (architectures, compilers, run-time systems) to automate and simplify program development and optimization for heterogeneous multi-core systems
Description: Enable automatic run-time adaptation for heterogeneous systems (scheduling, code and data partitioning) and extend the framework described in JGVP2009. Take a look at recent OpenCL - it has similar framework and ideas and can become a standard.
Who is interested?: Grigori Fursin (submitted this project)
Who may have time to help?:
How to proceed?: start discussion
Program phase detection based on hardware counters (to select statically pre-optimized code versions, reconfigure processor at run-time or for fault-tolerance)
Description: I would like to port my old framework based on PathScale compiler FCOP2005 to GCC and combine with ICI, function cloning and multi-ISA code generation.
Who is interested?: Grigori Fursin (submitted this project)
Who may have time to help?:
How to proceed?:
Change machine description and customize machine instruction set using ICI without recompiling GCC
Description: Needed for to support research on optimizations for reconfigurable architectures, or simply support GCC retargeting for new architectures without GCC recompilation ... Combine with CCC Framework to automate architectural design space exploration.
Who is interested?: Grigori Fursin (submitted this project)
Who may have time to help?:
How to proceed?:
Combination of traditional and polyhedral optimizations in GCC
Description: Combine with CCC Framework for automatic performance evaluation of polyhedral vs traditional optimizations/parallelization (thread partitioning)
Who is interested?: Grigori Fursin (submitted this project)
Who may have time to help?:
How to proceed?:
Dummy (add new project)
Description:
Who is interested?: <please, add yourself>
Who may have time to help?: <please, add yourself>
How to proceed?: start discussion