XMTC
Encyclopedia
XMTC is a shared-memory parallel programming language. It is an extension of the C programming language
which strives to enable easy PRAM-like programming based on the explicit multi-threading
paradigm. It is developed as part of the XMT PRAM-On-Chip vision by a research team at the University of Maryland, College Park
, led by Dr. Uzi Vishkin
.
The philosophy of XMTC and the whole XMT project is that parallel programming is a hard intellectual task and the approach of building a hardware system first and then figuring out how to program them has not had much success. For that reason a robust algorithmic theory and a reasonably easy hardware abstraction should be the specifications that guide how to build a new parallel architecture and programming language. For parallel algorithms the algorithmic theory that has the largest body of literature is called PRAM (Parallel Random Access Machine
). This is not a coincidence, since PRAM is a natural way in which to think algorithmically in parallel. In the early 90's the PRAM model was deemed unrealistic because the hardware abstraction it was based on could not be implemented (because of low inter-chip bandwidth and high latency). Now that multiple processors can be put on a single chip, these limitations are no longer present. The XMT architecture takes advantage of this excess on-chip real estate to implement a PRAM abstraction.
The XMTC language is a modest extension of C and a work in progress. The basic premise is that the programmer is responsible for exposing all the available parallelism. While this sounds simple and many earlier approaches share this ideal, in practice, if the programmer defines too large a number of parallel tasks and the tasks are short, the program will perform very poorly. The way around that is to combine short parallel tasks into a longer one, which is usually the responsibility of the programmer. In XMTC it is possible for the language to do that automatically, lifting the burden from the programmer.
Software release of XMTC: PRAM-like programming allows experimenting with XMTC programming on standard computers.
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
which strives to enable easy PRAM-like programming based on the explicit multi-threading
Explicit multi-threading
Explicit Multi-Threading is a computer science paradigm for building and programming parallel computers designed around the Parallel Random Access Machine parallel computational model...
paradigm. It is developed as part of the XMT PRAM-On-Chip vision by a research team at the University of Maryland, College Park
University of Maryland, College Park
The University of Maryland, College Park is a top-ranked public research university located in the city of College Park in Prince George's County, Maryland, just outside Washington, D.C...
, led by Dr. Uzi Vishkin
Uzi Vishkin
Uzi Vishkin is a computer scientist at the University of Maryland, College Park, where he is Professor of Electrical and Computer Engineering at the University of Maryland Institute for Advanced Computer Studies . Uzi Vishkin is known for his work in the field of parallel computing...
.
The philosophy of XMTC and the whole XMT project is that parallel programming is a hard intellectual task and the approach of building a hardware system first and then figuring out how to program them has not had much success. For that reason a robust algorithmic theory and a reasonably easy hardware abstraction should be the specifications that guide how to build a new parallel architecture and programming language. For parallel algorithms the algorithmic theory that has the largest body of literature is called PRAM (Parallel Random Access Machine
Parallel Random Access Machine
In computer science, Parallel Random Access Machine is a shared memory abstract machine. As its name indicates, the PRAM was intended as the parallel computing analogy to the random access machine...
). This is not a coincidence, since PRAM is a natural way in which to think algorithmically in parallel. In the early 90's the PRAM model was deemed unrealistic because the hardware abstraction it was based on could not be implemented (because of low inter-chip bandwidth and high latency). Now that multiple processors can be put on a single chip, these limitations are no longer present. The XMT architecture takes advantage of this excess on-chip real estate to implement a PRAM abstraction.
The XMTC language is a modest extension of C and a work in progress. The basic premise is that the programmer is responsible for exposing all the available parallelism. While this sounds simple and many earlier approaches share this ideal, in practice, if the programmer defines too large a number of parallel tasks and the tasks are short, the program will perform very poorly. The way around that is to combine short parallel tasks into a longer one, which is usually the responsibility of the programmer. In XMTC it is possible for the language to do that automatically, lifting the burden from the programmer.
Software release of XMTC: PRAM-like programming allows experimenting with XMTC programming on standard computers.