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 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