Software

To allow others to build on top of my research results, I make my source codes available to the public under the permissive MIT license. To keep the complexity of these codes under control, I follow a library-centric design, where orthogonal functionality is placed in separate libraries. This allows for much better reuse and enforces a proper definition of library boundaries. In the meanwhile also other colleagues joined the development, most notably Markus Bina, Florian Rudolf and Josef Weinbub, who also deserve a good share of credit for their valuable contributions.

I'm main author of the following libraries, all of them being launched during my work at TU Wien:

  • ViennaCL: A C++ linear algebra library for GPUs and multi-core CPUs using CUDA, OpenCL, and OpenMP
  • ViennaData: A C++ library for handling application-specific data associated with objects of reusable, light-weight classes
  • ViennaFEM: A library-centric finite element solver written in C++
  • ViennaGrid: A C++ library for the handling and traversal of unstructured grids in arbitrary spatial dimensions
  • ViennaMath: A symbolic math library written in C++
  • ViennaSHE: A multi-dimensional deterministic Boltzmann equation solver

In addition, I maintain the benchmark management package ViennaProfiler and assist my colleagues with the following packages:

  • PETSc: Portable, Extensible Toolkit for Scientific Computation
  • ViennaMesh: Mesh generator on top of ViennaGrid
  • ViennaMOS: Semiconductor device simulation framework
  • ViennaX: A C++ framework for generating and executing task graphs