new Makefile, test compile well + data vect
parent
a81d1d9b68
commit
c7bbfb8b68
@ -0,0 +1,84 @@
|
|||||||
|
program datavect
|
||||||
|
use psb_base_mod
|
||||||
|
use psb_oacc_mod
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
type(psb_d_vect_oacc) :: v3, v4, v5
|
||||||
|
integer(psb_ipk_) :: info, n, i, old_percentage, percentage
|
||||||
|
real(psb_dpk_) :: alpha, dot_dev, dot_host, t_alloc_host, t_alloc_dev, t_calc_host, t_calc_dev
|
||||||
|
double precision, external :: etime
|
||||||
|
double precision :: time_start, time_end
|
||||||
|
integer, parameter :: min_size = 1000, max_size = 100000000, step_size = 1000000
|
||||||
|
integer, parameter :: ntests = 80, ngpu = 20
|
||||||
|
integer :: size
|
||||||
|
character(len=20) :: filename
|
||||||
|
|
||||||
|
open(unit=10, file='performance_data.csv', status='unknown')
|
||||||
|
write(10, '(A, A, A, A, A)') 'Size,Alloc_Host,Alloc_Dev,Calc_Host,Calc_Dev'
|
||||||
|
|
||||||
|
write(*, *) 'Test of the vector operations with OpenACC'
|
||||||
|
|
||||||
|
alpha = 2.0
|
||||||
|
old_percentage = 0
|
||||||
|
|
||||||
|
do size = min_size, max_size, step_size
|
||||||
|
n = size
|
||||||
|
percentage = int(real(size - min_size) / real(max_size - min_size) * 100.0)
|
||||||
|
if (percentage /= old_percentage) then
|
||||||
|
write(*, '(A,I3,A)', advance='no') 'Progress: ', percentage, '%'
|
||||||
|
write(*,'(A)', advance='no') char(13)
|
||||||
|
old_percentage = percentage
|
||||||
|
end if
|
||||||
|
|
||||||
|
time_start = etime()
|
||||||
|
call v3%all(n, info)
|
||||||
|
call v4%all(n, info)
|
||||||
|
call v5%all(n, info)
|
||||||
|
time_end = etime()
|
||||||
|
t_alloc_host = (time_end - time_start)
|
||||||
|
|
||||||
|
do i = 1, n
|
||||||
|
v3%v(i) = real(i, psb_dpk_)
|
||||||
|
v4%v(i) = real(n - i, psb_dpk_)
|
||||||
|
end do
|
||||||
|
|
||||||
|
call v3%scal(alpha)
|
||||||
|
|
||||||
|
call v3%set_host()
|
||||||
|
call v4%set_host()
|
||||||
|
|
||||||
|
time_start = etime()
|
||||||
|
do i = 1, ntests
|
||||||
|
dot_host = sum(v3%v * v4%v)
|
||||||
|
end do
|
||||||
|
time_end = etime()
|
||||||
|
t_calc_host = (time_end - time_start) / real(ntests)
|
||||||
|
|
||||||
|
time_start = etime()
|
||||||
|
call v3%set_dev()
|
||||||
|
call v4%set_dev()
|
||||||
|
call v3%sync_space()
|
||||||
|
call v4%sync_space()
|
||||||
|
time_end = etime()
|
||||||
|
t_alloc_dev = (time_end - time_start)
|
||||||
|
|
||||||
|
time_start = etime()
|
||||||
|
do i = 1, ntests
|
||||||
|
dot_dev = v3%dot_v(n, v4)
|
||||||
|
end do
|
||||||
|
!$acc wait
|
||||||
|
time_end = etime()
|
||||||
|
t_calc_dev = (time_end - time_start) / real(ntests)
|
||||||
|
|
||||||
|
write(10, '(I10, 1X, ES12.5, 1X, ES12.5, 1X, ES12.5, 1X, ES12.5)') size, t_alloc_host, t_alloc_dev, t_calc_host, t_calc_dev
|
||||||
|
|
||||||
|
call v3%free(info)
|
||||||
|
call v4%free(info)
|
||||||
|
call v5%free(info)
|
||||||
|
end do
|
||||||
|
|
||||||
|
close(10)
|
||||||
|
write(*, *) 'Performance data written to performance_data.csv'
|
||||||
|
|
||||||
|
|
||||||
|
end program datavect
|
||||||
Loading…
Reference in New Issue