ttk icon indicating copy to clipboard operation
ttk copied to clipboard

GitHub Actions: Fasten Windows builds with sccache

Open pierre-guillou opened this issue 2 years ago • 0 comments

This PR uses sccache in the Windows jobs of the test_build  and store_ccache workflows to cache generated binary files between workflow runs. This is useful to reduce the time spent waiting for the CI to complete.

To do so, CMake must use Ninja as its generator. To keep OpenMP multithreading working, the clang-cl compiler is manually set and compiler flags are edited in the generated build.ninja file. Binary examples also need to be built with the same compiler and flags in order to prevent mixing the LLVM and the MSVC OpenMP libraries.

This compiler change did cause an unexpected segfault in the LDistanceMatrix filter (through the persistentGenerators_householdAnalysis.py script) that involves two nested parallel loops: the inner in LDistance performs a reduction over two datasets and the outer in LDistanceMatrix is parallel over the (upper) distance matrix. Although the inner loop parallelism should be disabled (LDistance::threadNumber_ is set to 1), a segfault occurs because, among others, the outer loop uses the dynamic schedule. This PR fixes the segfault by switching back to the default schedule for the outer loop.

The store_ccache workflow now automatically deletes the ccache Release of the current repository before creating it. Since the default graphviz package provided by conda is already at 2.5.0, there is no need to force its version anymore.

Enjoy, Pierre

pierre-guillou avatar Oct 05 '22 15:10 pierre-guillou