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