Swift/T is a completely new implementation of the Swift language for high-performance computing. In this implementation, the Swift code is translated into an MPI program that uses the Turbine (hence, /T) and ADLB runtime libraries for highly scalable dataflow processing over MPI, without single-node bottlenecks.
This page is obsolete- go to:
Documentation and Downloads
Swift is a naturally concurrent language with C-like syntax. It is primarily used to manage calls to leaf tasks- external functions written in C, C++, Fortran, Python, R, Tcl, or executable programs. The Swift language coordinates the distribution of data to these tasks and schedules them for concurrent execution across the nodes of a large system.
Swift has conventional programming structures- functions, if, for, arrays, etc. Some functions are connected to leaf tasks, which are expected to do the bulk of the computationally intensive work. Tasks run when their input data is available. Data produced by a task may be fed into the next using syntax like:
If tasks are able to run concurrently, they do: in this, case, two executions of g() run concurrently.
Swift loops and other features provide additional concurrency constructs. Data movement is implicitly performed over MPI.
The Swift compiler, STC, breaks a Swift script into leaf tasks and control tasks. These are managed at runtime by the scalable, distributed-memory runtime consisting of Turbine and ADLB. For example, the following code is broken up into the task diagram:
Swift/T is able to execute Swift/K-style app functions and is a natural migration from Swift/K. Key differences include:
The high performance demonstrated by Swift/T is due to:
The Swift/T user guide and downloads can be found here:
There materials from a Swift/T tutorial at the Swift/T CCGrid tutorial site.