new test fc_openblas added (works on Linux only)

This commit is contained in:
Miro ILIAS 2015-07-12 22:16:31 +02:00
parent 87158e936c
commit bb3a4ad69f
5 changed files with 94 additions and 1 deletions

View File

@ -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

View 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

View 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()

View 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

View File

@ -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'