new test fc_openblas added (works on Linux only)
This commit is contained in:
parent
87158e936c
commit
bb3a4ad69f
@ -1,6 +1,6 @@
|
||||
language: cpp
|
||||
install:
|
||||
- sudo apt-get install g++ cmake gfortran
|
||||
- sudo apt-get install g++ cmake gfortran libopenblas-base libopenblas-dev
|
||||
- sudo pip install pytest pep8
|
||||
script:
|
||||
- pep8 --ignore=E501 update.py
|
||||
|
32
test/fc_openblas/cmake/autocmake.cfg
Normal file
32
test/fc_openblas/cmake/autocmake.cfg
Normal file
@ -0,0 +1,32 @@
|
||||
[project]
|
||||
name: example
|
||||
|
||||
[fc]
|
||||
source: ../../../modules/fc.cmake
|
||||
docopt: --fc=<FC> Fortran compiler [default: gfortran].
|
||||
--extra-fc-flags=<EXTRA_FCFLAGS> Extra Fortran compiler flags [default: ''].
|
||||
export: 'FC=%s' % arguments['--fc']
|
||||
define: '-DEXTRA_FCFLAGS="%s"' % arguments['--extra-fc-flags']
|
||||
|
||||
[int64]
|
||||
source: ../../../modules/int64.cmake
|
||||
docopt: --int64 Enable 64bit integers [default: False].
|
||||
define: '-DENABLE_64BIT_INTEGERS=%s' % arguments['--int64']
|
||||
|
||||
[math_libs]
|
||||
source: ../../../modules/math_libs.cmake
|
||||
docopt: --blas=<BLAS> Detect and link BLAS library (auto or off) [default: auto].
|
||||
--lapack=<LAPACK> Detect and link LAPACK library (auto or off) [default: auto].
|
||||
--mkl=<MKL> Pass MKL flag to the Intel compiler and linker and skip BLAS/LAPACK detection (sequential, parallel, cluster, or off) [default: off].
|
||||
define: '-DENABLE_BLAS=%s' % arguments['--blas']
|
||||
'-DENABLE_LAPACK=%s' % arguments['--lapack']
|
||||
'-DMKL_FLAG=%s' % arguments['--mkl']
|
||||
'-DMATH_LIB_SEARCH_ORDER="MKL;ESSL;ATLAS;ACML;SYSTEM_NATIVE"'
|
||||
'-DBLAS_LANG=Fortran'
|
||||
'-DLAPACK_LANG=Fortran'
|
||||
|
||||
[default_build_paths]
|
||||
source: ../../../modules/default_build_paths.cmake
|
||||
|
||||
[src]
|
||||
source: ../../../modules/src.cmake
|
6
test/fc_openblas/src/CMakeLists.txt
Normal file
6
test/fc_openblas/src/CMakeLists.txt
Normal file
@ -0,0 +1,6 @@
|
||||
if (BLAS_FOUND)
|
||||
add_executable(example example.f90)
|
||||
target_link_libraries(example blas)
|
||||
else()
|
||||
message(FATAL_ERROR "OpenBLAS library not found for the test fc_openblas !")
|
||||
endif()
|
47
test/fc_openblas/src/example.f90
Normal file
47
test/fc_openblas/src/example.f90
Normal file
@ -0,0 +1,47 @@
|
||||
program example
|
||||
implicit none
|
||||
call dgemm_test
|
||||
print *,'dgemm_test done'
|
||||
end program
|
||||
|
||||
subroutine dgemm_test
|
||||
implicit none
|
||||
integer :: i,j,k,AllocateStatus
|
||||
integer :: n=10
|
||||
real*8, allocatable :: A(:,:),B(:,:),C(:,:)
|
||||
real*8 :: diag, offdiag, asde,asode
|
||||
|
||||
allocate (A(n,n),B(n,n),C(n,n),STAT=AllocateStatus)
|
||||
if (AllocateStatus.ne.0) then
|
||||
stop "error in main matrix allocations !"
|
||||
endif
|
||||
|
||||
! fill matrixes A,B,C
|
||||
do i=1,n
|
||||
do j=1,n
|
||||
if (i.eq.j) then ! A is unit matrix
|
||||
A(i,j)=1.0d0
|
||||
else
|
||||
A(i,j)=0.0d0
|
||||
endif
|
||||
B(i,j)=dfloat(i+j) ! B is symmetric matrix
|
||||
C(i,j)=0.0d0
|
||||
enddo
|
||||
enddo
|
||||
call dgemm('n','n',n,n,n,1.0d0,A,n,B,n,-2.0d0,C,n)
|
||||
! check the resulting C matrix
|
||||
diag=0.0d0;offdiag=0.0d0
|
||||
do i=1,n
|
||||
do j=1,n
|
||||
if (i.eq.j) then
|
||||
diag = diag + C(i,j)
|
||||
else
|
||||
offdiag = offdiag + C(i,j)
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
|
||||
asde=diag/dfloat(n); asode=offdiag/(dfloat(n*n)-dfloat(n))
|
||||
|
||||
end subroutine dgemm_test
|
||||
|
@ -117,3 +117,11 @@ def test_cxx():
|
||||
def test_fc():
|
||||
stdout, stderr = boilerplate('fc', 'python setup.py --fc=gfortran')
|
||||
assert 'Hello World!' in stdout
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
|
||||
def test_fc_openblas():
|
||||
if sys.platform != 'win32':
|
||||
stdout, stderr = boilerplate('fc_openblas', 'python setup.py --fc=gfortran --blas=auto')
|
||||
assert 'dgemm_test done'
|
||||
|
Loading…
x
Reference in New Issue
Block a user