When turning on an old Windows PC that hasn’t been used for a while, the Windows OS may be several versions out of date.
Windows may be so old that using Windows Update doesn’t automatically give an option to upgrade Windows, or may offer a non-latest Windows release.
Instead of discarding the PC, consider manually upgrading Windows to the latest release via the
Windows Upgrade Assistant.
Typically the Assistant will have a PC Health Check that it will ask to have run first.
The Health Check will tell among other things the current maximum capacity of the laptop battery.
The PC can still be used during the upgrade, which doesn’t take too long.
It’s important to use a currently supported version of Windows to be better protected from cybersecurity concerns and to avoid unsupported or non-working software configurations.
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.
On Windows the most commonly used MPI libraries are MS-MPI and
Intel MPI.
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
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.
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 have commercial and no-cost toolboxes that can be installed into Matlab.
When testing project code, it is often useful to
disable an addon
to ensure that the project code works as expected in diverse Matlab toolbox-enabled environments.
To disable an addon, you can use the matlab.addons.disable function. Here is an example of how to disable a specific addon by its ID.
For example for “Parallel Computing Toolbox”:
Windows users generally should not
disable IPv6.
Upon network upgrades or working in a new location with IPv6, network operations that previously worked may fail.
An example of this is “conda install” or “conda update” commands that hang or fail with a timeout error.
While curl has an option “-4” or “–ipv4” to force IPv4 connections only, the “conda” command does not have a “force IPv4” option currently.
Windows can be set to prioritize IPv4 over IPv6, which can help with conda operations and other network operations.
Reprioritizing IPv4 over IPv6 is vastly preferable to disabling IPv6, as it allows for compatibility with IPv6 networks.
Check existing IPv6 settings with the command:
netsh interface ipv6 show prefixpolicies
ℹ️
Note
If there are only one or zero prefix policy entries, then IPv6 is likely not configured correctly.
The rest of this procedure would not help as Windows will go to factory defaults and ignore the IPv4 preference.
Fix the IPv6 configuration first, then proceed with the steps below.
Set the prefix policy for IPv4 to have a higher priority than IPv6 by running the following command in an elevated PowerShell or Command Prompt:
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96464
Check that the IPv6 prefix policy has been set correctly by running:
netsh interface ipv6 show prefixpolicies
Then execute the “conda install” or “conda update” command again.
To restore the default Windows settings of IPv6 having priority over IPv4:
netsh interface ipv6 set prefixpolicy ::ffff:0:0/96354