-
Notifications
You must be signed in to change notification settings - Fork 19
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added cmake detection of the OpenBLAS library
- thanks to https://github.com/BVLC/caffe/blob/master/cmake/Modules/FindOpenBLAS.cmake - added dedicated openblas test, which has the same testing source the same as for the blas test
- Loading branch information
Miro Ilias
authored and
Miro Ilias
committed
May 30, 2016
1 parent
808d094
commit da89ffd
Showing
4 changed files
with
138 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
#.rst: | ||
# | ||
# Find and link to OpenBLAS. | ||
# | ||
# Variables defined:: | ||
# | ||
# OpenBLAS_FOUND | ||
# OpenBLAS_LIB | ||
# OpenBLAS_INCLUDE_DIR | ||
# | ||
# autocmake.yml configuration:: | ||
# | ||
# docopt: "--openblas Find and link to OpenBLAS [default: False]." | ||
# define: "'-DENABLE_OPENBLAS={0}'.format(arguments['--openblas'])" | ||
|
||
SET(Open_BLAS_INCLUDE_SEARCH_PATHS | ||
/usr/include | ||
/usr/include/openblas | ||
/usr/include/openblas-base | ||
/usr/local/include | ||
/usr/local/include/openblas | ||
/usr/local/include/openblas-base | ||
/opt/OpenBLAS/include | ||
$ENV{OpenBLAS_HOME} | ||
$ENV{OpenBLAS_HOME}/include | ||
) | ||
|
||
SET(Open_BLAS_LIB_SEARCH_PATHS | ||
/lib/ | ||
/lib/openblas-base | ||
/lib64/ | ||
/usr/lib | ||
/usr/lib/openblas-base | ||
/usr/lib64 | ||
/usr/local/lib | ||
/usr/local/lib64 | ||
/opt/OpenBLAS/lib | ||
$ENV{OpenBLAS}cd | ||
$ENV{OpenBLAS}/lib | ||
$ENV{OpenBLAS_HOME} | ||
$ENV{OpenBLAS_HOME}/lib | ||
) | ||
|
||
FIND_PATH(OpenBLAS_INCLUDE_DIR NAMES cblas.h PATHS ${Open_BLAS_INCLUDE_SEARCH_PATHS}) | ||
FIND_LIBRARY(OpenBLAS_LIB NAMES openblas PATHS ${Open_BLAS_LIB_SEARCH_PATHS}) | ||
|
||
SET(OpenBLAS_FOUND ON) | ||
|
||
# Check include files | ||
IF(NOT OpenBLAS_INCLUDE_DIR) | ||
SET(OpenBLAS_FOUND OFF) | ||
MESSAGE(STATUS "Could not find OpenBLAS include. Turning OpenBLAS_FOUND off") | ||
ENDIF() | ||
|
||
# Check libraries | ||
IF(NOT OpenBLAS_LIB) | ||
SET(OpenBLAS_FOUND OFF) | ||
MESSAGE(STATUS "Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off") | ||
ENDIF() | ||
|
||
IF (OpenBLAS_FOUND) | ||
IF (NOT OpenBLAS_FIND_QUIETLY) | ||
MESSAGE(STATUS "Found OpenBLAS libraries: ${OpenBLAS_LIB}") | ||
MESSAGE(STATUS "Found OpenBLAS include: ${OpenBLAS_INCLUDE_DIR}") | ||
ENDIF (NOT OpenBLAS_FIND_QUIETLY) | ||
ELSE (OpenBLAS_FOUND) | ||
IF (OpenBLAS_FIND_REQUIRED) | ||
MESSAGE(FATAL_ERROR "Could not find OpenBLAS") | ||
ENDIF (OpenBLAS_FIND_REQUIRED) | ||
ENDIF (OpenBLAS_FOUND) | ||
|
||
MARK_AS_ADVANCED( | ||
OpenBLAS_INCLUDE_DIR | ||
OpenBLAS_LIB | ||
OpenBLAS | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
name: example | ||
min_cmake_version: 2.8 | ||
modules: | ||
- fc: | ||
- source: ../../../modules/fc.cmake | ||
- math: | ||
- source: ../../../modules/math/openblas.cmake | ||
- default_build_paths: | ||
- source: ../../../modules/default_build_paths.cmake | ||
- src: | ||
- source: ../../../modules/src.cmake |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
if(OpenBLAS_FOUND) | ||
add_executable(example example.f90) | ||
target_link_libraries(example ${OpenBLAS_LIB}) | ||
else() | ||
message(FATAL_ERROR "OpenBLAS library not found") | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
program example | ||
|
||
implicit none | ||
|
||
integer, parameter :: n = 10 | ||
|
||
integer :: i, j | ||
logical :: test_ok | ||
|
||
real(8), allocatable :: a(:, :) | ||
real(8), allocatable :: b(:, :) | ||
real(8), allocatable :: c(:, :) | ||
|
||
allocate(a(n, n)) | ||
allocate(b(n, n)) | ||
allocate(c(n, n)) | ||
|
||
a = 1.0d0 | ||
b = 2.0d0 | ||
c = 0.0d0 | ||
|
||
call dgemm('n', 'n', n, n, n, 1.0d0, a, n, b, n, 0.0d0, c, n) | ||
|
||
test_ok = .true. | ||
|
||
do i = 1, n | ||
do j = 1, n | ||
if (dabs(c(i, j) - 20.0d0) > tiny(0.0d0)) then | ||
print *, 'ERROR: element', i, j, 'is', c(i, j) | ||
test_ok = .false. | ||
end if | ||
end do | ||
end do | ||
|
||
deallocate(a) | ||
deallocate(b) | ||
deallocate(c) | ||
|
||
if (test_ok) then | ||
print *, 'PASSED' | ||
else | ||
print *, 'FAILED' | ||
end if | ||
|
||
end program |