The no-cost
AMD AOCC compiler
is tuned for AMD CPUs, akin to how Intel oneAPI is tuned for Intel CPUs.
For a RHEL-based Linux, install the downloaded “.rpm” file like:
The
AOCL libraries
provide accelerated math functions for AMD CPUs for several popular libraries for use in C, C++, or Fortran.
AOCL is compatible with AOCC and other compilers as listed in the AOCL downloads.
5G wireless network providers across the United States and elsewhere are turning on 5G standalone mode (SA), that can enable significantly more data bandwidth and lower connection latency.
Some phones, even recent phones, are not properly capable of supporting 5G SA even though they work fine in 5G NSA (non-standalone mode) that operates like 4G LTE.
Recent Android releases and carrier updates have disabled 5G SA for certain phones that previously had 5G SA enabled due to data connectivity problems when the carrier enabled 5G SA.
A symptom of lost data connectivity, possibly due to 5G SA incompatibility, is the phone signal showing 5G signal bars with an exclamation point.
What may possibly but not always help is to turn off 5G in the phone network settings by setting “Preferred network type” to “LTE” or similar instead of “5G”.
This may force the phone to use 4G LTE instead of 5G, which may work better for data connectivity.
However this does not always help.
If a newer phone on the same network carrier works fine with 5G SA, then the phone with data connectivity problems may need a software update or carrier update to fix the problem, or simply a newer phone may be needed.
The Network Cell Info app can show the network type and signal strength, and may help diagnose the problem.
CMake
--graphviz
and
graphviz configure preset
can generate GraphViz
dependency graphs
for CMake-supported project code languages including C, C++, and Fortran.
Fortran executables and modules are shown in the directed dependency graph.
Fortran submodule are not shown in the graph.
The
“dot” GraphViz program
converts the .dot files to PNG, SVG, etc.
dot program is available by installing the “graphviz” program via the package manager.
Generating the dependency graph requires CMake configure and generate.
Thus, the compiler and generator needed by the CMake project must be working.
The project does not need to be compiled before generating the dependency graph.
However, the user should select the same CMake configure options as they would for compiling the project.
Example:
h5fortran
HDF5 object-oriented Fortran dependency graph is below.
SVG vector graphics can be zoomed arbitrarily large in a web browser.
The “gfx/” directory is to avoid making files in the source directory.
The full path to executables on the system Path (and cwd on Windows) are discovered by Python
shutil.which.
On Windows, environment variable PATHEXT is used to search filename suffixes if not specified at the input to shutil.which().
Shell aliases
are not found by shutil.which() since the shell is not invoked.
Instead append the directory of the desired executable to environment variable PATH, or specify it in shutil.which(..., path="/path/to/exe").
import shutil
# None if executable not foundexe = shutil.which('ls')
Since shutil.which() returns None for non-found executable it is convenient for
pytest.mark.skipif
For programs not on PATH where the executable path is known:
CMake
find_program
does not generally consider NAMES parameter to have file suffixes unless manually specified.
For Windows, .com and .exe file suffixes are considered, with search order:
.com
.exe
no suffix
If on Windows and an executable “hello.exe” or “hello.com” exists, then CMake will find it.
CMake would NOT find “hello.exe” on non-Windows platforms, where no file suffix is expected.
The full path to executables on the system Path (and cwd on Windows) are found by find_program().
Shell aliases
are not found since the shell is not invoked.
Instead specify find_program(... HINTS /path/to/exe).
Thus, parsing CMakeCache.txt will give the previously used CMake generator.
This is relevant in automated processes such as CI/CD systems that may build for numerous configurations and generators.
This parsing can be trivially done in scripts in many coding languages.
Here we give an example in CMake script “detect_gen.cmake”:
CMake directory property
CMAKE_CONFIGURE_DEPENDS
can be used to specify additional dependencies for the configuration step.
For example, if a JSON file is used to specify source files, CMake wouldn’t detect if a source file was added, removed, or modified without CMAKE_CONFIGURE_DEPENDS.
Sometimes, the situation is too complicated to specify all dependencies manually.
If a change is made that requires CMake to rebuild the cache, two equivalent ways to do this without modifying previously set options are:
These techniques work with any versioned program or library.
Here we use Matlab as an example.
CMake
find_package with a version range
would be used to simply select from a known-working version range.
Many Matlab codes require a modern version of Matlab.
It’s possible to select from an arbitrary min…max range of Matlab versions with CMake
FindMatlab
as follows.
This technique works with other versioned programs and libraries as well.
Git typically works for HTTPS URLs using the default configuration.
If certificates are not working, try configuring Git with the system
SSL certificate location.