Skip to content

Provide BLAS, LAPACK backends and interfaces #772

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 30 commits into from
Apr 2, 2024
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
f3ac970
Upload BLAS/LAPACK, create preprocessor directives
perazz Mar 11, 2024
5882ad6
enable fpm deployment
perazz Mar 11, 2024
ac65112
update `fpm` version in CI
perazz Mar 11, 2024
c25e3ff
add tests
perazz Mar 11, 2024
ce52faf
typo: `getri`
perazz Mar 11, 2024
3e8c5b6
safeguards for qp procedure templates
perazz Mar 11, 2024
29eeec2
public qp interfaces
perazz Mar 11, 2024
8be6484
more `WITH_QP` guards
perazz Mar 11, 2024
a937382
skip unsupported `xdp` precision
perazz Mar 11, 2024
a356f14
Delete .test_trapz.fypp.swp
perazz Mar 11, 2024
2ae057f
unify pre-processing of blas/lapack sources
perazz Mar 12, 2024
edfeb59
OpenMP: replace `cpp` macros with `!$` conditional compilation
perazz Mar 14, 2024
da5d90c
force `example.dat` back into repo
perazz Mar 14, 2024
d379e9c
free-form `!$omp` continuation style
perazz Mar 14, 2024
2be3340
indent OpenMP sentinels
perazz Mar 23, 2024
592e085
remove `FPM_DEPLOYMENT`
perazz Mar 24, 2024
5785f6c
Update src/stdlib_linalg_constants.fypp
perazz Mar 24, 2024
fa3f147
Merge branch 'blas_lapack_backend' of github.com:perazz/stdlib into b…
perazz Mar 24, 2024
281b068
Document BLAS/LAPACK backends
perazz Mar 26, 2024
4586f32
typo
perazz Mar 26, 2024
3c2349f
Update doc/specs/stdlib_linalg.md
perazz Mar 26, 2024
464aba4
Update doc/specs/stdlib_linalg.md
perazz Mar 26, 2024
a56d685
Update doc/specs/stdlib_linalg.md
perazz Mar 26, 2024
819f2b2
add Licensing information
perazz Mar 26, 2024
a46b86f
add `Syntax` section
perazz Mar 26, 2024
ae6c009
clarify fpm macros
perazz Mar 26, 2024
545b4c3
link to the conversion script
perazz Mar 26, 2024
e30b2ec
dnrm2/snrm2: fix missing interface type
perazz Mar 27, 2024
745bcf8
shorten doc comment
perazz Mar 27, 2024
c12b3c3
lapack interface: import procedure interfaces
perazz Mar 27, 2024
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
4 changes: 2 additions & 2 deletions .github/workflows/fpm-deployment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ jobs:
--slave /usr/bin/gcov gcov /usr/bin/gcov-${{ env.GCC_V }}

- name: Install fpm latest release
uses: fortran-lang/setup-fpm@v3
uses: fortran-lang/setup-fpm@v5
with:
fpm-version: 'v0.4.0'
fpm-version: 'v0.10.0'

- name: Run fpm test ⚙
run: |
Expand Down
1 change: 1 addition & 0 deletions ci/fpm-deployment.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ fypp="${FYPP:-$(which fypp)}"
# Arguments for the fypp preprocessor
maxrank=4
fyflags="${FYFLAGS:--DMAXRANK=$maxrank}"
fyflags="${fyflags} -DFPM_DEPLOYMENT=True"

# Number of parallel jobs for preprocessing
if [ $(uname) = "Darwin" ]; then
Expand Down
3 changes: 3 additions & 0 deletions ci/fpm.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@ copyright = "2019-2021 stdlib contributors"
[dev-dependencies]
test-drive.git = "https://github.com/fortran-lang/test-drive"
test-drive.tag = "v0.4.0"

[preprocess]
[preprocess.cpp]
7 changes: 7 additions & 0 deletions cmake/stdlib.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,10 @@ function (fypp_f90 fyppopts fyppfiles f90files)
preprocess("${FYPP}" "${fyppopts}" "fypp" "f90" "${fyppfiles}" _f90files)
set(${f90files} ${_f90files} PARENT_SCOPE)
endfunction()

# For fortran sources that contain C preprocessor flags: create ".F90" files
function (fypp_f90pp fyppopts fyppfiles F90files)
preprocess("${FYPP}" "${fyppopts}" "fypp" "F90" "${fyppfiles}" _F90files)
set(${F90files} ${_F90files} PARENT_SCOPE)
endfunction()

1 change: 0 additions & 1 deletion include/common.fypp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@
#! Whether Fortran 90 compatible code should be generated
#:set VERSION90 = defined('VERSION90')


#! Ranks to be generated when templates are created
#:if not defined('MAXRANK')
#:if VERSION90
Expand Down
22 changes: 22 additions & 0 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,29 @@ set(fppFiles
stdlib_version.fypp
)

# Preprocessed files to contain preprocessor directives -> .F90
set(cppFiles
stdlib_linalg_constants.fypp
stdlib_linalg_blas.fypp
stdlib_linalg_blas_aux.fypp
stdlib_linalg_blas_s.fypp
stdlib_linalg_blas_d.fypp
stdlib_linalg_blas_q.fypp
stdlib_linalg_blas_c.fypp
stdlib_linalg_blas_z.fypp
stdlib_linalg_blas_w.fypp
stdlib_linalg_lapack.fypp
stdlib_linalg_lapack_aux.fypp
stdlib_linalg_lapack_s.fypp
stdlib_linalg_lapack_d.fypp
stdlib_linalg_lapack_q.fypp
stdlib_linalg_lapack_c.fypp
stdlib_linalg_lapack_z.fypp
stdlib_linalg_lapack_w.fypp
)

fypp_f90("${fyppFlags}" "${fppFiles}" outFiles)
fypp_f90pp("${fyppFlags}" "${cppFiles}" outPreprocFiles)

set(SRC
stdlib_ansi.f90
Expand All @@ -85,6 +106,7 @@ set(SRC
stdlib_quadrature_gauss.f90
stdlib_stringlist_type.f90
${outFiles}
${outPreprocFiles}
)

add_library(${PROJECT_NAME} ${SRC})
Expand Down
Loading
Loading