Home
Executive Summary
X10 is a new programming language being developed at IBM Research in collaboration with academic partners. The X10 effort is part of the IBM PERCS project (Productive Easy-to-use Reliable Computer Systems) in the DARPA program on High Productivity Computer Systems. The PERCS project is focused on a hardware-software co-design methodology to integrate advances in chip technology, architecture, operating systems, compilers, programming language and programming tools to deliver new adaptable, scalable systems that will provide an order-of-magnitude improvement in development productivity for parallel applications by 2010.
X10 contributes to this productivity improvement by developing a new programming model, combined with a new set of tools integrated into Eclipse and new implementation techniques for delivering optimized scalable parallelism. X10 is a type-safe, modern, parallel, distributed object-oriented language intended to be very easily accessible to Java(TM) programmers. It is targeted to future low-end and high-end systems with nodes that are built out of multi-core SMP chips with non-uniform memory hierarchies, and interconnected in scalable cluster configurations. A member of the Partitioned Global Address Space (PGAS) family of languages, X10 highlights the explicit reification of locality in the form of places; lightweight activities embodied in async, future, foreach, and ateach constructs; constructs for termination detection ( finish) and phased computation ( clocks); the use of lock-free synchronization ( atomic blocks); and the manipulation of global arrays and data structures.
An Eclipse-based Integrated Development Environment (IDE) is being developed at IBM for X10 to help further increase programmer productivity by providing state-of-the-art functionality for viewing, editing, navigating, executing, and manipulating X10 programs. The goal of X10 Development Toolkit (X10DT) is to be a full-featured IDE for X10 offering the features Java programmers have come to love and depend upon in Eclipse: a source editor with various coding assists, lightweight information pop-ups, high-level and low-level navigation views, powerful search capabilities, application launch configuration management, refactoring, and debugging support. In addition, the X10DT will include tools, views and refactorings that specifically address the development of highly concurrent software in X10. The project is actively working on X10DT to meet these goals and welcomes assistance from the larger community.
Additional Resources
They are a number of resources available describing different aspects of X10. To help make the information more accessible, we have created X10 overview pages specialized for different broad groups of people.
- For Users is intended for Users of the X10 language, who are primarily interested in using X10 to develop application programs.
- For Educators is intended for Educators who are considering using X10 in an instructional setting. For example, teaching a class about Parallel Programming or as part of a course on Programming Languages.
- For Researchers is intended for members of the computer science Research community who are either interested in using X10 in their own research or finding recent research publications and results that make use of the X10 language and/or implementation.
- For X10 Developers is intended for people who are either directly involved in the X10 project, or who are interested in using pre-release versions of X10 by building their own X10 systems from the project source code repositories.
Recent X10 News
We're happy to announce that version 2.0.1 of X10 and X10DT are now available for download. This release contains a number of bug fixes and improvements to the code base. For more details, please see the X10 2.0.1 release page at http://x10-lang.org/X10+2.0.1+Release.
The IBM TJ Watson Research Center in Yorktown Heights, NY is seeking a candidate for a Research Staff Member position with experience in High Performance Computing.
The hired candidate will conduct research in the area of high performance computing runtimes support, in particular runtime environments for Asynchronous Partitioned Global Address Spaces (APGAS).
The candidate will design, develop and port the IBM APGAS (Asynchronous Partitioned Global Address Space) runtime; develop and optimize high performance and business applications and libraries for UPC, co-array Fortran and X10; run code on IBM Power clusters, Blue Gene servers, general purpose clusters, hybrid (e.g. accelerator based) and heterogeneous architectures.
Required qualifications
- Doctorate Degree in Computer Science, Electrical Engineering
- Good software design and engineering abilities; familiarity with development tools: C, C++ compilers, debuggers, performance tools
- Background in high performance computing; familiarity with MPI and development of high performance applications.
- Excellent communication skills; good spoken and written English; motivation, ability to perform independent research
Preferred qualifications
- Background and experience in High Performance Computing
- knowledge of parallel algorithms
- experience with running & tuning high performance computing applications
- deep knowledge of MPI
- knowledge of high performance libraries like PESSL, PETSc, FFTW, Atlas
- Knowledge of PGAS languages: UPC, co-array Fortran, Titanium, Chapel, Fortress, X10, Global Arrays etc.
- Deep background and experience in Compilers and optimization, including parallelization and vectorization techniques
- Background and experience in dealing with heterogenous accelerator architectures like GPGPUs and the IBM Cell architecture.
To apply
Please visit http://www.ibm.com/employment/ and click on "Search for jobs at IBM". Type "0278655" into the search box to bring up this job position.
The joint X10 and UPC submission by IBM to the HPC Challenge competition won the Class 2 award for best performance. For details see: http://www.hpcchallenge.org/custom/index.html?lid=103&slid=236