1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
//------------------------------------------------------------------------------
// GB_parition.h: definitions for partitioning an index range
//------------------------------------------------------------------------------
// SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//------------------------------------------------------------------------------
#ifndef GB_PARTITION_H
#define GB_PARTITION_H
// GB_PART and GB_PARTITION: divide the index range 0:n-1 equally
// for nthreads. GB_PART(tid,n,nthreads) is the first index for thread tid.
#define GB_PART(tid,n,nthreads) \
(((tid) * ((double) (n))) / ((double) (nthreads)))
// thread tid will operate on the range k1:(k2-1)
#define GB_PARTITION(k1,k2,n,tid,nthreads) \
k1 = ((tid) == 0 ) ? 0 : GB_PART ((tid), n, nthreads) ; \
k2 = ((tid) == (nthreads)-1) ? (n) : GB_PART ((tid)+1,n, nthreads)
#endif
|