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