The Leading Source for Global News and Information Covering the Ecosystem of High Productivity Computing
July 16, 2008
If anyone knows how to introduce a new programming language, it's Sun Microsystems. The company's highly successful Java language, which was introduced in 1991, has become ubiquitous in network-centric and embedded computing. Today, there's a whole research team at Sun Labs devoted to programming languages, and the big project there in recent years has been the development of the Fortress programming language. The end game is to "do for Fortran what Java did for C."
Unlike Java though, Fortress is geared for HPC applications, with programmability as a major design goal. The language maintains a high level of abstraction for the developer, allowing the focus to be on the algorithm rather than the underlying hardware. And even though Fortress specifically targets high-end technical computing, it is also applicable to large-scale parallel applications of almost any type. "We were looking for a language that was good for multicore, for supercomputing, and for everything in between," explains Eric Allen, principal investigator of the programming languages research group at Sun Labs.
The project began in 2003 and was originally funded out of DARPA's High Productivity Computing System (HPCS) program. When Sun was dropped from HPCS in Phase III of the program, Sun Labs took over the Fortress R&D completely. But since Sun has made Fortress an open source project, the company has received a lot of outside help from universities and other researchers that have contributed to the design and implementation of the language. The University of Tokyo, the University of Virginia, and University of Aarhus in Denmark are all developing new Fortress libraries, while Rice University has been working on compiler optimizations.
Although the basic foundation is now fairly stable, the language specification is not written in stone. Version 1.0 of the compiler and runtime was launched in April of this year and represents a prototype for users who would like to kick the tires and offer some feedback. According to Allen, Sun is updating the spec as new features are added or current ones are refined and is incorporating the changes into the language as appropriate. The intention is to release new distributions every few months. Allen says a production version of the compiler is expected in 2010, or thereabouts.
The current prototype runs on top of a standard Java Virtual Machine (JVM), so just about anyone with a computer can give Fortress a whirl. Sun offers the latest distribution free on their Project Fortress site. For performance reasons, Allen expects that at some point more of the runtime will be statically compiled rather than interpreted, but right now the convenience of the JVM is enabling widespread experimentation. He says they've already received a lot of good suggestions, especially from the academic community.
Allen himself teaches a programming course using Fortress at UT Austin. According to him, the kids there are enthusiastic about writing code with it and are amazed at how concise Fortress programs are compared to other languages they've used.
The language itself supports both task and data parallelism. Most of the constructs assume concurrency unless the programmer explicitly specifies sequential execution. So parallel computation is automatically performed underneath the covers as a result of standard source code execution (assuming the underlying platform has more than a single core). For example, basic operations like for-loops are parallelized by default. Even computing arguments that are to be passed to a function are performed in parallel. "In fact, everywhere where we could possibly add parallelism into the language, we added it," says Allen.
The runtime implicitly farms out computations to the available processor cores using a fine-grained threading model. As cores becomes idle, the runtime will transparently steal work from overloaded parts of the system and move those computations to the unused cores. The language also provides for explicit threading under the control of the programmer. Atomic operations are executed using a transactional memory scheme instead of the old-style locks.
For clusters, where the locality of the computation becomes an issue, the language has both implicit and explicit methods of distributing data. By default, Fortress arrays are spread across a system with the default arrangement determined by the Fortress libraries. This allows the implementation to use target-specific libraries for machines with similar locality characteristics. Fortress also has the notion of a "distribution," which permits the programmer to explicitly specify both distribution of data and locality information for scheduling.
Probably the most distinguishing feature of Fortress is its support for mathematical notation. The goal here is to make the step from algorithm specification to source code as short as possible. To do this, the language supports 16-bit Unicode characters and specifies ASCII keyboard sequences that are rendered into mathematical notation. The current Fortress distribution includes an extension to the Emacs text editor that will convert these keyboard sequences as they are typed. The language designers' devotion to this type of notation created some challenges for the compiler's parser. For example, the use of whitespace between two operands to indicate multiplication (e.g., x y) requires some natural language smarts to determine the intention of the programmer.
Page: 1 of 2(Digg, Technorati, more)
New Paper: Parallel Computing Without Parallel Programming
Learn how domain experts can run VHLL programs like MATLAB® on a variety of high-performance platforms without low-level reprogramming and how to work with the largest datasets and complex algorithms without sacrificing ease of use or reducing productivity.
Jul 09 | Engineer Live | The demand for computational tools to underpin the 3D seismic interpretation process has never been more apparent. Read more...
Jul 08 | EE Times | Unemployment for U.S. engineers has reached record levels, according to government figures. Read more...
Jul 08 | Network World | Global spending for 2009 projected to drop 6 percent, for a total of $3.2 trillion. Read more...
Jul 08 | Linux Magazine | Portability or efficiency? Neither is guaranteed when writing explicit parallel code. Read more...
Jul 07 | Ars Technica | Japanese company builds custom ASIC to accelerate real-time ray traced rendering for the auto industry. Read more...
Jul 10 | | Engineers, scientists, and other domain experts depend on the productivity enabled by very high-level language (VHLL) tools like MATLAB® and Python. However, as datasets grow larger and programs get more sophisticated, ordinary desktop computers can no longer keep up. The paper explores how to run VHLL programs on high-performance platforms without low-level reprogramming. Work with large datasets and complex algorithms without sacrificing ease of use or reducing productivity.
Apr 14 | | Many HPC IT departments are feeling the rising pressure to deliver more capacity computing and performance while trying to reduce the total cost of ownership. This white paper discusses how an environmentally-friendly and open-standards HPC building block based computing system using flexible interconnect options helps address capacity computing needs.
Source: Addison Snell, GM/VP, Tabor Research; sponsored by Dell
Many organizations that could benefit from the use of HPC clusters find that it is complicated to get the systems up and running because of limited IT resources or the complexities of the clusters themselves. Learn how the Intel Cluster Ready program, for which Dell was an original partner, seeks to address this challenge for entry level and mid-range HPC users.
BlueArc's Titan architecture represents an evolutionary step in file servers by creating a hardware-based file system that can scale bandwidth, IOPS, and overall data capacity well beyond conventional software-based devices. With its ability to virtualize a massive storage pool of up to four usable petabytes of tiered storage, Titan can scale with growing data requirements, offering a competitive advantage for businesses, researchers, or other enterprises seeking to better manage data growth while still ensuring optimal performance.
Sun Studio Compilers and Tools and Sun HPC ClusterTools allow you to create high performance parallel applications for OpenSolaris, Solaris and Linux. Sun Studio Express 11/08 includes MPI performance analysis capabilities and full OpenMP 3.0 compiler support. Learn about all this and the latest in Sun HPC ClusterTools 8.1.