16,187 research outputs found
Recommended from our members
Automatic program generation for scientific computing
The code reuse problem is a common software engineering problem in scientific computing. As a prevailing programming language in many scientific fields, Fortran does not provide support to address this problem. One particular reason is that Fortran lacks the support for generic programming. By applying program-generation techniques, we developed two approaches to address the code reuse problem. The first approach is to design a program generator for the equation-based specification of subroutines that can be generic in the dimensions of arrays, parameter lists, and called subroutines. We apply that approach to a real-world problem in scientific computing, which requires the generic description of inverse ocean modeling tools. In addition to a compiler that can transform generic specifications into efficient Fortran code for models, we have also developed a type system that can identify possible errors already in the specifications. The second approach is to extend Fortran with the support for generic programming. The result is the language Parametric Fortran, which supports defining Fortran program templates by allowing the parameterization of arbitrary Fortran constructs. A Fortran program template can be translated into a regular Fortran program guided by values for the parameters. Parametric Fortran is particularly useful in scientific computing. The applications include defining generic functions, removing duplicated code, and automatic differentiation. The described Fortran extension has also been successfully employed implementing the generic inverse ocean modeling system
Object-oriented construction of a multigrid electronic-structure code with Fortran 90
We describe the object-oriented implementation of a higher-order
finite-difference density-functional code in Fortran 90. Object-oriented models
of grid and related objects are constructed and employed for the implementation
of an efficient one-way multigrid method we have recently proposed for the
density-functional electronic-structure calculations. Detailed analysis of
performance and strategy of the one-way multigrid scheme will be presented.Comment: 24 pages, 6 figures, to appear in Comput. Phys. Com
Julia: A Fresh Approach to Numerical Computing
Bridging cultures that have often been distant, Julia combines expertise from
the diverse fields of computer science and computational science to create a
new approach to numerical computing. Julia is designed to be easy and fast.
Julia questions notions generally held as "laws of nature" by practitioners of
numerical computing:
1. High-level dynamic programs have to be slow.
2. One must prototype in one language and then rewrite in another language
for speed or deployment, and
3. There are parts of a system for the programmer, and other parts best left
untouched as they are built by the experts.
We introduce the Julia programming language and its design --- a dance
between specialization and abstraction. Specialization allows for custom
treatment. Multiple dispatch, a technique from computer science, picks the
right algorithm for the right circumstance. Abstraction, what good computation
is really about, recognizes what remains the same after differences are
stripped away. Abstractions in mathematics are captured as code through another
technique from computer science, generic programming.
Julia shows that one can have machine performance without sacrificing human
convenience.Comment: 37 page
A parallel Fortran framework for neural networks and deep learning
This paper describes neural-fortran, a parallel Fortran framework for neural
networks and deep learning. It features a simple interface to construct
feed-forward neural networks of arbitrary structure and size, several
activation functions, and stochastic gradient descent as the default
optimization algorithm. Neural-fortran also leverages the Fortran 2018 standard
collective subroutines to achieve data-based parallelism on shared- or
distributed-memory machines. First, I describe the implementation of neural
networks with Fortran derived types, whole-array arithmetic, and collective sum
and broadcast operations to achieve parallelism. Second, I demonstrate the use
of neural-fortran in an example of recognizing hand-written digits from images.
Finally, I evaluate the computational performance in both serial and parallel
modes. Ease of use and computational performance are similar to an existing
popular machine learning framework, making neural-fortran a viable candidate
for further development and use in production.Comment: Submitted to ACM SIGPLAN Fortran Forum. Reviewed by Arjen Markus and
Izaak Beekma
Implementation of novel methods of global and nonsmooth optimization : GANSO programming library
We discuss the implementation of a number of modern methods of global and nonsmooth continuous optimization, based on the ideas of Rubinov, in a programming library GANSO. GANSO implements the derivative-free bundle method, the extended cutting angle method, dynamical system-based optimization and their various combinations and heuristics. We outline the main ideas behind each method, and report on the interfacing with Matlab and Maple packages. <br /
- …