Skip to content

Commit 9de0589

Browse files
authored
Merge pull request #2 from jvdp1/blas_jv
Support of MKL
2 parents 3254fd0 + b867c2b commit 9de0589

File tree

4 files changed

+26
-16
lines changed

4 files changed

+26
-16
lines changed

.github/workflows/CI.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,6 @@ jobs:
138138
-DCMAKE_MAXIMUM_RANK:String=4
139139
-DCMAKE_INSTALL_PREFIX=$PWD/_dist
140140
-DFIND_BLAS:STRING=TRUE
141-
-DBLAS_LIBRARIES="/opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_rt.so"
142-
-DLAPACK_LIBRARIES="/opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_rt.so"
143141
-S . -B build_mkl
144142
145143
- name: Build and compile with MKL

CMakeLists.txt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,23 @@ option(FIND_BLAS "Find external BLAS and LAPACK" ON)
4646

4747
# --- find BLAS and LAPACK
4848
if(FIND_BLAS)
49-
find_package(BLAS)
49+
if(NOT BLAS_FOUND)
50+
#Required for MKL
51+
if(DEFINED ENV{MKLROOT} OR "${BLA_VENDOR}" MATCHES "^Intel")
52+
enable_language("C")
53+
endif()
54+
find_package("BLAS")
55+
endif()
5056
if(BLAS_FOUND)
5157
add_compile_definitions(STDLIB_EXTERNAL_BLAS)
5258
endif()
53-
find_package(LAPACK)
59+
if(NOT LAPACK_FOUND)
60+
#Required for MKL
61+
if(DEFINED ENV{MKLROOT} OR "${BLA_VENDOR}" MATCHES "^Intel")
62+
enable_language("C")
63+
endif()
64+
find_package("LAPACK")
65+
endif()
5466
if(LAPACK_FOUND)
5567
add_compile_definitions(STDLIB_EXTERNAL_LAPACK)
5668
endif()

src/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,10 @@ add_library(${PROJECT_NAME} ${SRC})
122122

123123
# Link to BLAS and LAPACK
124124
if(BLAS_FOUND)
125-
target_link_libraries(${PROJECT_NAME} BLAS::BLAS)
125+
target_link_libraries(${PROJECT_NAME} "BLAS::BLAS")
126126
endif()
127127
if(LAPACK_FOUND)
128-
target_link_libraries(${PROJECT_NAME} LAPACK::LAPACK)
128+
target_link_libraries(${PROJECT_NAME} "LAPACK::LAPACK")
129129
endif()
130130

131131
set_target_properties(

test/linalg/test_linalg_svd.fypp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ module test_linalg_svd
9393
if (allocated(error)) return
9494
call check(error, all(abs(s-s_sol)<=tol), test//': S')
9595
if (allocated(error)) return
96-
call check(error, all(abs(u-u_sol)<=tol) .or. all(abs(u+u_sol)<=tol), test//': U')
96+
call check(error, all(abs(abs(u)-abs(u_sol))<=tol), test//': U')
9797
if (allocated(error)) return
9898

9999
!> [S, U]. Overwrite A matrix
@@ -104,7 +104,7 @@ module test_linalg_svd
104104
if (allocated(error)) return
105105
call check(error, all(abs(s-s_sol)<=tol), test//': S')
106106
if (allocated(error)) return
107-
call check(error, all(abs(u-u_sol)<=tol) .or. all(abs(u+u_sol)<=tol), test//': U')
107+
call check(error, all(abs(abs(u)-abs(u_sol))<=tol), test//': U')
108108
if (allocated(error)) return
109109

110110
!> [S, U, V^T]
@@ -116,9 +116,9 @@ module test_linalg_svd
116116
if (allocated(error)) return
117117
call check(error, all(abs(s-s_sol)<=tol), test//': S')
118118
if (allocated(error)) return
119-
call check(error, all(abs(u-u_sol)<=tol) .or. all(abs(u+u_sol)<=tol), test//': U')
119+
call check(error, all(abs(abs(u)-abs(u_sol))<=tol), test//': U')
120120
if (allocated(error)) return
121-
call check(error, all(abs(vt-vt_sol)<=tol) .or. all(abs(vt+vt_sol)<=tol), test//': V^T')
121+
call check(error, all(abs(abs(vt)-abs(vt_sol))<=tol), test//': V^T')
122122
if (allocated(error)) return
123123

124124
!> [S, V^T]. Do not overwrite A matrix
@@ -130,7 +130,7 @@ module test_linalg_svd
130130
if (allocated(error)) return
131131
call check(error, all(abs(s-s_sol)<=tol), test//': S')
132132
if (allocated(error)) return
133-
call check(error, all(abs(vt-vt_sol)<=tol) .or. all(abs(vt+vt_sol)<=tol), test//': V^T')
133+
call check(error, all(abs(abs(vt)-abs(vt_sol))<=tol), test//': V^T')
134134
if (allocated(error)) return
135135

136136
!> [S, V^T]. Overwrite A matrix
@@ -141,7 +141,7 @@ module test_linalg_svd
141141
if (allocated(error)) return
142142
call check(error, all(abs(s-s_sol)<=tol), test//': S')
143143
if (allocated(error)) return
144-
call check(error, all(abs(vt-vt_sol)<=tol) .or. all(abs(vt+vt_sol)<=tol), test//': V^T')
144+
call check(error, all(abs(abs(vt)-abs(vt_sol))<=tol), test//': V^T')
145145
if (allocated(error)) return
146146

147147
!> [U, S, V^T].
@@ -151,11 +151,11 @@ module test_linalg_svd
151151
test = '[U, S, V^T]'
152152
call check(error,state%ok(),test//': '//state%print())
153153
if (allocated(error)) return
154-
call check(error, all(abs(u-u_sol)<=tol) .or. all(abs(u+u_sol)<=tol), test//': U')
154+
call check(error, all(abs(abs(u)-abs(u_sol))<=tol), test//': U')
155155
if (allocated(error)) return
156156
call check(error, all(abs(s-s_sol)<=tol), test//': S')
157157
if (allocated(error)) return
158-
call check(error, all(abs(vt-vt_sol)<=tol) .or. all(abs(vt+vt_sol)<=tol), test//': V^T')
158+
call check(error, all(abs(abs(vt)-abs(vt_sol))<=tol), test//': V^T')
159159
if (allocated(error)) return
160160

161161
!> [U, S, V^T]. Partial storage -> compare until k=2 columns of U rows of V^T
@@ -167,11 +167,11 @@ module test_linalg_svd
167167
test = '[U, S, V^T], partial storage'
168168
call check(error,state%ok(),test//': '//state%print())
169169
if (allocated(error)) return
170-
call check(error, all(abs(u(:,:2)-u_sol(:,:2))<=tol) .or. all(abs(u(:,:2)+u_sol(:,:2))<=tol), test//': U(:,:2)')
170+
call check(error, all(abs(abs(u(:,:2))-abs(u_sol(:,:2)))<=tol), test//': U(:,:2)')
171171
if (allocated(error)) return
172172
call check(error, all(abs(s-s_sol)<=tol), test//': S')
173173
if (allocated(error)) return
174-
call check(error, all(abs(vt(:2,:)-vt_sol(:2,:))<=tol) .or. all(abs(vt(:2,:)+vt_sol(:2,:))<=tol), test//': V^T(:2,:)')
174+
call check(error, all(abs(abs(vt(:2,:))-abs(vt_sol(:2,:)))<=tol), test//': V^T(:2,:)')
175175
if (allocated(error)) return
176176

177177
end subroutine test_svd_${ri}$

0 commit comments

Comments
 (0)