mirror of
https://github.com/QuantumPackage/qp2.git
synced 2024-12-22 20:34:58 +01:00
Disk-based cholesky OK
This commit is contained in:
parent
2241096a64
commit
6ae162b6c9
@ -66,6 +66,10 @@ END_PROVIDER
|
|||||||
integer :: fd(2)
|
integer :: fd(2)
|
||||||
logical :: delta_on_disk
|
logical :: delta_on_disk
|
||||||
|
|
||||||
|
PROVIDE nproc
|
||||||
|
PROVIDE nucl_coord ao_two_e_integral_schwartz
|
||||||
|
call set_multiple_levels_omp(.False.)
|
||||||
|
|
||||||
call wall_time(wall0)
|
call wall_time(wall0)
|
||||||
|
|
||||||
! Will be reallocated at the end
|
! Will be reallocated at the end
|
||||||
@ -87,7 +91,7 @@ END_PROVIDER
|
|||||||
|
|
||||||
call resident_memory(mem0)
|
call resident_memory(mem0)
|
||||||
|
|
||||||
rank_max = min(ndim8,274877906944_8/1_8/ndim8)
|
rank_max = min(ndim8,(qp_max_mem*1024_8*1024_8*1024_8/8_8)/ndim8)
|
||||||
call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1))
|
call mmap(trim(ezfio_work_dir)//'cholesky_ao_tmp', (/ ndim8, rank_max /), 8, fd(1), .False., .True., c_pointer(1))
|
||||||
call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /))
|
call c_f_pointer(c_pointer(1), L, (/ ndim8, rank_max /))
|
||||||
! Deleting the file while it is open makes the file invisible on the filesystem,
|
! Deleting the file while it is open makes the file invisible on the filesystem,
|
||||||
@ -209,7 +213,7 @@ END_PROVIDER
|
|||||||
+ np*memory_of_double(nq)
|
+ np*memory_of_double(nq)
|
||||||
|
|
||||||
!print *, 'mem = ', mem
|
!print *, 'mem = ', mem
|
||||||
if (mem > 300.d0) then ! 300GB max for Delta
|
if (mem > qp_max_mem/2) then
|
||||||
s = s*2.d0
|
s = s*2.d0
|
||||||
else
|
else
|
||||||
exit
|
exit
|
||||||
@ -234,6 +238,9 @@ END_PROVIDER
|
|||||||
mem = mem0 &
|
mem = mem0 &
|
||||||
+ memory_of_int(nq) &! computed(nq)
|
+ memory_of_int(nq) &! computed(nq)
|
||||||
+ np*memory_of_int(nq) &! computed(nq)
|
+ np*memory_of_int(nq) &! computed(nq)
|
||||||
|
+ memory_of_double(np) &! Delta_col(np)
|
||||||
|
+ 7*memory_of_double(ndim8) &! D, Lset, Dset, D_sorted, addr[1-3]
|
||||||
|
+ np*memory_of_double(nq) &! Delta(np,nq)
|
||||||
+ (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size)
|
+ (np+nq)*memory_of_double(block_size) ! Ltmp_p(np,block_size) + Ltmp_q(nq,block_size)
|
||||||
|
|
||||||
if (mem > qp_max_mem) then
|
if (mem > qp_max_mem) then
|
||||||
|
@ -49,10 +49,9 @@ void* mmap_fortran(char* filename, size_t bytes, int* file_descr, int read_only,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (single_node == 1) {
|
if (single_node == 1) {
|
||||||
map = mmap(NULL, bytes, PROT_READ | PROT_WRITE,
|
map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_POPULATE | MAP_NONBLOCK, fd, 0);
|
||||||
MAP_PRIVATE | MAP_HUGETLB , fd, 0);
|
|
||||||
} else {
|
} else {
|
||||||
map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_HUGETLB, fd, 0);
|
map = mmap(NULL, bytes, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,9 +46,9 @@ module mmap_module
|
|||||||
type(c_ptr), intent(out) :: map ! C Pointer
|
type(c_ptr), intent(out) :: map ! C Pointer
|
||||||
|
|
||||||
integer(c_size_t) :: length
|
integer(c_size_t) :: length
|
||||||
integer(c_int) :: fd_
|
integer(c_int) :: fd_, read_only_, single_node_
|
||||||
|
|
||||||
integer :: i, read_only_, single_node_
|
integer :: i
|
||||||
|
|
||||||
read_only_ = 0
|
read_only_ = 0
|
||||||
single_node_ = 0
|
single_node_ = 0
|
||||||
@ -60,7 +60,7 @@ module mmap_module
|
|||||||
length = length * shape(i)
|
length = length * shape(i)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
map = c_mmap_fortran( trim(filename)//char(0), length, fd_, read_only, single_node)
|
map = c_mmap_fortran( trim(filename)//char(0), length, fd_, read_only_, single_node_)
|
||||||
fd = fd_
|
fd = fd_
|
||||||
end subroutine
|
end subroutine
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user