Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
129e5d3
Tweaks after testing modules
ajaypanyala Dec 18, 2020
3b33783
fix
ajaypanyala Dec 18, 2020
e206ac8
check BLIS_PREFIX
ajaypanyala Dec 18, 2020
eff61c6
fix prefix
ajaypanyala Dec 20, 2020
dbdf45f
missed Ref.BLAS prefix
ajaypanyala Dec 20, 2020
dcaf472
throw error when ilp64 interface is requested for ScaLAPACK discovery
ajaypanyala Dec 22, 2020
a5cd7fc
Add Fortran compile flags for Flang
ajaypanyala Dec 22, 2020
45ef468
mkl_sycl discovery cleanup
ajaypanyala Dec 23, 2020
0b40249
fix
ajaypanyala Dec 23, 2020
a886d31
Fix for Threads discovery on MACOS
ajaypanyala Dec 29, 2020
89c82b7
Hardcode macro installation paths
wavefunction91 Dec 29, 2020
6c871d6
revert
ajaypanyala Dec 29, 2020
fcfbc51
remove ROOT vars
ajaypanyala Jan 4, 2021
23bc362
find std. fortran libs
ajaypanyala Jan 6, 2021
19ddd21
sycl discovery as a blas component
ajaypanyala Jan 6, 2021
3c73271
fix
ajaypanyala Jan 7, 2021
736474b
Find linalg dependencies during LAPACK, ScaLAPACK discovery
ajaypanyala Jan 8, 2021
4717079
Merge branch 'main' of https://github.com/ajaypanyala/linalg-cmake-mo…
wavefunction91 Jan 13, 2021
74ccb99
Propagate sycl component in FindLAPACK
wavefunction91 Jan 13, 2021
98d79c5
Starting CI
wavefunction91 Feb 5, 2021
c119e15
Typo in CI script
wavefunction91 Feb 5, 2021
9c5750f
Sudo...
wavefunction91 Feb 5, 2021
7fd4c05
Add OMP to build
wavefunction91 Feb 5, 2021
875fb20
[CI] Explicitly disable NETLIB + Threads
wavefunction91 Feb 5, 2021
2388b67
[CI] Added FindBLAS - Default Config to CI
wavefunction91 Feb 5, 2021
1aca00a
Typo
wavefunction91 Feb 5, 2021
99c00ad
[CI] Typo
wavefunction91 Feb 5, 2021
a821e53
[CI] Add integer specific check in FindBLAS CI
wavefunction91 Feb 5, 2021
b4b48fe
[CI] Add FindLAPACK
wavefunction91 Feb 5, 2021
2f9abc4
[CI] Typo
wavefunction91 Feb 5, 2021
32613d8
[CI] Minor
wavefunction91 Feb 5, 2021
9c9f9c5
[CI] Added integer interface checks for FindLAPACK CI
wavefunction91 Feb 5, 2021
a977b0f
[CI] Enable IntelMKL in CI matrix
wavefunction91 Feb 5, 2021
0ed2df4
[CI] Fixup for MKL
wavefunction91 Feb 5, 2021
995044c
[CI] Slight refactor of CI matrix
wavefunction91 Feb 5, 2021
4359dd9
[CI] Add MPI + Move NETLIB over to ScaLAPACK
wavefunction91 Feb 5, 2021
1a0460b
[CI] Minor
wavefunction91 Feb 5, 2021
aece069
[CI] MPI fixup
wavefunction91 Feb 5, 2021
7e6eca8
[CI] Sudo...
wavefunction91 Feb 5, 2021
f98e916
[CI] Force failures on incorrect libraries for integer interface chec…
wavefunction91 Feb 5, 2021
5bbbf5a
[CI] env fixup
wavefunction91 Feb 5, 2021
ad47c38
[CI] Print debug information
wavefunction91 Feb 5, 2021
ee46fc4
[CI] Fixup
wavefunction91 Feb 5, 2021
3acec42
[CI] Minor
wavefunction91 Feb 5, 2021
89a1e4b
[CI] Remove preinstalled BLAS/LAPACK
wavefunction91 Feb 5, 2021
d6f6b52
[BLAS] Cache BLAS_LIBRARIES
wavefunction91 Feb 5, 2021
4dda1d7
[CI] Typo
wavefunction91 Feb 5, 2021
2bde9a3
[CI] Print out advanced variables
wavefunction91 Feb 5, 2021
628c503
[BLAS] Cache fixup
wavefunction91 Feb 5, 2021
70004fd
[CI[ Add check that BLAS libraries are correct
wavefunction91 Feb 5, 2021
771267c
[CI] Added missing script
wavefunction91 Feb 5, 2021
f2cbe33
[CI] Debug
wavefunction91 Feb 5, 2021
53a3585
[CI] Change Sh -> Bash
wavefunction91 Feb 5, 2021
09eaed2
[CI] Try to force a failure
wavefunction91 Feb 5, 2021
2490265
[LAPACK/CI] Cache LAPACK_LIBRARIES + add test in CI
wavefunction91 Feb 6, 2021
6c1b7ff
[CI] Add ScaLAPACK checks
wavefunction91 Feb 6, 2021
d644e0f
[CI] Typo
wavefunction91 Feb 6, 2021
b85ab46
[CI] Update BLAS/LAPACK checks with integer types for MKL
wavefunction91 Feb 6, 2021
a41606f
[CI] Disable ILP64 checks on default as LP64 is the default
wavefunction91 Feb 6, 2021
c074a91
[CI] Debug...
wavefunction91 Feb 6, 2021
400fe60
[CI] Debug...
wavefunction91 Feb 6, 2021
8bfc5f2
[CI] typo
wavefunction91 Feb 6, 2021
07fd91b
[CI] Fixup on disabled paths in CI matrix
wavefunction91 Feb 6, 2021
fc6b6e1
[CI] Improve MKL correctness checking + Add check for correct ScaLAPA…
wavefunction91 Feb 6, 2021
61a249a
[CI] Added missing script
wavefunction91 Feb 6, 2021
282b7be
[CI] Added integer specific ScaLAPACK tests + fixup in CI matrix for …
wavefunction91 Feb 6, 2021
35969e5
[CI] Add OpenMPI to CI matrix
wavefunction91 Feb 6, 2021
62648ed
[CI] Minor
wavefunction91 Feb 6, 2021
603882c
[CI] Only test OpenMPI for MKL - trivial for others
wavefunction91 Feb 6, 2021
5bb4f8d
[CI] Try to convince CI matrix to run all MKL paths with OpenMPI
wavefunction91 Feb 6, 2021
529bf2b
[CI] Manual OpenMPI restriction
wavefunction91 Feb 6, 2021
91db4e6
Merge branch 'feature/ci' into ajaypanyala-main
wavefunction91 Feb 7, 2021
bad919c
[MACROS] Minor
wavefunction91 Feb 7, 2021
81fa175
[CI] Typo in CI Matrix
wavefunction91 Feb 7, 2021
5da1aad
Merge branch 'feature/ci' into ajaypanyala-main
wavefunction91 Feb 7, 2021
c59d699
[BLAS/LAPACK] Cache more variables + add INCLUDE_DIRECTORIES/COMPILE_…
wavefunction91 Feb 7, 2021
d1e4030
[ILP64] Added ILP64 check module
wavefunction91 Feb 7, 2021
6602ea0
[ILP64/IntelMKL] Move ILP64 flags from Intel MKL to FindBLAS/LAPACK/S…
wavefunction91 Feb 7, 2021
48a184c
[IntelMKL] Cleanup of commented out ILP64 flags
wavefunction91 Feb 7, 2021
c1b4ea4
[MISC] Propagate XXX_PREFERS_STATIC and add script to check cmake cac…
wavefunction91 Feb 8, 2021
aea57bd
Merge remote-tracking branch 'ajay/main' into ajaypanyala-main
wavefunction91 Feb 8, 2021
57bf00c
[CI] Typo
wavefunction91 Feb 8, 2021
2138234
[CI] Change script to be executable
wavefunction91 Feb 8, 2021
1dbc957
[CI] Add output to cmake check script
wavefunction91 Feb 8, 2021
6c51394
[CI] Added scripts to check LAPACK/ScaLAPACK CMake caches
wavefunction91 Feb 8, 2021
9886356
[CI] Add test for static linkage
wavefunction91 Feb 8, 2021
23aebf5
[CI] Added error output in CI matrix
wavefunction91 Feb 8, 2021
971b2d4
[BLIS/MACROS] Improve library appendage on missing symbols
wavefunction91 Feb 8, 2021
46856a7
[MACROS] Factored out library appendange to separate function
wavefunction91 Feb 8, 2021
01efaa5
[MACROS] Factored library appendange into FindScaLAPACK
wavefunction91 Feb 8, 2021
ff63f06
[CI] Added static tests for FindLAPACK
wavefunction91 Feb 8, 2021
a85f368
[LAPACK/ScaLAPACK] Copy metadeta in LAPACK/ScaLAPACK
wavefunction91 Feb 8, 2021
e392519
[MACROS] Cleanup
wavefunction91 Feb 8, 2021
687b7bb
[MISC] Added FindTBB from https://github.com/justusc/FindTBB, enabled…
wavefunction91 Feb 8, 2021
cef2e40
[CI] Enable TBB MKL paths in CI
wavefunction91 Feb 8, 2021
ad2bd82
[CI] Typo
wavefunction91 Feb 8, 2021
382f21d
[CI] Add TBB to build system in CI
wavefunction91 Feb 8, 2021
ad68440
[CI] Typo
wavefunction91 Feb 8, 2021
41ec9f2
[MACROS] Add TBB as a registered dependency
wavefunction91 Feb 8, 2021
8962f08
[MISC] Cleanup debug print + add inclusion of dependency macro in Lin…
wavefunction91 Feb 8, 2021
90ee9c0
[BLAS] Added FindAccelerate and modified FindBLAS to look for it on D…
wavefunction91 Feb 8, 2021
3999cc9
[MKL] Added missing MKL_ILP64 compiler definition for MKL ILP64
wavefunction91 Feb 8, 2021
b9b2e15
Merge branch 'main' of https://github.com/ajaypanyala/linalg-cmake-mo…
wavefunction91 Feb 8, 2021
fdfec2e
Cache LAPACK_IS_LP64
ajaypanyala Feb 10, 2021
63ccdca
Cache LP64 flags
ajaypanyala Feb 10, 2021
9cd2f8f
add MPI to find_linalg_dependencies
ajaypanyala Feb 10, 2021
10e32e4
[BLAS] Change BLAS LP64 check to analyze output rather than return co…
wavefunction91 Mar 5, 2021
9fd0826
[LAPACK] Change LAPACK LP64 check to analyze output rather than retur…
wavefunction91 Mar 5, 2021
47ebfbb
[BLAS] Add CMakeFindDependencyMacro to FindBLAS for ILP64 check
wavefunction91 Mar 5, 2021
1ae1e0a
Add support of AOCL (AMD-BLIS/FLAME)
wavefunction91 Mar 11, 2021
00b0cdd
[BLIS] Fix FindBLIS for AOCL
wavefunction91 Mar 16, 2021
aad580e
[BLIS] Fix static BLIS discovery
wavefunction91 Mar 16, 2021
206ae02
Additional check for missing Fortran symbols
ajaypanyala Mar 16, 2021
f662905
check compile output for sqrt when detecting missing libs
ajaypanyala Mar 27, 2021
4f7bc30
Add functions to emulate Kitware variables BLA_STATIC and BLA_VENDOR
wavefunction91 May 19, 2021
7702652
Pin CI to Ubuntu-18.04
wavefunction91 May 19, 2021
574f71f
Typo in CI
wavefunction91 May 19, 2021
4d26aca
More typos in CI
wavefunction91 May 19, 2021
510b928
Add BLA_VENDOR CI test
wavefunction91 May 19, 2021
580bf8b
Include missing standard macros in FindScaLAPACK
May 28, 2021
0c2effd
Added IntelMKL TARGETs
Jun 28, 2021
2c542c1
Import Threads as global target (#1)
evaleev Dec 23, 2021
f999753
update findtbb (#2)
evaleev Jan 6, 2022
d7ef03b
fortran libs fix for ArmFlang
ajaypanyala Jan 31, 2022
7933044
lapack linkage check uses `dgesvd` (#3)
evaleev Apr 12, 2022
530b4e0
[CI] Force OpenBLAS GENERIC build in CI to avoid hangups
wavefunction91 Apr 20, 2022
0bc70fb
FORTRAN -> Fortran (#4)
evaleev Apr 20, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
240 changes: 240 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
name: CMake

on: [pull_request]


jobs:
linux-check-all-libs:
runs-on: ubuntu-18.04
strategy:
matrix:
linalg_lib: [blis,openblas,netlib,intel-mkl]
mpi_dist: [mpich,openmpi]
int_interface: [lp64,ilp64]
thread: [sequential,openmp,pthreads,tbb]
exclude:
- linalg_lib: netlib
int_interface: ilp64
- linalg_lib: netlib
thread: pthreads
- linalg_lib: netlib
thread: openmp
- linalg_lib: intel-mkl
thread: pthreads
- linalg_lib: netlib
mpi_dist: openmpi
- linalg_lib: blis
mpi_dist: openmpi
- linalg_lib: openblas
mpi_dist: openmpi
- linalg_lib: blis
thread: tbb
- linalg_lib: openblas
thread: tbb
- linalg_lib: netlib
thread: tbb
env:
MKLROOT: /opt/intel/mkl
CMAKE_PREFIX_PATH: '/home/software/install/${{matrix.linalg_lib}}-${{matrix.int_interface}}-${{matrix.thread}};/home/software/install/netlib-lp64-sequential'

steps:
- uses: actions/checkout@v2

- name: Ubuntu Setup
run: |
sudo apt-get -yq update && sudo apt-get install make wget curl libomp5
sudo make -C .github/workflows/linalg install/main
sudo make -C .github/workflows/linalg install/cmake
sudo apt-get clean
sudo make -C .github/workflows/linalg apt-add-repository/intel-mkl

- name: Setup MPI
run: |
sudo make -C .github/workflows/linalg install/${{matrix.mpi_dist}}
which mpicc

- name: Setup TBB
if: ${{matrix.thread == 'tbb'}}
run: |
sudo apt-get install libtbb-dev


- name: Build Linalg
env:
BUILD_TARGET: ${{matrix.linalg_lib}}/${{matrix.int_interface}}-${{matrix.thread}}
run: |
sudo make -C .github/workflows/linalg download/${{matrix.linalg_lib}}
sudo make -C .github/workflows/linalg install/${BUILD_TARGET}

- name: Add-On NETLIB
# Disable for
# - MKL b/c MKL already has a LAPACK/ScaLAPACK linker
# - NETLIB b/c the NETLIB is already the used linear algebra lib (no need to add on)
# - ILP64 b/c NETLIB isn't reliable for ILP64 yet
if: ${{ matrix.linalg_lib != 'intel-mkl' && matrix.linalg_lib != 'netlib' && matrix.int_interface == 'lp64' }}
run: |
sudo make -C .github/workflows/linalg download/netlib
sudo make -C .github/workflows/linalg install/netlib/lp64-sequential



- name: FindBLAS Default
# Disable for MKL-ILP64 b/c the default is LP64 unless otherwise specified
if: ${{ matrix.linalg_lib != 'intel-mkl' || matrix.int_interface != 'ilp64' }}
run: |
cmake -H${GITHUB_WORKSPACE}/examples/blas/default \
-B${{runner.workspace}}/build-findblas-default \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DBLAS_THREAD_LAYER=${{matrix.thread}}
.github/workflows/scripts/check_blas_cmake_cache.sh \
${{runner.workspace}}/build-findblas-default \
${{matrix.linalg_lib}} ${{matrix.thread}} ${{matrix.int_interface}}

- name: FindBLAS Integer Specific
run: |
cmake -H${GITHUB_WORKSPACE}/examples/blas/${{matrix.int_interface}} \
-B${{runner.workspace}}/build-findblas-${{matrix.int_interface}} \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DBLAS_THREAD_LAYER=${{matrix.thread}}
.github/workflows/scripts/check_blas_cmake_cache.sh \
${{runner.workspace}}/build-findblas-${{matrix.int_interface}} \
${{matrix.linalg_lib}} ${{matrix.thread}} ${{matrix.int_interface}}

- name: FindBLAS Static Linkage
run: |
cmake -H${GITHUB_WORKSPACE}/examples/blas/${{matrix.int_interface}} \
-B${{runner.workspace}}/build-findblas-static \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DBLAS_THREAD_LAYER=${{matrix.thread}} \
-DBLAS_PREFERS_STATIC=ON
.github/workflows/scripts/check_blas_cmake_cache.sh \
${{runner.workspace}}/build-findblas-static \
${{matrix.linalg_lib}} ${{matrix.thread}} ${{matrix.int_interface}}

- name: FindBLAS Static Linkage (Error Output)
if: ${{ failure() }}
run: |
echo "CMAKE OUTPUT" && cat ${{runner.workspace}}/build-findblas-static/CMakeFiles/CMakeOutput.log
echo "CMAKE ERROR" && cat ${{runner.workspace}}/build-findblas-static/CMakeFiles/CMakeError.log


- name: FindLAPACK Default
# Disable for
# - BLIS-ILP64 b/c BLIS doesn't have a LAPACK linker and NETLIB is not tested for ILP64
# - MKL-ILP64 b/c the default is LP64 unless otherwise specified
if: ${{ (matrix.linalg_lib != 'blis' && matrix.linalg_lib != 'intel-mkl') || matrix.int_interface != 'ilp64' }}
run: |
cmake -H${GITHUB_WORKSPACE}/examples/lapack/default \
-B${{runner.workspace}}/build-findlapack-default \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DLAPACK_THREAD_LAYER=${{matrix.thread}}
.github/workflows/scripts/check_lapack_cmake_cache.sh \
${{runner.workspace}}/build-findlapack-default \
${{matrix.linalg_lib}} ${{matrix.thread}} ${{matrix.int_interface}}

- name: FindLAPACK Integer Specific
# Disable for BLIS-ILP64 b/c BLIS doesn't have a LAPACK linker and NETLIB is not tested for ILP64
if: ${{ matrix.linalg_lib != 'blis' || matrix.int_interface != 'ilp64' }}
run: |
cmake -H${GITHUB_WORKSPACE}/examples/lapack/${{matrix.int_interface}} \
-B${{runner.workspace}}/build-findlapack-${{matrix.int_interface}} \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DLAPACK_THREAD_LAYER=${{matrix.thread}}
.github/workflows/scripts/check_lapack_cmake_cache.sh \
${{runner.workspace}}/build-findlapack-${{matrix.int_interface}} \
${{matrix.linalg_lib}} ${{matrix.thread}} ${{matrix.int_interface}}

- name: FindLAPACK Static Linkage
if: ${{ matrix.linalg_lib != 'blis' || matrix.int_interface != 'ilp64' }}
run: |
cmake -H${GITHUB_WORKSPACE}/examples/lapack/${{matrix.int_interface}} \
-B${{runner.workspace}}/build-findlapack-static \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DLAPACK_THREAD_LAYER=${{matrix.thread}} \
-DLAPACK_PREFERS_STATIC=ON
.github/workflows/scripts/check_lapack_cmake_cache.sh \
${{runner.workspace}}/build-findlapack-static \
${{matrix.linalg_lib}} ${{matrix.thread}} ${{matrix.int_interface}}


- name: FindScaLAPACK Default
# Disable for
# - Non-MKL-ILP64 b/c NETLIB can't handle ILP64 consist
# - MKL-ILP64 b/c the default is LP64 unless otherwise specified
if: ${{ (matrix.linalg_lib == 'intel-mkl' && matrix.int_interface == 'lp64') || matrix.int_interface == 'lp64' }}
run: |
cmake -H${GITHUB_WORKSPACE}/examples/scalapack/default \
-B${{runner.workspace}}/build-findscalapack-default \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DBLAS_THREAD_LAYER=${{matrix.thread}}
.github/workflows/scripts/check_scalapack_cmake_cache.sh \
${{runner.workspace}}/build-findscalapack-default \
${{matrix.linalg_lib}} ${{matrix.thread}} ${{matrix.int_interface}} ${{matrix.mpi_dist}}

- name: FindScaLAPACK Integer Specific
# Disable for
# - Non-MKL-ILP64 b/c NETLIB can't handle ILP64 consist
if: ${{ matrix.linalg_lib == 'intel-mkl' || matrix.int_interface == 'lp64' }}
run: |
cmake -H${GITHUB_WORKSPACE}/examples/scalapack/${{matrix.int_interface}} \
-B${{runner.workspace}}/build-findscalapack-${{matrix.int_interface}} \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DBLAS_THREAD_LAYER=${{matrix.thread}}
.github/workflows/scripts/check_scalapack_cmake_cache.sh \
${{runner.workspace}}/build-findscalapack-${{matrix.int_interface}} \
${{matrix.linalg_lib}} ${{matrix.thread}} ${{matrix.int_interface}} ${{matrix.mpi_dist}}

check-kitware-compatability:
runs-on: ubuntu-18.04
env:
MKLROOT: /opt/intel/mkl
CMAKE_PREFIX_PATH: '/home/software/install/blis-lp64-sequential;/home/software/install/netlib-lp64-sequential'
steps:
- uses: actions/checkout@v2

- name: Ubuntu Setup
run: |
sudo apt-get -yq update && sudo apt-get install make wget curl libomp5
sudo make -C .github/workflows/linalg install/main
sudo make -C .github/workflows/linalg install/cmake
sudo apt-get clean
sudo make -C .github/workflows/linalg apt-add-repository/intel-mkl

- name: Build Linalg
run: |
sudo make -C .github/workflows/linalg download/intel-mkl
sudo make -C .github/workflows/linalg install/intel-mkl
sudo make -C .github/workflows/linalg download/blis
sudo make -C .github/workflows/linalg install/blis/lp64-sequential

- name: Check BLA_STATIC
run: |
cmake -H${GITHUB_WORKSPACE}/examples/blas/lp64 \
-B${{runner.workspace}}/check-bla-static \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DBLAS_THREAD_LAYER=sequential \
-DBLA_STATIC=ON
.github/workflows/scripts/check_blas_cmake_cache.sh \
${{runner.workspace}}/check-bla-static \
intel-mkl sequential lp64

- name: Check BLA_VENDOR
run: |
cmake -H${GITHUB_WORKSPACE}/examples/blas/lp64 \
-B${{runner.workspace}}/check-bla-vendor \
-DCMAKE_MODULE_PATH=${GITHUB_WORKSPACE} \
-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} \
-DBLAS_THREAD_LAYER=sequential \
-DBLA_VENDOR="BLIS"
.github/workflows/scripts/check_blas_cmake_cache.sh \
${{runner.workspace}}/check-bla-vendor \
blis sequential lp64
Loading