setup_offsets Subroutine

private subroutine setup_offsets(this)

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 Bound



Type IntentOptional Attributes Name
class(shared_rhash_t), intent(inout) :: this


Source Code

Source Code

    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