Browsed by
Category: Compilers

Topics on use of the most common compilers in HPC

Building LLVM 23.1.1 from llvm.org on Discoverer CPU cluster

Building LLVM 23.1.1 from llvm.org on Discoverer CPU cluster

Overview This document describes the build procedure for the LLVM 23.1.1 source distribution on an AMD EPYC 7H12 (Zen 2, x86_64) based CPU-only compute cluster (Discoverer CPU cluster). The build is performed from source using a shell-based recipe that loads Environment Modules, configures LLVM with CMake and Ninja, and installs the resulting tool chain into a versioned prefix. The recipe and build log are published at: https://gitlab.discoverer.bg/vkolev/recipes/-/blob/main/llvm/23/llvmorg-23.1.1.recipe https://gitlab.discoverer.bg/vkolev/recipes/-/blob/main/llvm/23/llvmorg-23.1.1.log Build environment and approach The build runs on AMD EPYC 7H12 compute…

Read More Read More

Global Arrays 5.9.2: analysis of three test suite failures on Discoverer CPU cluster

Global Arrays 5.9.2: analysis of three test suite failures on Discoverer CPU cluster

Global Arrays underpins a number of computational chemistry codes, NWChem among them, which makes the correctness of its distributed operations a practical concern rather than an academic one. We recently built GA 5.9.2 on an AMD EPYC compute node with GCC, Open MPI 5.0.10 and OpenBLAS, added the test suite to our build recipe for the first time, and watched three of the seventy-nine tests fail. This post walks through how we established that the failures were upstream defects rather…

Read More Read More

In most cases, avoid def main() in Python — It’s not Java or C++

In most cases, avoid def main() in Python — It’s not Java or C++

A pattern that keeps appearing in Python scripts, tutorials, and AI-generated code: This is cargo-culted from C and Java, where a main() function is a syntactic requirement. Python has no such rule. The above is functionally identical to: When def main() actually makes sense There is one legitimate use case: when you need a named entry point for Python packaging. If your pyproject.toml defines a console script, it must reference a callable: Here, def main() earns its place. But this is a specific packaging concern — not a general…

Read More Read More

Python 3.13.0 built with LLVM 19 and full LTO

Python 3.13.0 built with LLVM 19 and full LTO

Finally! We managed to compile the code of Python 3.13.0 using LLVM 19, with full link-time optimization (LTO): The installation passes all 44 standard optimization tests: Using random seed: 4347316840:00:00 load avg: 1.72 Run 44 tests sequentially in a single process0:00:00 load avg: 1.72 [ 1/44] test_array0:00:00 load avg: 1.72 [ 2/44] test_base640:00:00 load avg: 1.72 [ 3/44] test_binascii0:00:00 load avg: 1.72 [ 4/44] test_binop0:00:00 load avg: 1.72 [ 5/44] test_bisect0:00:00 load avg: 1.72 [ 6/44] test_bytes0:00:03 load avg: 1.67…

Read More Read More

Towards full adoption of LLVM: building a productive SQLite3 library installation required by TensorFlow

Towards full adoption of LLVM: building a productive SQLite3 library installation required by TensorFlow

Nowadays, the management of TensorFlow models using the SQLite3 library is becoming more and more demanded. It has become a standard practice for applicants for HPC resources to insist on accessing an optimized installation of the SQLite3 library, and avoid the one provided by the Linux distribution or delivered by Conda. Until one becomes involved in dealing with the constant changing of large sets of models, that might seem like an exaggeration or overstatement. It should be noted that the…

Read More Read More

Discoverer is advancing its commitment towards the full adoption of the LLVM compiler infrastructure

Discoverer is advancing its commitment towards the full adoption of the LLVM compiler infrastructure

The new version of the LLVM Compiler Infrastructure, 19, is available in the software repository. That version includes numerous improvements and fixes. We uphold our commitment to maintain openness and transparency in our way of doing system and software engineering, which entails consistently publishing our build recipes. In the case of LLVM 19, those recipes are publicly available here: https://gitlab.discoverer.bg/vkolev/recipes/-/tree/main/llvm/19 Adopting the LLVM 19 puts a new milestone in our computation model. We can start confidently moving the entire executables…

Read More Read More

Major update to the hosted LLVM compiler collections

Major update to the hosted LLVM compiler collections

The Discoverer’s software repository received a major update to the hosted LLVM compiler collections. Versions 16.0.0-16.0.6 and 17.0.0-17.0.6 are available and the LLVMgold plugin is included in all bundles. We thoroughly examined the hosted LLVM compiler collections by employing the clang and clang++ compilers to compile C and C++ code projects like GROMACS and NAMD. Despite the absence of significant issues with the compilation of C and C++ code, it is expected that the compilation of Fortran code using flang…

Read More Read More

The Discoverer bids farewell to the era-old Intel compilers

The Discoverer bids farewell to the era-old Intel compilers

The latest version of Intel oneAPI – 2024.0.0 – is now available in Discoverers open-source software repository. One big change in the new version is that the classic Intel compilers are no longer available. As of version 2024.0, they have been excluded from the bundle. The users have to load one of the available pre-2024.0 versions if they need access to any of the classic compilers. The old versions of Intel oneAPI (≤2023.2) that include the classic compilers will remain…

Read More Read More

GCC compiler collection on Discoverer receives yet another update

GCC compiler collection on Discoverer receives yet another update

It seems that July has been a busy month for many GCC code developers. The project released a minor new version of GCC, 13.2, which addresses problems discovered in the previously released 13.1 version. More information on the included fixes and changes can be found here: https://gcc.gnu.org/gcc-13/changes.html The code of 13.2 was compiled and installed in the public software repository to provide our users with the most up-to-date version of GCC 13. The build recipe the compilation process is based…

Read More Read More

WordPress Appliance - Powered by TurnKey Linux