For performance reasons, we cannot directly calculate the offsets, but instead first count the number of conflicts per hash value. Then, we sum these up cumulatively Directly counting the offsets is horrifically slow
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(shared_rhash_t), | intent(inout) | :: | this |
subroutine setup_offsets(this)
class(shared_rhash_t), intent(inout) :: this
integer(int64) :: i
! The first offset stays unchanged
if (iProcIndex_intra == 0) then
do i = 2, this%hval_range + 1
this%hval_offsets%ptr(i) = this%hval_offsets%ptr(i) + this%hval_offsets%ptr(i - 1)
end do
end if
this%t_conflicts_known = .true.
end subroutine setup_offsets