Middelhoek.com

ParXCL

ParXCL command line interface

The algorithms in ParX were developed as part of my Ph.D. thesis in April 1992, as was their first implementation.

ParX started life as an HP-UX command line tool. A Yacc and Lex parser provided the user interface. The C code base was built on top of a home-spun OO-framework TM that was developed by my friend and then colleague Kees van Reeuwijk.

Because of the limited computer resources at that time, the code was highly optimized for memory re-use and very “smart” pointer arithmetic; trying to fit every inner loop in the minuscule processor caches of the day.

The Linear Algebra heavy lifting was delegated to the commercial NAG™ library, which in later incarnations was transplanted by LAPACK and BLAS. Both libraries are written in FORTRAN, so the vector and matrix data structures in ParX follow the FORTRAN memory-layout conventions.

The Model Compiler was still in the early planning stages, so initially all model equations and their first-order derivatives had to be hand- and hard-coded in C. The Model Compiler was finally connected to the parser via POSIX pipes.

Later, ParX gained a Windows UI (Win95) that wrapped around the original command-line tool. Rather surprisingly, this setup is still functional and in practical use.

ParXCL is offered (as is) for embedded applications on the macOS, Linux and Windows platforms. For future development, I could strip down ParXCL to the bare necessities and link directly to any UI. Or even build a ParXCL-framework for general use.

ParXCL is now open source software under the GPLv3 license. The source code can be found on GitHub.