Skip to content

Commit ac4300b

Browse files
Release v3.4.5
1 parent 4388230 commit ac4300b

File tree

2,625 files changed

+82399
-53942
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,625 files changed

+82399
-53942
lines changed

.editorconfig

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
root = true
2+
3+
[*]
4+
end_of_line = lf
5+
trim_trailing_whitespace = true
6+
charset = utf-8
7+
8+
[Makefile]
9+
indent_style = tab
10+
11+
[*.{c,cpp,h,hpp,f,f90,F,F90}]
12+
indent_style = space
13+
indent_size = 4
14+
insert_final_newline = true
15+
16+
[*.{f,F}]
17+
max_line_length = 72
18+
19+
[*.{f90,f95,f03,F90,F95,F03}]
20+
max_line_length = 132
21+
22+
[*{c,cpp,h,hpp}]
23+
curly_bracket_next_line = true
24+
indent_brace_style = Allman
25+
26+
[CMakeLists.txt]
27+
indent_style = space
28+
indent_size = 4
29+
30+
[*.cmake]
31+
indent_style = space
32+
indent_size = 4
33+

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*.o
77
*.oct
88
*.pyc
9+
*.rej
910
*.swp
1011
*.tar.gz
1112
*octave-workspace*

CHANGELOG

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
next
2-
----
1+
3.4.5 (January 30, 2025)
2+
------------------------
33
- Fix cblas scnrm2 typo (See GH #54)
44
- Consistent indentation (See GH #55)
55
- Fix some typos (See GH #56)
6-
6+
- Support for NVPL BLAS
7+
- Fix bug in xAXPBY with ALPHA = BETA = 0.0
8+
- Add different symbols nameing schemens in parallel
9+
- Add support for xGEMMT/xGEMMTR
10+
- Fix all disclaimers to match the SPDX identifier
11+
- Fix building the auxillary library on Apple MacOS X (GH#61)
12+
- Fix underlinkage with GCC 15 and glibc, (GH #62)
13+
- Fix: detect wrong MKL/TBB without crashing the build process.
714

815
3.4.4 (May 24, 2024)
916
--------------------

CITATION.cff

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ authors:
88
given-names: "Jens"
99
orcid: "https://orcid.org/0000-0001-5567-9637"
1010
title: "FlexiBLAS - A BLAS and LAPACK wrapper library with runtime exchangable backends"
11-
version: 3.4.4
12-
doi: 10.5281/zenodo.11260086
13-
date-released: 2024-05-24
11+
version: 3.4.5
12+
doi: 10.5281/zenodo.14764701
13+
date-released: 2025-01-30
1414
url: "https://github.com/mpimd-csc/flexiblas"
1515
license: LGPL-3.0-or-later
1616
keywords:

CMakeLists.txt

+41-9
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
cmake_minimum_required(VERSION 3.9.0)
1+
cmake_minimum_required(VERSION 3.10.0)
22
INCLUDE(libcscutils/CMakeModules/CheckPolicy.cmake)
33
CheckPolicy(CMP0048 NEW)
4+
CheckPolicy(CMP0054 NEW)
5+
CheckPolicy(CMP0069 NEW)
6+
CheckPolicy(CMP0075 NEW)
47

5-
PROJECT(FlexiBLAS LANGUAGES C Fortran VERSION 3.4.4)
6-
cmake_policy(SET CMP0054 NEW)
7-
cmake_policy(SET CMP0069 NEW)
8+
PROJECT(FlexiBLAS LANGUAGES C Fortran VERSION 3.4.5)
89

910

1011
#
@@ -105,7 +106,6 @@ INCLUDE(ccache)
105106

106107

107108
#SET(BUILD_SHARED_LIBS ON)
108-
SET(LIBS m)
109109
INCLUDE(CheckCCompilerFlag)
110110
INCLUDE(CheckFortranCompilerFlag)
111111

@@ -195,7 +195,10 @@ IF (LINK_OPENMP)
195195
endif()
196196
ENDIF()
197197

198-
198+
INCLUDE(cmake/libm.cmake)
199+
IF (NEED_LINKING_AGAINST_LIBM)
200+
SET(LIBS ${LIBS} m)
201+
ENDIF()
199202

200203

201204

@@ -204,6 +207,10 @@ IF (NOT DEFINED ABI)
204207
SET(ABI "Intel" CACHE STRING "ABI of the Fortran Interface")
205208
ELSEIF ( ${CMAKE_Fortran_COMPILER_ID} STREQUAL "PGI" )
206209
SET(ABI "Intel" CACHE STRING "ABI of the Fortran Interface")
210+
ELSEIF ( ${CMAKE_Fortran_COMPILER_ID} STREQUAL "NVHPC" AND CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64" )
211+
SET(ABI "GNU" CACHE STRING "ABI of the Fortran Interface")
212+
ELSEIF ( ${CMAKE_Fortran_COMPILER_ID} STREQUAL "NVHPC" AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64" )
213+
SET(ABI "Intel" CACHE STRING "ABI of the Fortran Interface")
207214
ELSEIF ( ${CMAKE_Fortran_COMPILER_ID} STREQUAL "XL" )
208215
SET(ABI "XL" CACHE STREQUAL "ABI of the Fortran Interface")
209216
ELSE()
@@ -228,11 +235,34 @@ ENDIF()
228235

229236
# Name Mangling
230237
include(FortranCInterface)
231-
FortranCInterface_HEADER(${PROJECT_BINARY_DIR}/include/flexiblas_fortran_mangle.h
238+
FortranCInterface_HEADER(${PROJECT_BINARY_DIR}/fc.h
232239
MACRO_NAMESPACE "FC_"
233240
SYMBOL_NAMESPACE "FC_")
234241
FortranCInterface_VERIFY()
235242

243+
MESSAGE(STATUS "Fortran - C - Interface -- FortranCInterface_GLOBAL_SUFFIX = ${FortranCInterface_GLOBAL_SUFFIX}")
244+
MESSAGE(STATUS "Fortran - C - Interface -- FortranCInterface_GLOBAL_CASE = ${FortranCInterface_GLOBAL_CASE}")
245+
246+
IF ( FortranCInterface_GLOBAL_SUFFIX STREQUAL "_" AND FortranCInterface_GLOBAL_CASE STREQUAL "LOWER")
247+
SET(FLEXIBLAS_MANGLE_DEFAULT 1)
248+
SET(FLEXIBLAS_MANGLE_WINDOWS 0)
249+
SET(FLEXIBLAS_MANGLE_UPPPERCASE 0)
250+
MESSAGE(STATUS "Use default Fortran name mangling.")
251+
ELSEIF(FortranCInterface_GLOBAL_SUFFIX STREQUAL "" AND FortranCInterface_GLOBAL_CASE STREQUAL "LOWER")
252+
SET(FLEXIBLAS_MANGLE_DEFAULT 0)
253+
SET(FLEXIBLAS_MANGLE_WINDOWS 1)
254+
SET(FLEXIBLAS_MANGLE_UPPPERCASE 0)
255+
MESSAGE(STATUS "Use Windows-like Fortran name mangling.")
256+
ELSEIF(FortranCInterface_GLOBAL_SUFFIX STREQUAL "" AND FortranCInterface_GLOBAL_CASE STREQUAL "UPPER")
257+
SET(FLEXIBLAS_MANGLE_DEFAULT 0)
258+
SET(FLEXIBLAS_MANGLE_WINDOWS 0)
259+
SET(FLEXIBLAS_MANGLE_UPPPERCASE 1)
260+
MESSAGE(STATUS "Use upper-case Fortran name mangling.")
261+
ENDIF()
262+
263+
264+
265+
236266
include(CheckThreadLocal)
237267

238268
IF (DEFINED FALLBACK)
@@ -329,7 +359,9 @@ SET(LIBS ${LIBS})
329359
SET(INCLUDE_DIR ${INCLUDE_DIR} "${PROJECT_SOURCE_DIR}/libcscutils/include" "${PROJECT_BINARY_DIR}/libcscutils/include")
330360

331361
IF (CBLAS STREQUAL ON)
332-
ADD_DEFINITIONS(-DFLEXIBLAS_CBLAS)
362+
SET(FLEXIBLAS_CBLAS TRUE)
363+
ELSE()
364+
SET(FLEXIBLAS_CBLAS FALSE)
333365
ENDIF()
334366

335367

@@ -422,7 +454,6 @@ INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/blas_gnu.h
422454
${CMAKE_SOURCE_DIR}/include/blas_intel.h
423455
${CMAKE_BINARY_DIR}/include/flexiblas_config.h
424456
${CMAKE_BINARY_DIR}/include/flexiblas_api.h
425-
${CMAKE_BINARY_DIR}/include/flexiblas_fortran_mangle.h
426457
DESTINATION ${CMAKE_INSTALL_FULL_INCLUDEDIR}/${FLEXIBLAS_INCLUDE_PREFIX}/)
427458
IF(LAPACK STREQUAL ON)
428459
INSTALL(FILES ${CMAKE_BINARY_DIR}/include/lapack.h
@@ -431,6 +462,7 @@ IF(LAPACK STREQUAL ON)
431462

432463
ENDIF()
433464
INSTALL(FILES ${CMAKE_SOURCE_DIR}/src/flexiblas_backend.h
465+
${CMAKE_SOURCE_DIR}/src/flexiblas_fortran_mangle.h
434466
${CMAKE_SOURCE_DIR}/src/flexiblas_real_calls.h
435467
${CMAKE_SOURCE_DIR}/src/flexiblas_real_cblas_calls.h
436468
${CMAKE_SOURCE_DIR}/src/flexiblas_dummy_fortran.h

CODE

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
name: FlexiBLAS - A BLAS and LAPACK wrapper library with runtime exchangable backends
22
shortname: flexiblas
3-
version: 3.4.4
4-
release-date: 2024-05-24
5-
id: 10.5281/zenodo.11260086
3+
version: 3.4.5
4+
release-date: 2025-01-30
5+
id: 10.5281/zenodo.14764701
66
id-type: doi
77
author: Martin Köhler, Jens Saak
88
orcid: 0000-0003-2338-9904, 0000-0001-5567-9637

CONTRIBUTING.md

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# FlexiBLAS Contribution Guide
2+
3+
Thank you for considering contributing to the FlexiBLAS open source project!
4+
We welcome contributions from everyone. Please follow these guidelines to ensure
5+
a smooth contribution process.
6+
7+
## How to Contribute
8+
9+
1. **Fork the Repository**: Start by forking the repository to your GitHub account.
10+
11+
2. **Clone the Repository**: Clone your forked repository to your local machine.
12+
13+
```bash
14+
git clone https://github.com/your-username/flexiblas.git
15+
```
16+
17+
3. **Create a Branch**: Create a new branch for your feature or bug fix.
18+
19+
```bash
20+
git checkout -b feature-or-bugfix-name
21+
```
22+
23+
4. **Make Changes**: Implement your changes in the codebase and add yourself to the list
24+
of contributors in the `CONTRIBUTORS.md` file in the root of the project. By doing this
25+
you accept the conditions from this contribution guide.
26+
27+
5. **Commit Changes**: Commit your changes with a clear and descriptive commit message.
28+
29+
```bash
30+
git commit -m "Description of changes"
31+
```
32+
33+
6. **Push Changes**: Push your changes to your forked repository.
34+
35+
```bash
36+
git push origin feature-or-bugfix-name
37+
```
38+
39+
7. **Submit a Pull Request**: Go to the [FlexiBLAS repository](https://github.com/mpimd-csc/flexiblas)
40+
and submit a pull request. Provide a detailed description of your changes and any related issues.
41+
42+
**Note**: Merge requests are not directly accepted into the main repository. Instead, they are first
43+
reviewed and, if approved, moved to an internal repository for further testing and integration before
44+
being merged into the main codebase.
45+
46+
## Code Style Guide
47+
48+
To maintain consistency across the codebase, please adhere to the code style guidelines specified
49+
in the `.editorconfig` file located in the root directory of the repository. This file contains
50+
settings for indentation, line endings, and other code style preferences. Most modern code editors
51+
support `.editorconfig` and will automatically apply these settings. For more details, we refer To
52+
[https://editorconfig.org/](https://editorconfig.org/)
53+
54+
## Copyright and Licensing
55+
56+
By contributing to this project, you agree to the following terms regarding copyright and licensing:
57+
58+
- **Copyright Assignment**: You agree that the authors of the software retain the copyright to the
59+
entire codebase, including your contributions. This means that while you will be acknowledged as
60+
a contributor, the copyright of the code remains with the original authors.
61+
62+
- **Right to Re-license**: The authors of the project reserve the right to re-license the entire
63+
codebase, including your contributions, under different terms. This could involve changing the
64+
licensing terms to better suit the project's goals or to comply with legal requirements.
65+
66+
- **Acknowledgment**: Your contributions will be acknowledged in the project's documentation
67+
or release notes, giving credit for your work. Additionally, contributors may be listed in
68+
the `CONTRIBUTORS.md` file as a token of appreciation for their efforts.
69+
70+
We appreciate your contributions and look forward to collaborating with you! If you have any
71+
questions or concerns about these terms, please feel free to open an issue or contact us directly.

CONTRIBUTORS.md

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
Maintainer and Main Author
2+
--------------------------
3+
4+
* Martin Köhler, MPI Magdeburg, koehlerm<|AT|>mpi-magdeburg<|DOT|>mpg<|DOT|>.de
5+
* Jens Saak, MPI Magdeburg, saak<|DOT|>mpi-magdeburg<|DOT|>mpg<|DOT|>.de
6+
7+
Contributors
8+
------------
9+
Please list yourself, optionally with an affiliation, and a one-liner of your contribution
10+
11+
* Christian Himpe, Universität Münster, testing and bug hunting
12+
* Jörn Papenbroock, parts of the hook framework
13+
* Iñaki Úcar, packaging for Fedora and bug hunting related to the build-system
14+

ISSUES.md

+31-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Issues using FlexiBLAS
22
======================
33

4-
Last Update: Jun 16, 2020
4+
Last Update: Oct 10, 2024
55

66
Table of Contents
77
-----------------
@@ -14,6 +14,9 @@ Table of Contents
1414
6. CBLAS Interface of BLIS
1515
7. Building with pre-built BLAS and LAPACK on MacOSX
1616
8. gcc >= 10.0 and LAPACK 3.7/3.8
17+
9. LTO Type mismatch with gcc
18+
10. NVHPC
19+
1720

1821
1. Profiling Numpy/Scipy with linked against FlexiBLAS
1922
------------------------------------------------------
@@ -110,4 +113,31 @@ cmake ........ -DCMAKE_Fortran_FLAGS="-fallow-argument-mismatch"
110113
```
111114
while configuring FlexiBLAS. Alternatively, the tests can be disabled.
112115

116+
9. LTO Type mismatch with gcc
117+
-----------------------------
118+
Some newer versions of gcc (at least version 13.x and 14.x) produce wrong LTO
119+
warnings. They accidently assume Fortran's hidden string length argument to be a
120+
`long int` instead of a `size_t` aka `flexiblas_fortran_charlen_t`. This results
121+
in a warning like:
122+
```
123+
type ‘long int’ should match type ‘flexiblas_fortran_charlen_t’
124+
```
125+
while linking the LAPACK fallback library. This error can safely be ignored
126+
and is already subject to a GCC bug:
127+
128+
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102079
129+
130+
10. NVHPC
131+
---------
132+
The up to at least version 24.7 of the NVHPC compiler on Aarch64, the `-z now`
133+
flag is added to all linker calls. This avoids many parts of the hook framework
134+
to work and even disturbs some backend detection. The problem is known to
135+
Nvidia, see https://forums.developer.nvidia.com/t/nvc-adds-z-now-to-linking-causes-error-in-plugin-based-codes-on-arm64-gh200/307243
136+
137+
Furthermore, the NVHPC compiler suite leads to severval errors in the testing
138+
suite, which also appear if one compiles the reference LAPACK with the NVHPC
139+
compilers. Even simple routines like `dznrm2` are affected by error introduced
140+
by the NVHPC compiler.
141+
142+
113143

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
FlexiBLAS - A BLAS and LAPACK wrapper library with runtime exchangeable backends
22
================================================================================
33

4-
**Version 3.4.4** - DOI: 10.5281/zenodo.11260086
4+
**Version 3.4.5** - DOI: 10.5281/zenodo.14764701
55

66
**Project Website:** https://www.mpi-magdeburg.mpg.de/projects/flexiblas
77

88
**Git Repository:** https://gitlab.mpi-magdeburg.mpg.de/software/flexiblas-release
99

10-
Copyright 2013-2024 by *Martin Köhler* (0000-0003-2338-9904)
10+
Copyright 2013-2025 by *Martin Köhler* (0000-0003-2338-9904)
1111
and *Jens Saak* (0000-0001-5567-9637)
1212

1313
## Documentation
@@ -212,6 +212,7 @@ The following compilers are tested:
212212
* Intel icx/ifx oneAPI >= 2022
213213
* LLVM CLANG/FLANG >= 18
214214
* AMD AOCC 4.2.0
215+
* NVHPC on x86_64 (On ARM64 some issues exists.)
215216

216217
Other compilers might work, but not tested.
217218

cmake/libm.cmake

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
include(CheckFunctionExists)
2+
3+
if(NOT COS_FUNCTION_EXISTS AND NOT NEED_LINKING_AGAINST_LIBM)
4+
CHECK_FUNCTION_EXISTS(cos COS_FUNCTION_EXISTS)
5+
if(NOT COS_FUNCTION_EXISTS)
6+
MESSAGE(STATUS "Check if cos needs libm")
7+
unset(COS_FUNCTION_EXISTS CACHE)
8+
list(APPEND CMAKE_REQUIRED_LIBRARIES m)
9+
CHECK_FUNCTION_EXISTS(cos COS_FUNCTION_EXISTS)
10+
if(COS_FUNCTION_EXISTS)
11+
set(NEED_LINKING_AGAINST_LIBM True CACHE BOOL "" FORCE)
12+
else()
13+
message(FATAL_ERROR "Failed making the cos() or libm does not work properly.")
14+
endif()
15+
endif()
16+
endif()
17+

0 commit comments

Comments
 (0)