Code: Select all
module Mod_MiBliV
use Mod_Functions
use omp_lib
implicit none
!
type SNM
...
procedure :: SolveSSEigenFastGraka
...
include "SolveSSEigenFastGraka.f90" !\include SolveSSEigenFastGraka.f90
...
end module
Code: Select all
subroutine SolveSSEigenFastGraka(this)
!
use magma
implicit none
!-------- declarations
integer :: i,j
complex*16, allocatable, dimension(:,:) :: h_A, h_B
integer*8 :: d_A, d_B
integer :: M = 1000
integer :: N = 1000
integer :: lda,info
integer, dimension(:),allocatable :: ipiv
integer*8 :: d_ipiv
real(kind=8) :: flops, t, tstart, tend
class(SNM) :: this !< object handler
lda = N
!--------- initialize MAGMA
!call cublas_init()
call magmaf_init();
!---------- allocate CPU memory
allocate(h_A(N,N))
allocate(h_B(M,N))
allocate(ipiv(n))
!---------- allocate GPU memory
call cublas_alloc(N*N, sizeof_complex, d_A)
!call cublas_alloc(M*N, sizeof_double, d_A)
!call magmaf_zmalloc( dA, M*N );
!magma_zmalloc( &dX, lddx*nrhs );
!---------- Initializa the matrix
do i=1,M
do j=1,N
h_A(i,j) = i+j
h_B(i,j) = i+j
end do
end do
call cublas_set_matrix (N, N, sizeof_complex, h_A, M, d_A,lda)
!call magma_zset_matrix( lda, n, A, lda, dA, lda );
call magma_wtime_f(tstart)
call magmaf_zgetrf(n, n, h_A, lda, ipiv, info)
call magma_wtime_f(tend)
write(*,*) tend - tstart
call magma_wtime_f(tstart)
!call zgetrf(n, n, h_A, lda, ipiv, info)
call magmaf_cgetrf_gpu(n, n, d_A, lda, ipiv, info)
call magma_wtime_f(tend)
!
write(*,*) tend - tstart
end subroutine solveSSEigenFastGraka
Code: Select all
#
# makefile for library generation
#
#==========#
# Compiler
#==========#
#
FC = gfortran-4.8
CC = gcc
# Paths where MAGMA and CUDA are installed
LAPACKDIR = /usr/lib
MAGMADIR = /home/tobi/Programme/magma-1.6.2
CUDADIR = /usr/local/cuda
ATLASDIR = /usr/local/atlas
LIBDIR = -L$(CUDADIR)/lib64 \
-L$(LAPACKDIR) \
-L$(MAGMADIR)/lib \
-L$(ATLASDIR)/lib
CC = gcc
FORT = gfortran-4.8
LD = gcc
CFLAGS = -Wall
LDFLAGS = -Wall
F90FLAGS = -shared -fPIC -frecord-marker=4 -O2
F90FLAGS2 = -frecord-marker=4 -O2
MAGMA_CFLAGS := -DADD_ -I$(MAGMADIR)/include -I$(CUDADIR)/include
MAGMA_F90FLAGS := -I$(MAGMADIR)/include -Dmagma_devptr_t="integer(kind=8)"
MAGMA_LIBS := $(LIBDIR) \
-lmagma -lcublas -llapack -lf77blas -lcblas -latlas -lcublas -lcudart -lstdc++ -lm -lgfortran -fopenmp
#
#=======================================#
# Path to Fortran-Modules (HeaderFiles)
#=======================================#
#
MODPATH= -J ../01_Modules/
#
#===========================#
# Flags for Shared library
#===========================#
#
LDFLAG1 = ~/Programme/LibSparseMatrix/00_Source/libSparseMatrix.so
LDFLAG1 += /home/tobi/Programme/Function/FunctionsDevel/libFuncs.so
LDFLAG1 += /usr/lib/liblapack.so
#CFLAG1 = -shared -fPIC $(CFLAG)
#
#===========================#
# Flags for Static library
#===========================#
#
LDFLAG2 = ~/Programme/LibSparseMatrix/00_Source/libSparseMatrix.a
CFLAG2 = $(CFLAG)
#
#all: libMiBliV.so libMiBliV.a
all: libMiBliV.so
Mod_MiBliV.o: Mod_MiBliV.f90
$(FC) $(F90FLAGS2) $(MAGMA_F90FLAGS) -c -o $@ $^ $(MODPATH)
fortran.o: $(CUDADIR)/src/fortran.c
$(CC) $(CFLAGS) $(MAGMA_CFLAGS) -DCUBLAS_GFORTRAN -c -o $@ $<
libMiBliV.so:
$(FORT) $(F90FLAGS) $(MAGMA_F90FLAGS) -o $@ Mod_MiBliV.f90 $(LDFLAG1) $(MODPATH)
#libMiBliV.so:
# $(FC) $(CFLAG1) $(MAGMA_F90FLAGS) -o $@ Mod_MiBliV.f90 $(LDFLAG1) $(MODPATH)
#libMiBliV: Mod_MiBliV.o fortran.o
# $(FC) $(LDFLAGS) -o $@ $^ $(MAGMA_LIBS) $(LDFLAG1) $(MODPATH)
clean:
rm libMiBliV.so libMiBliV.a Mod_MiBliV.o
Code: Select all
program MiBliV
use Mod_MiBliV
use omp_lib
!
implicit none
!
type(SNM),intent(inout) :: ROM
! read ROM data
call ROM%readDat('R1')
call ROM%SolveSSEigenFastGraka
end program MiBliV
Code: Select all
# DEBUG -compiling
FC = gfortran-4.8
CC = gcc
#
#
# Paths where MAGMA and CUDA are installed
LAPACKDIR = /usr/lib
MAGMADIR = /home/tobi/Programme/magma-1.6.2
CUDADIR = /usr/local/cuda
ATLASDIR = /usr/local/atlas
LIBDIR = -L$(CUDADIR)/lib64 \
-L$(LAPACKDIR) \
-L$(MAGMADIR)/lib \
-L$(ATLASDIR)/lib
#CFLAGS = -frecord-marker=4 -fbounds-check -O0 -g
#CFLAGS = -frecord-marker=4 -O2 -static
# normal (faster)
CC = gcc
FORT = gfortran-4.8
LD = gcc
CFLAGS = -Wall
LDFLAGS = -Wall
F90FLAGS = -frecord-marker=4 -O2
MAGMA_CFLAGS := -DADD_ -I$(MAGMADIR)/include -I$(CUDADIR)/include
MAGMA_F90FLAGS := -I$(MAGMADIR)/include -Dmagma_devptr_t="integer(kind=8)"
MAGMA_LIBS := $(LIBDIR) \
-lmagma -lcublas -llapack -lf77blas -lcblas -latlas -lcublas -lcudart -lstdc++ -lm -lgfortran -fopenmp
#================================
# Required third party libraries:
# (a) LAPACK, vers.> 3.0
#================================
#
#=================
# shared library
#=================
LDFLAG = /home/tobi/Programme/04_MiBliV_OBJ/00_Library/libMiBliV.so
#LDFLAG += /home/tobi/Programme/Function/Functions_Module/libFuncs.so
LDFLAG += /home/tobi/Programme/Function/FunctionsDevel/libFuncs.so
LDFLAG += /usr/lib/liblapack.so
#LDFLAG += -L/usr/local/cuda/lib64
#LDFLAG += -L/home/tobi/Programme/magma-1.6.2
#LDFLAG += -lmagma -lcublas -llapack -lf77blas -lcblas -latlas -lcublas -lcudart -lstdc++ -lm -lgfortran -fopenmp
MODPATH= -J ../01_Modules/
#===================
# static libraries
#===================
#LDFLAG = ../00_Library/libMiBliV.a
#LDFLAG += /home/tobi/Programme/LibSparseMatrix/00_Source/libSparseMatrix.a
#LDFLAG += /home/tobi/Programme/Function/FunctionsDevel/libFuncs.a
#LDFLAG += /home/giersch/Programme/Functions/08_V_1.1.1_Thomas/libFuncs.a
#LDFLAG += /usr/lib/liblapack.a
#LDFLAG += liblapack.a
#LDFLAG += /usr/lib/libblas.a
#MODPATH= -J ../01_Modules/
#OptimFourrier.f90
#nvcc -c -DCUBLAS_GFORTRAN -I/usr/local/cuda/include -I/usr/local/cuda/src -o fortran.o /usr/local/cuda/src/fortran.c
all: MiBliV MiBliV2
%.o: %.f90
$(FC) $(F90FLAGS) $(MAGMA_F90FLAGS) -c -o $@ $^ $(MODPATH)
fortran.o: $(CUDADIR)/src/fortran.c
$(CC) $(CFLAGS) $(MAGMA_CFLAGS) -DCUBLAS_GFORTRAN -c -o $@ $<
MiBliV: MiBliV.o\
Menu.o\
Menu_Alternative.o\
Menu_Alternative_Paral.o\
Menu2.o\
Optim.o\
OptimGlob.o\
Menu_Modify.o\
Init.o\
fortran.o
$(FC) $(LDFLAGS) $(MAGMA_F90FLAGS) -o $@ $^ $(MAGMA_LIBS) $(LDFLAG)
MiBliV2: MiBliV2.o\
Menu.o\
Menu_Alternative.o\
Menu_Alternative_Paral.o\
Menu2.o\
Optim.o\
OptimGlob.o\
Menu_Modify.o\
Init.o\
fortran.o
$(FC) $(LDFLAGS) $(MAGMA_F90FLAGS) -o $@ $^ $(MAGMA_LIBS) $(LDFLAG)
clean:
rm *.o
rm MiBliV
rm -r "doc/"