Intel oneAPI / oneMKL
includes
Scalapack.
MKL Scalapack
library & include files
are found under the
MKLROOT environment variable.
Scalapack MKL is used in CMake via MKLConfig.cmake (found under $ENV{MKLROOT}/lib/cmake/MKLConfig.cmake) like:
set(ENABLE_BLACStrue)set(ENABLE_SCALAPACKtrue)set(MKL_INTERFACE"lp64")# "lp64" is the 32-bit interface, "ilp64" is the 64-bit interface
set(MKL_SYCL_MPIfalse)set(MKL_SYCL_LINKfalse)# for Intel oneAPI 2025.2, we don't need SYCL
find_package(MKLCONFIGREQUIRED)add_executable(mytestmain.f90)target_link_libraries(mytestPRIVATEMKL::MKL_SCALAPACK)
The
MKL_SYCL* variables
control whether SYCL is enabled for Intel oneAPI 2025.2 and later, which usually we don’t want.
The exact link flags and compile flags (that are automatically handled by MKLConfig.cmake) for a particular system are obtained from Intel
Link Line Advisor.
While we generally recommend using WSL for MPI on Windows, MS-MPI is available and works with MSYS2 / MinGW GCC Gfortran on Windows.
MSYS2 is a popular choice to use GCC, Clang and many other developer tools from the Windows Command Prompt, PowerShell or the MSYS Terminal itself.
Continuous Integration for Windows MPI applications on GitHub Actions is accomplished as in
fortran-mpi-examples
Windows CI workflows.
Set inter-step environment variables using GitHub Actions
environment files.
GNU Octave and other interactive terminal program use GNU
Readline
for command line editing.
If the Readline library is incompatible with GNU Octave, it may become unusable by not being able to type in GUI or non-GUI modes.
A workaround for non-GUI mode only is to disable interactive console input like:
octave --no-line-editing
For example Readline 8.3 has a
known bug
with a patch already released.
SSH-agent
remembers SSH Public Key authentication, which can be time-limited by the user.
This avoids the user having to type the password for each SSH connection, especially relevant to using Git over SSH.
Windows has SSH built-in from Microsoft including SSH-agent.
WSL also can use SSH-agent within each of the WSL images.
SSH-agent works well with
Git over SSH.
To use SSH-agent, add SSH keys like:
ssh-add ~/.ssh/mykey
This will persist the key in the SSH-agent until the SSH-agent is stopped, the user logs out,or the key is removed.
Matlab CI is often a better choice than Octave below.
Cross-platform developers run into numerous compatibility issues.
Rather than wait for frustrated users to report such a bug, use continuous integration.
Here are CI templates using GNU Octave tests of .m code.
Octave oruntests()
is incompatible with the advanced functionality of
Matlab runtests(),
WinGet can be used on Windows GitHub Actions runners where a Windows program needs to be installed.
In this example, environment variable FFMPEG_ROOT tells Python where to find the ffmpeg.exe program.
One could more generally append to the GITHUB_PATH environment variable.
importfunctoolsimportshutilimportos@functools.cachedefget_exe(name: str) -> str:
for p in (os.environ.get("FFMPEG_ROOT"), None):
if exe := shutil.which(name, path=p):
return exe
raiseFileNotFoundError(name)
Matlab Addons are packages / toolboxes that can be installed into Matlab.
Addons may come from the Mathworks or third-party developers.
One can
disable non-Mathworks addons
to ensure that the project code works as expected in diverse environments.