The Intel compilers have an undocumented -march=native or /arch:nativeflag
Currently, this undocumented “native” flag parameter enables only Pentium 4 optimizations.
Using the CPU generation noted in the “arch” documentation results in many CPU-specific flags being added.
CMake detect CPU
detect the host CPU arch
to use with Intel compilers.
For example using -march=icelake-client adds flags as revealed by -watch adds flags including:
Fortran coarrays are an abstract, higher-level construct than using MPI directly.
Coarrays support multiple parallel processing libraries including MPI.
The simpler Coarray syntax can make debugging easier in general.
Gfortran, NAG, Intel and Cray are among the compilers
Fortran 2018 coarray features so useful in high-performance computing.
Coarray Fortran as enabled in Fortran 2008 / Fortran 2018 standards is available from multiple compilers.
Compilers with built-in coarray support (not needing external libraries) include:
library is popular for enabling coarray features in Gfortran
Install Fortran OpenCoarrays library for Gfortran by:
Ubuntu / Debian / Raspberry Pi (packages names may vary by Linux distro version)
Intel oneAPI is a cross-platform toolset that covers several languages including C, C++, Fortran and Python.
Currently, Intel is providing oneAPI including the Fortran compiler at no cost, and no login is required to download oneAPI.
The no-cost oneAPI access is distinct from Intel Parallel Studio that requires a paid license, except for instructional use or to develop open source projects.
Install the remaining packages below with oneAPI HPC toolkit
The oneAPI package options we installed included:
Intel MPI library
Intel C++ compiler
Intel Fortran compiler
Intel Math Kernel Library
As with Intel Parallel Studio, there are slightly distinct usage patterns to access the Intel oneAPI compilers on Windows vs. Linux.
NOTE: it is NOT recommended by Intel to use ifx.exe or icx.exe directly.
You should be using iforticliccicpc with Intel oneAPI as with Intel Parallel Studio.
On Windows a Start menu shortcut for a oneAPI command prompt is installed.
CMake et al should just find the Intel compiler when in the oneAPI command prompt.
Otherwise run setvars.bat as per oneAPI documentation.
The GCC -march=native flag can cause unexpected and difficult to diagnose error messages on certain CPU arches, including high end Intel Xeon CPUs.
The compiler error messages generally don’t give any clues as to what the real problem may be.
While there can be a small to significant performance benefit to using the
enabling special features in a CPU arch, we feel it’s important to provide software that “just works” by default, even if not completely optimized for a given CPU.
The end users that care most about performance probably have already learned the appropriate flags for their CPU, and are willing to fiddle with the CPU arch flags to get the program running at optimum.
We generally have no problems using the GCC -mtune=native flag.
GCC CPU flags
GCC will show a neat list of which flags are enabled and disabled like:
Linux X11 GUI programs often work fine on Windows Subsystem for Linux.
This procedure has been used for years on WSL1.
WSL2 may need
due to the more advanced network configuration of WSL2.
Install a Windows X11 server to enable graphical Linux applications on Windows as follows:
Whether hiring is waxing or waning in your field it’s important to retain the value of software work over time by tracking Git commit and other contributions.
Whether you’ve built up your development career from boot camp or college, from devops or in pursuit of science data analysis, one never knows how their career might shift.
Software is a common core skill necessary for many fields, and it’s important to show the distinction of your software work over time.
Help do so by ensuring your Git commits are
counted over time.
The Git coauthor convention is placing plaintext in the commit message body. To track commits on GitHub or other services, the email address cited must match a registered email with that service.
The email can be a working public email or the “fake” noreply email provided by the Git service.
Multiple coauthors each use the same syntax on the same Git commit.
added foo function to bar.py
Co-authored-by: David <email@example.com>
On GitHub, a coauthor commit looks like:
Currently, the coauthored commit doesn’t count on the user’s
GitHub contribution calendar.
I suppose the coauthor commits don’t count toward the contribution calendar to avoid stuffing / inflating contribution count of users.
The coauthor commits do show up in GitHub search under “Commits”.
As with regular Git commits, there is no authentication to avoid someone masquerading as someone else with Git coauthor commits.
Git coauthor commits cannot be GPG signed for each coauthor, only the primary Git committer can GPG sign as usual.
Matlab’s rendering engine can break under some remote desktop use cases, including X11 forwarding.
There can also be issues when using Matlab plots locally if a problem arises with a GPU graphics driver.
provides extensive details about the rendering backend.
It can be invoked from the Matlab GUI
or from the system Terminal
matlab -batch "rendererinfo(gca)"
Although slow, software-based and feature-limited, the painters algorithm can be reliable if something outside Matlab is hindering graphics (local or remote).