Problem: - performance portable parallel language : for “new” code - target deep memory hierarchies - abstract mechanisms - abstract topology/hierarchy - not heavily rely on compiler analysis
Users: - Data parallel programs - Scientific computing - Experts - Library writers - Compiler Optimization
Unique:
- Vertical storage hierarchy
- All programs are collection of bulk operations “task”
- Hierarchy of bulk operations 1) gather 2) scatter 3) run subtask
- A task is side-effect free; inputs and outputs are explicit.
Other points:
- Traditionally parallel programs are developed in languages like MPI,Open MP etc, and the implementation is too machine specific.
- Sequoia is not meant to be a wide-spread programming language. It has been designed to be an intermediate language, which could serve as a “performance layer”. So, compiler can compile a program in domain-specific language into Sequoia where various machine-specific optimizations could be carried out.
- Open MP: designed for multi-threaded coding on shared memory (one namespace)
- MPI : designed for distributed memory systmes with explicit massage communication.
- Chapel:- for distributed programming and data parallel programming
- In sequoia, two processors can not directly communicate, they need to do it through upper memory layer in hierarchy. However, compiler can optimize these communications.
- Sequoia programming model has been implemented and tested for cluster-networks, cell processors and Disk based systems.
- Sequoia doesn’t give much emphasis on the leaf node’s code.
