11 research outputs found

    Multilayered abstractions for partial differential equations

    Get PDF
    How do we build maintainable, robust, and performance-portable scientific applications? This thesis argues that the answer to this software engineering question in the context of the finite element method is through the use of layers of Domain-Specific Languages (DSLs) to separate the various concerns in the engineering of such codes. Performance-portable software achieves high performance on multiple diverse hardware platforms without source code changes. We demonstrate that finite element solvers written in a low-level language are not performance-portable, and therefore code must be specialised to the target architecture by a code generation framework. A prototype compiler for finite element variational forms that generates CUDA code is presented, and is used to explore how good performance on many-core platforms in automatically-generated finite element applications can be achieved. The differing code generation requirements for multi- and many-core platforms motivates the design of an additional abstraction, called PyOP2, that enables unstructured mesh applications to be performance-portable. We present a runtime code generation framework comprised of the Unified Form Language (UFL), the FEniCS Form Compiler, and PyOP2. This toolchain separates the succinct expression of a numerical method from the selection and generation of efficient code for local assembly. This is further decoupled from the selection of data formats and algorithms for efficient parallel implementation on a specific target architecture. We establish the successful separation of these concerns by demonstrating the performance-portability of code generated from a single high-level source code written in UFL across sequential C, CUDA, MPI and OpenMP targets. The performance of the generated code exceeds the performance of comparable alternative toolchains on multi-core architectures.Open Acces

    Firedrake: automating the finite element method by composing abstractions

    Get PDF
    Firedrake is a new tool for automating the numerical solution of partial differential equations. Firedrake adopts the domain-specific language for the finite element method of the FEniCS project, but with a pure Python runtime-only implementation centered on the composition of several existing and new abstractions for particular aspects of scientific computing. The result is a more complete separation of concerns that eases the incorporation of separate contributions from computer scientists, numerical analysts, and application specialists. These contributions may add functionality or improve performance. Firedrake benefits from automatically applying new optimizations. This includes factorizing mixed function spaces, transforming and vectorizing inner loops, and intrinsically supporting block matrix operations. Importantly, Firedrake presents a simple public API for escaping the UFL abstraction. This allows users to implement common operations that fall outside of pure variational formulations, such as flux limiters

    Fatiando a Terra v0.4: Modeling and inversion in geophysics

    No full text
    <p>Fatiando a Terra (Portuguese for Slicing the Earth) is an open-source Python toolkit for modeling and inversion in geophysics. It provides an easy and flexible way to perform and implement geophysical data analysis.</p> <p>Official website and documentation: http://www.fatiando.org</p> <p>DOI for this release: http://dx.doi.org/10.5281/zenodo.49087</p> <p>Main changes to version 0.4 (see http://www.fatiando.org/changelog.html#version-0-4 for a complete list):</p> <p>* **New** module to obtain a synthetic convolutional seismogram in<br>   `fatiando.seismic.conv`. It can be given a depth model that will be<br>   converted to a time model before generating the synthetic seismogram.<br> * **Refactor** `fatiando.inversion`. Completely redesigned classes make<br>   implementing new inversions simpler. Subclassing `Misfit` is simpler, with<br>   fewer parameters necessary. The usage of existing inversions has changed<br>   little. A **new dependency** `future` was added to ease the transition to<br>   support Python 3.<br> * **BUG FIX**: Tesseroid computations failed (silently) when tesseroids were<br>   smaller than 1e-6 degrees on a side (~ 10 cm). Code now ignores these<br>   tesseroids on input and warns the user about it. If a tesseroid becomes<br>   smaller than this during adaptive discretization, the tesseroid effect will<br>   be computed without division.  The user will be warned when this happens.<br> * **New** reduction to the pole and upward continuation with FFT in<br>   `fatiando.gravmag.transform`. The pole reduction allows both remanent and<br>   induced magnetization. Upward continuation is more stable and faster than the<br>   old space domain approach that was implemented.<br> * **IMPORTANT BUG FIX**: Fixed wrong ordering of nodes in<br>   `fatiando.mesher.PointGrid`. The order of nodes had the same problem as the<br>   regular grids. This was not caught<br>   before because `PointGrid` didn't use `gridder.regular` to generate its<br>   internal regular grid. This is an example of why reuse is a good thing! Tests<br>   now should catch any future problems.<br> * **IMPORTANT BUG FIX**: `fatiando.gridder.regular` and many other places in<br>   Fatiando where using the wrong convention for x, y dimensions.<br>   x should point North and y East. Thus, a data matrix (regular grid) should<br>   have x varying in the lines and y varying in the columns. This is **oposite**<br>   what we had. This fix also changes the `shape` argument to be `(nx, ny)`<br>   instead of `(ny, nx)`. **Users should be aware of this and double check<br>   their code.**<br> * More stable derivatives in `fatiando.gravamag.transform`. The horizontal<br>   derivatives default to central finite-differences for greater stability. The<br>   FFT based derivatives use a grid padding to avoid edge effects.<br>   Thanks to [Matteo Niccoli](https://mycarta.wordpress.com/) for suggesting<br>   this fix.<br> * **Renamed** `fatiando.gravmag.fourier.ansig` to<br>   `fatiando.gravmag.transform.tga`<br> * **Remove** `fatiando.gravmag.fourier` by moving relevant functions into<br>   `fatiando.gravmag.transform`.<br> * **New** `seismic_wiggle` and `seismic_image` plotting functions for<br>   seismic data in `fatiando.vis.mpl`<br> * **Remove** OpenMP parallelism from the `fatiando.gravmag` Cython coded<br>   forward modeling. Caused the majority of our install problems and didn't<br>   offer a great speed up anyway (< 2x). Can be replaced by `multiprocessing`<br>   parallelism without the install problems<br> * Tesseroid forward modeling functions in `fatiando.gravmag.tesseroid` take<br>   an optional `pool` argument. Use it to pass an open<br>   `multiprocessing.Pool` for the function to use. Useful to avoid processes<br>   spawning overhead when calling the forward modeling many times<br> * **BUG FIX**: Avoid weird numba error when tesseroid has zero volume. Let to<br>   better sanitizing the input model. Tesseroids with dimensions < 1cm are<br>   ignored because they have almost zero gravitational effect<br> * Ported the tesseroid forward modeling code from Cython to numba. This is<br>   following the discussion on issue<br>   [#169](https://github.com/fatiando/fatiando/issues/169) to make installing<br>   less of burden by removing the compilation step. The numba code runs just as<br>   fast. New functions support multiprocessing parallelism.<br>   Thanks to new contributor Graham Markall for help with numba.<br> * **BUG FIX**: Replace `matplotlib.mlab.griddata` with<br>   `scipy.interpolate.griddata` in `fatiando.gridder.interp` to avoid<br>   incompatibilities when using `matplotlib > 1.3`<br>   (at least in MacOS). Nearest neighbor interpolation method flagged as `nn`<br>   was removed. Now it becomes only `nearest`. Also replace `matplotlib`<br>   with `scipy` in `fatiando.mesher.PrismMesh.carvetopo`<br> * **New class** `fatiando.gravmag.basin2d.PolygonalBasinGravity` for 2D<br>   gravity inversion for the relief of a basin.<br> * **Removed** package `fatiando.gui`. This was an experimental and temporary<br>   package to explore interactivity.<br> * Moved `Moulder` to the **new module** `fatiando.gravmag.interactive`.<br>   Completely rewrote the application. It now allows editing, moving, and<br>   deleting polygons, persisting the application to a pickle file and reloading,<br>   etc.</p> <p> </p

    Fatiando a Terra v0.5: Modeling and inversion in geophysics

    No full text
    Fatiando a Terra (Portuguese for Slicing the Earth) is an open-source Python toolkit for modeling and inversion in geophysics. It provides an easy and flexible way to perform and implement geophysical data analysis. Official website and documentation: http://www.fatiando.org Main changes to version 0.5: http://www.fatiando.org/changelog.html#version-0-

    firedrakeproject/ffc: the FEniCS Form Compiler

    No full text
    Modified FFC with nonaffine support for some experiments of the TSFC paper This release is specifically created to document the version of Firedrake used in a particular set of experiments. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to http://www.firedrakeproject.org/publications.htm

    OP2/PyOP2: Framework for performance-portable parallel computations on unstructured meshes

    No full text
    &lt;p&gt;This release is specifically created to document the version of PyOP2 used in a particular set of experiments using Firedrake. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to https://www.firedrakeproject.org/citing.html&lt;/p&gt

    Images of Reality - Interacton space analysis and large-scale design in open office landscape environments

    No full text
    This chapter explores communication patterns and media choices among employees, as well as their connection with the ongoing changes in workplace design. It presents a multiple case study of communication and co-ordination in open landscape office environments. The study was carried out in three different organisations; an advertising firm, a manufacturing business, and an IT development office. In the organisations the work practice was to some degree dependent on possibilities to communicate from various locations among co-workers, both within and outside the office. This paper suggests that utilising more personalised and effective communication media could provide necessary means for more efficient support of co-operative work. The issues of interaction space analysis and large-scale design, i.e. integration with the existing installed base of services and infrastructures, both technical and social, were here put into focus as influencing factors. To Trevino et al’s (1990) three factors I have added a forth factor, namely company culture that I believe has a great influence on employee’s media choices. The conclusions were that the organisational culture had deep impact on how the technology features were accepted and incorporated in the work practice for communication purposes

    Firedrake: An Automated Finite Element System

    No full text
    Version of Firedrake in the Firedrake paper. This release is specifically created to document the version of Firedrake used in a particular set of experiments. Please do not cite this as a general source for Firedrake or any of its dependencies. Instead, refer to http://www.firedrakeproject.org/publications.html</span
    corecore