-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create CI/CD for SLICOT #2
Comments
|
The Slycot build process and CI is obviously very Python centric. We use NumPy's F2PY to create a Python specific library, called an 'extension', from the Fortran sources, and then test our wrapper functions written in Python against it using Pytest. Unfortunately, none of this applies directly to this repository. A first step towards a SLICOT CI/CD is to use one of the cloud facilities mentioned by @ilayn to compile the Fortran sources into a (Fortran) library. You already provide a makefile, but there is no configuration helper how to find the compiler and the BLAS/LAPACK libraries and headers. The paths to these could be hardcoded into the CI recipes for the various machines. A better option would be to use autoconf/automake or CMake to find all the build requirements and construct the build commands. Slycot's machinery uses CMake (calling f2py and wrapped by yet another layer named Scikit-buid for the Python setuptools system). I see the LAPACK repository on Github does also use CMake. Providing CMake recipes will also benefit potential users of SLICOT, who want to build it on their own. Once the library is built, CMake's ctest (also used by LAPACK) could compile test programs which use the library and check their outputs. Many SLICOT routines already come with example code and example result data. These could be reused. |
Originally posted by @andreasvarga in #1 (comment)
It would be great if we could provide a testing facility for SLICOT for
the purpose of CI. Such facility exists also for LAPACK, but we lack
experience in this area.
I see one of the main usages for SLICOT as a computational kernel for
control related computations in conjunction with environments like Matlab,
Python, Julia, Octave. Bulding interfaces to these tools (wrappers,
mex-files, etc.) involves (probably) the generation of appropriate shared
libraries for different architectures and compilers. It would be usefull
for many potential users to have this process largely automated.
The text was updated successfully, but these errors were encountered: