Today we are proudly shipping two new releases of our libraries LibGeoDecomp and LibFlatarray. These releases are our first to deliver peta-scale performance on the world's fastest supercomputers. Together they represent the culmination of ten months of work and more than 800 commits of an alliance of researchers from the Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU) and Louisiana State University (LSU).

LibGeoDecomp is a leading solution for highly scalable, portable, and efficient computer simulations. It supports various simulation models, including stencil codes, particle in cell (PIC), molecular dynamics, and n-body codes. LibFlatArray is a C++ Struct of Arrays (SoA) container library with an object-oriented interface and support for auto-vectorization. Both libraries available for download here and are released under a liberal free, open source software license (the Boost licence).

  1. Performance
    • achieves peta-scale performance (read: petaflops) on ORNL's Titan and JSC's JUQUEEN supercomputers
    • improved support for SoA (Struct of Array) storage in most backends
    • auto-vectorization (via bundled LibFlatArray 0.2.0)
    • added CUDAStepper (and utility classes CUDAGrid, CUDAArray, CUDARegion...); CUDAStepper is currently optimized for n-body codes
  2. New Example Codes
    • unstructured grid Game of Life (Fortran implementation, courtesy of Zach Byerly)
    • red-black Gauss Seidel solver (courtesy of Christopher Bross)
    • new Voronoi demo illustrates out finite difference/finite element capabilities
    • global collectives (stencil code which leverages the Writer/Steerer infrastructure to gather a global view of the grid and set parameters accordingly)
    • experimental Adaptive Mesh Refinement (AMR) example
  3. IO reloaded
    • the new IO interface (Selectors) greatly simplifies adding IO modules to simulations: it replaces several previous interfaces (in SiloWriter, SerialBOVWriter, BOVWriter, VisItWriter, QtWidgetWriter, PPMWriter) and reduces the amount of wire-up code to almost zero
    • Selectors can use Filters for custom, on the fly data conversion
    • API (APITraits) is now more expressive, user can opt to specify more properties of the simulation data (e.g. physical grid dimensions) to increase the fidelity of output
    • new SiloWriter for structured/unstructured/point meshes
  4. Improved Support for Complex, Irregular Codes
    • various updates and bugfixes for the HPX backend
    • Boost.Serialization can no be used with the MPI backends, too (previously only the HPX backend supported them)
    • new MultiContainerCell eases implementation of multi-physics codes; users can compose different compose multiple container types, each model will be able to access the other containers
    • BoxCell makes writing n-body codes much simpler by providing wrappers for particle iteration and transport
    • new Voronoi mesher aids unstructured mesh codes with uniform cell distributions
  5. Geometry Subsystem
    • new domain decomposition techniques: checkerboarding and PT-Scotch (courtesy of Dominik Thoennes)
    • new convenience functions for coordinate classes (Coord/FloatCoord)
  6. Build System
    • easy integration into 3rd party software: ships with CMake and pkg-config modules
    • CMake scripts now use idiomatic -DWITH_FOO=true pattern to select features
    • all configuration-specific files moved to build dir, enables multi-configuration builds
  7. General Improvements
    • more documentation
    • code quality: increased unit test coverage, added integration tests, now testing on Mac OS X, too, fixed compiler warnings, improved const correctness and type safety, and much more
  • updated API: more natural usage while delivering same performance as old API
    • accessor (soa_accessor) is now self-contained, added soa_accessor_light which uses an external index variable, but is faster than soa_accessor when using NVCC to generate device code
  • preliminary support for auto-vectorization for SSE, AVX, and QPX (on BG/Q) via short_vector overloads
  • added aligned allocator for portable allocation of aligned memory
  • instantiation of grid sizes is now configurable
    • this change greatly improves compilation speed for most codes
  • added api_traits to allow the user to optionally configure how LFA instantiates its types
Version Date Size MD5 File
0.4.0 2014.10.27 766090 19810f47748f9b7b52a73179a3a98a30 libgeodecomp-0.4.0.tar.bz2
1022767 b9bb28379ee61e9be89d56e17e71eb17 libgeodecomp-0.4.0.tar.gz
0.2.0 2014.10.27 34193 2bcf8b8c33a3d729155be48e47be3d04 libflatarray-0.2.0.tar.bz2
41804 cd491e9f8f7e60ad4a9fd0947e7b506d libflatarray-0.2.0.tar.gz

News archive »

last modified: Wed Oct 26 16:51:19 2016 +0200