- Sponsor:
- sighpc
Dynamic high-level languages are rapidly gaining popularity with computational scientists and engineers. High-level languages offer the advantage of writing legible and expressive code, which facilitate the rapid prototyping of programs for technical computing. However, high-level languages have a reputation for being subperformant and being difficult to deploy scalably on massively parallel architectures such as clusters, cloud servers, and supercomputers. Thus, some scientific developers resort to prototyping in one language and deploying at scale in another, thus incurring the costs associated with reimplementing a scientific code at least twice. This two-language problem is but one example of the technical challenges associated with the use of dynamic languages on massively parallel platforms.
This workshop aims to bring together users, developers, and practitioners of dynamic technical computing languages, regardless of language, affiliation or discipline, to discuss topics of common interest. Disciplines affiliated the broad umbrella of computational science and engineering, such as physical sciences, biological sciences, social sciences, digital humanities, mathematics, statistics, computer science, all share common challenges associated with the implementation of computational models in extant programming languages. Examples of such topics include code performance, the use of abstractions for composability and reusability, the two-language problem, best practices for software development and engineering, and the implications of such code design decisions for applications in visualization, information retrieval and big data analytics. We expect that these challenges are common to researchers and programmers in academia, national laboratories and industry.
Proceeding Downloads
Experimental multi-threading support for the Julia programming language
Julia is a young programming language that is designed for technical computing. Although Julia is dynamically typed it is very fast and usually yields C speed by utilizing a just-in-time compiler. Still, Julia has a simple syntax that is similar to ...
Petascale Tcl with NAMD, VMD, and Swift/T
- James C. Phillips,
- John E. Stone,
- Kirby L. Vandivort,
- Timothy G. Armstrong,
- Justin M. Wozniak,
- Michael Wilde,
- Klaus Schulten
Tcl is the original embeddable dynamic language. Introduced in 1990, Tcl has been the foundation of the scripting interface of the popular biomolecular visualization and analysis program VMD since 1995 and was extended to the parallel molecular dynamics ...
Convex optimization in Julia
This paper describes Convex, a convex optimization modeling framework in Julia. Convex translates problems from a user-friendly functional language into an abstract syntax tree describing the problem. This concise representation of the global structure ...
Parallel algebraic modeling for stochastic optimization
We present scalable algebraic modeling software, StochJuMP, for stochastic optimization as applied to power grid economic dispatch. It enables the user to express the problem in a high-level algebraic format with minimal boilerplate. StochJuMP allows ...
Julia and the numerical homogenization of PDEs
We discuss the advantages of using Julia for solving multiscale problems involving partial differential equations (PDEs). Multiscale problems are problems where the coefficients of a PDE oscillate rapidly on a microscopic length scale, but solutions are ...
Comparing a high and low-level deep neural network implementation for automatic speech recognition
The use of deep neural networks (DNNs) has improved performance in several fields including computer vision, natural language processing, and automatic speech recognition (ASR). The increased use of DNNs in recent years has been largely due to ...
Parallel prefix polymorphism permits parallelization, presentation & proof
Polymorphism in programming languages enables code reuse. Here, we show that polymorphism has broad applicability far beyond computations for technical computing: parallelism in distributed computing, presentation of visualizations of runtime data flow, ...
A practical framework for infinite-dimensional linear algebra
We describe a framework for solving a broad class of infinite-dimensional linear equations, consisting of almost banded operators, which can be used to representing linear ordinary differential equations with general boundary conditions. The framework ...
Recommendations
High-Performance Languages for Parallel Computing
For the first 10 years of parallel computing, no high-level software infrastructure was commercially available for parallel architectures, forcing users to adopt a programming paradigm similar to assembly-language programming. In the 1980s, research ...