Jump to content

Swift (parallel scripting language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Timgarmstrong (talk | contribs) at 19:35, 6 June 2014 (Fix stray line break). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Swift
DeveloperUniversity of Chicago and Argonne National Laboratory
First appeared2007 (2007)
Stable release
0.94.1 / 09/30/2013
LicenseApache License, Version 2.0
Websitehttp://swift-lang.org
Influenced by
C syntax, Functional Programming, Scientific Workflow Systems, Grid Computing

Swift[1] is an implicitly parallel programming language that allows programmers to write parallel scripts that distribute program execution across distributed computing resources, including clusters, clouds, grids, and supercomputers.[2] Rapid dispatch of parallel tasks to a wide range of resources is supported through the Coasters task dispatch mechanism[3] (i.e., pilot jobs). An MPI-based implementation of the language[4] supports very high task execution rates on large clusters and supercomputers. Both Swift implementations are open source under the Apache License, version 2.0.

Language features

Swift is implicitly parallel, meaning that program statements will automatically run in parallel unless there is a data dependency between them, given sufficient computing resources. The design of the language guarantees that results of a computation are deterministic, even though the order in which statements executes may vary. A special file data type is built into Swift and Swift allows command-line programs to be integrated into a program as typed functions. This allows programmers to write programs that treat command-line programs and files in the same way as regular functions and variables. A concept of "mapping" is used that allows Swift data structures to be mapped to file system structures comprised of files and directories.

The standard data types in Swift, including files, are single assignment, with similar semantics to I-vars and I-structures. Swift arrays are associative arrays that dynamically expand as single-assignment keys are given values. The Swift language implementation can automatically detect when the array has become read-only.

References

  1. ^ "Swift Home Page". swift-lang.org. Retrieved 2014-06-02.
  2. ^ Wilde, Michael; Hategan, Mihael; Wozniak, Justin M.; Clifford, Ben; Katz, Daniel S.; Foster, Ian (2011). "Swift: A language for distributed parallel scripting" (PDF). Parallel Computing. 37 (9): 633–652.
  3. ^ Hategan, Mihael, J. Wozniak, and Ketan Maheshwari. "Coasters: uniform resource provisioning and access for scientific computing on clouds and grids." Proc. Utility and Cloud Computing (2011)
  4. ^ Wozniak, Justin M., Timothy G. Armstrong, Michael Wilde, Daniel S. Katz, Ewing Lusk, and Ian T. Foster. "Swift/T: Large-scale Application Composition via Distributed-memory Dataflow Processing." In Cluster, Cloud and Grid Computing (CCGrid), 2013 13th IEEE/ACM International Symposium on, pp. 95-102. IEEE, 2013