Loop through a chunk of indices and count the number of hash conflicts. This is required for setting up the hash table @param[in] indices chunk combined 6-index values for the 6-index integrals
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(sparse_lMat_t), | intent(inout) | :: | this | |||
integer(kind=int64), | intent(in) | :: | indices(:) |
subroutine count_conflicts(this, indices)
class(sparse_lMat_t), intent(inout) :: this
integer(int64), intent(in) :: indices(:)
integer(int64) :: i, total_size
integer(int64), allocatable :: tmp(:)
! Gather all read indices on node-root
call gather_block(indices, tmp)
total_size = size(tmp)
if (iProcIndex_intra == 0) then
do i = 1, total_size
! count_index is not threadsafe => only do it on node-root
if(tmp(i) > 0) call this%htable%count_index(tmp(i))
end do
end if
deallocate(tmp)
end subroutine count_conflicts