mirror of
https://github.com/LCPQ/quantum_package
synced 2024-08-31 08:33:40 +02:00
137 lines
3.3 KiB
Fortran
137 lines
3.3 KiB
Fortran
|
program bench_maps
|
||
|
implicit none
|
||
|
BEGIN_DOC
|
||
|
! Performs timing benchmarks on integral access
|
||
|
END_DOC
|
||
|
integer :: i,j,k,l
|
||
|
integer*8 :: ii,jj
|
||
|
double precision :: r, cpu
|
||
|
integer*8 :: cpu0, cpu1, count_rate, count_max
|
||
|
|
||
|
PROVIDE mo_bielec_integrals_in_map
|
||
|
print *, mo_tot_num, 'MOs'
|
||
|
|
||
|
! Time random function
|
||
|
call system_clock(cpu0, count_rate, count_max)
|
||
|
do ii=1,100000000_8
|
||
|
call random_number(r)
|
||
|
i = int(r*mo_tot_num)+1
|
||
|
call random_number(r)
|
||
|
j = int(r*mo_tot_num)+1
|
||
|
call random_number(r)
|
||
|
k = int(r*mo_tot_num)+1
|
||
|
call random_number(r)
|
||
|
l = int(r*mo_tot_num)+1
|
||
|
enddo
|
||
|
call system_clock(cpu1, count_rate, count_max)
|
||
|
cpu = (cpu1-cpu0)/count_rate
|
||
|
print *, 'Random function : ', cpu/dble(ii)
|
||
|
|
||
|
call system_clock(cpu0, count_rate, count_max)
|
||
|
do ii=1,100000000_8
|
||
|
call random_number(r)
|
||
|
i = int(r*mo_tot_num)+1
|
||
|
call random_number(r)
|
||
|
j = int(r*mo_tot_num)+1
|
||
|
call random_number(r)
|
||
|
k = int(r*mo_tot_num)+1
|
||
|
call random_number(r)
|
||
|
l = int(r*mo_tot_num)+1
|
||
|
call get_mo_bielec_integral(i,j,k,l,mo_integrals_map)
|
||
|
enddo
|
||
|
call system_clock(cpu1, count_rate, count_max)
|
||
|
cpu = -cpu + (cpu1 - cpu0)/count_rate
|
||
|
print *, 'Random access : ', cpu/dble(ii)
|
||
|
|
||
|
ii=0_8
|
||
|
call system_clock(cpu0, count_rate, count_max)
|
||
|
do jj=1,10
|
||
|
do l=1,mo_tot_num
|
||
|
do k=1,mo_tot_num
|
||
|
do j=1,mo_tot_num
|
||
|
do i=1,mo_tot_num
|
||
|
ii += 1
|
||
|
call get_mo_bielec_integral(i,j,k,l,mo_integrals_map)
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
call system_clock(cpu1, count_rate, count_max)
|
||
|
cpu = (cpu1 - cpu0)/count_rate
|
||
|
print *, 'loop ijkl : ', cpu/dble(ii)
|
||
|
|
||
|
ii=0
|
||
|
call system_clock(cpu0, count_rate, count_max)
|
||
|
do jj=1,10
|
||
|
do l=1,mo_tot_num
|
||
|
do j=1,mo_tot_num
|
||
|
do k=1,mo_tot_num
|
||
|
do i=1,mo_tot_num
|
||
|
ii += 1
|
||
|
call get_mo_bielec_integral(i,j,k,l,mo_integrals_map)
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
call system_clock(cpu1, count_rate, count_max)
|
||
|
cpu = (cpu1 - cpu0)/count_rate
|
||
|
print *, 'loop ikjl : ', cpu/dble(ii)
|
||
|
|
||
|
ii=0
|
||
|
call system_clock(cpu0, count_rate, count_max)
|
||
|
do jj=1,10
|
||
|
do k=1,mo_tot_num
|
||
|
do l=1,mo_tot_num
|
||
|
do j=1,mo_tot_num
|
||
|
do i=1,mo_tot_num
|
||
|
ii += 1
|
||
|
call get_mo_bielec_integral(i,j,k,l,mo_integrals_map)
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
call system_clock(cpu1, count_rate, count_max)
|
||
|
cpu = (cpu1 - cpu0)/count_rate
|
||
|
print *, 'loop ijlk : ', cpu/dble(ii)
|
||
|
|
||
|
ii=0
|
||
|
call system_clock(cpu0, count_rate, count_max)
|
||
|
do jj=1,10
|
||
|
do i=1,mo_tot_num
|
||
|
do j=1,mo_tot_num
|
||
|
do k=1,mo_tot_num
|
||
|
do l=1,mo_tot_num
|
||
|
ii += 1
|
||
|
call get_mo_bielec_integral(i,j,k,l,mo_integrals_map)
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
call system_clock(cpu1, count_rate, count_max)
|
||
|
cpu = (cpu1 - cpu0)/count_rate
|
||
|
print *, 'loop lkji : ', cpu/dble(ii)
|
||
|
|
||
|
ii=0
|
||
|
call system_clock(cpu0, count_rate, count_max)
|
||
|
do jj=1,10
|
||
|
do j=1,mo_tot_num
|
||
|
do i=1,mo_tot_num
|
||
|
do k=1,mo_tot_num
|
||
|
do l=1,mo_tot_num
|
||
|
ii += 1
|
||
|
call get_mo_bielec_integral(i,j,k,l,mo_integrals_map)
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
enddo
|
||
|
call system_clock(cpu1, count_rate, count_max)
|
||
|
cpu = (cpu1 - cpu0)/count_rate
|
||
|
print *, 'loop lkij : ', cpu/dble(ii)
|
||
|
|
||
|
end
|