Roadmap
This is PHAST Library development roadmap. We will publish here the status of the development of new features.
To develop any of the items in the table, funds are appreciated! If you are interested in supporting us, please contact us at support-us@phast-library.com.
NOT STARTED | PARTIALLY DONE | DONE |
---|
NOTES | ||||
---|---|---|---|---|
ITEM | STATUS | COMPLEXITY | TIMING | EFFORT |
Support for effective heterogeneous programming. Using PHAST Library to obtain runnable code for both multi-core CPUs and GPUs in the same executable | Overall design done. Simple prototype example already run successfully | Medium | Short-term | Medium |
Support for runtime selection of code for CPUs and GPUs in heterogeneous architectures from a common code | Overall design done. Simple prototype example already run successfully | Medium | Short-term | Medium |
Support for many heterogeneous platforms by adding an Intel oneAPI backend | To be done. Its modern C++ nature makes it a good candidate to be seamlessly integrated into the PHAST core. It is a promising solution to bring PHAST Library on various architectures. | High | Mid/Long-term | High |
Support for AMD graphic cards in PHAST Library by adding a HIP backend | To be done. The core could be obtained by automatically port existing CUDA code to HIP code. Tuning, AMD-specific refinements, and extensive testing of the ported code would be the main part of the item. | High | Mid/Long-term | High |
Integrate modern C++ lambda syntax in PHAST Library | To be designed. Need re-structuring or overloading of functor basic structure | High | Mid-term | Medium |
Overload PHAST Library algorithms to support parallel execution policy syntax of C++17 STL algorithms | To be done. Porting of the existing PHAST Library algorithms needed. Some adaptations to PHAST Library containers and optimization parameters are needed | High | Mid/Long-term | High |
(Semi-)automatic estimation of optimization parameters of algorithms. Mainly for GPUs, which expose a richer set of possibilities (e.g., shared pre-load, multi-dimensional tiling strategies, scheduling strategies) | To be done. Need to build a closed-loop exploration of the parameters design space evaluating different search criterions. Later on, also open-loop estimation of promising parameter sets will be implemented (e.g., through synthetic descriptors of algorithm structure/behavior evaluation and machine learning) | Medium | Mid/Long-term incremental releases |
Medium/High |
Extension of PHAST Library code generation for OpenCL, on top of Nvidia and CPU compilable code. OpenCL 2.2 will have full C++14 support also in-functor and will allow PHAST Library to support AMD platforms. This way, PHAST Library will also take advantage from orthogonal code optimization strategies in specific OpenCL vendor implementations (e.g., AoS <-> SoA + Intel-OpenCL auto-vectorization capabilities). | Broad plan done. To be designed in details. Minor adaptation in code generation will be required and the runtime compilation support will need to be added to PHAST Library infrastructure | High | Mid-term need OpenCL 2.2 implementation available |
Medium |
Task-based parallelism support integrated in PHAST Library | Broad design is done. Simple prototype example already run successfully. Need to evaluate possible limitations and solve them | Medium | Short/Mid-term incremental releases |
Low/Medium |
Multi-GPU support on one node. Possibly it will be partially related to Task-based parallelism topic | To be done. Some broad ideas are there to extend current structures and approaches implemented in PHAST Library and probably some new concepts will need to be integrated | High | Mid-term | High |
Multi-node support. Possibly it will be partially related to Task-based parallelism | To be done. Broad ideas are there and we will need to map distribution, execution, and synchronization concepts within existing and additional PHAST Library concepts | High | Mid/Long-term | High |
Extension to containers with an arbitrary number of dimensions | Already designed and with limited uncertainties. Addition of N-dimensional containers and upgrade to all affected PHAST Library algorithms | Low | Short/Mid-term depends on users' interest |
Medium |
Extension of PHAST Library support to OpenCL compliant FPGA targets | Dependant on OpenCL code generation task. Need to refine and target to FPGA a subset of PHAST Library computation capabilities, to be identified | High | Mid/Long-term | High |