X10 is a programming language being developed by IBM at the Thomas J. Watson Research Center as part of the PERCS project funded by DARPA's High Productivity Computing Systems (HPCS) program. Its primary authors are Kemal Ebcioglu, Vijay Saraswat, and Vivek Sarkar.[1]
X10 is designed specifically for parallel programming. It is an "extended subset" of the Java programming language, strongly resembling it in most aspects, but featuring additional support for arrays and concurrency. X10 uses a Partitioned global address space model. It supports both object-oriented and non-object-oriented programming paradigms.
X10 uses the concept of parent and child relationships for tasks to prevent the lock stalemate that can occur when two or more processes wait for each other to finish before they can complete. A task may spawn one or more child tasks, which may themselves have children. Children cannot wait for a parent to finish, but a parent can wait for a child using the "finish" command.[2]
See also
References
- ^ http://www.aurorasoft.net/workshops/lar04/Author_Files/Papers/Vivek_Sarkar_LaR_04_Paper_V1.pdf
- ^ Biever, C. "Computer revolution poses problems for programmers", New Scientist (Vol 193, Number 2594)
External links
- X10 home page
- X10 getting started
- X10 Tutorial
- X10 language specification
- X10 user mailing list
- Overview of PGAS languages (including X10)
- Principles and Practice of Parallel Programming in X10 (course notes)
- Vivek Sarkar's X10 slides
- HPCS program
- GPLed X10 prototype
- a simple streaming example in X10 (Sieve of Eratosthenes problem)
- FFT in X10
- LU in X10
- HPC and NAS benchmarks in X10