sum_vector_int64 Function

private function sum_vector_int64(vector, threaded) result(res)

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in) :: vector(:)
logical, intent(in), optional :: threaded

Return Value integer(kind=int64)


Called by

proc~~sum_vector_int64~~CalledByGraph proc~sum_vector_int64 sum_vector_int64 interface~pic_sum pic_sum interface~pic_sum->proc~sum_vector_int64

Variables

Type Visibility Attributes Name Initial
integer(kind=default_int), private :: i
logical, private :: use_threads

Source Code

   function sum_vector_int64(vector, threaded) result(res)
      integer(int64), intent(in)  :: vector(:)
      logical, intent(in), optional :: threaded
      logical :: use_threads
      integer(int64) :: res
      integer(default_int) :: i
      res = 0_int64
      if (present(threaded)) then
         use_threads = threaded
      else
         use_threads = use_threaded_default
      end if
      if (use_threads) then
         !$omp parallel do private(i) collapse(1) reduction(+:res)
         do i = 1, size(vector, 1)
            res = res + vector(i)
         end do
         !$omp end parallel do
      else
         res = sum(vector)
      end if
   end function sum_vector_int64