count_conflicts Subroutine

private subroutine count_conflicts(this, indices)

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 Bound

sparse_lMat_t

Arguments

Type IntentOptional Attributes Name
class(sparse_lMat_t), intent(inout) :: this
integer(kind=int64), intent(in) :: indices(:)

Contents

Source Code


Source Code

    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