29 int *
const lastusedrank,
med_size *
const lastblocksize ) {
31 int _nusedproc = nproc;
32 int _lastusedrank = 0;
33 med_size _blocksize = nentities/nproc;
35 int _nblocks_pproc = 0;
41 for (; (_blocksize < 1) && ( _nusedproc > 1 ) ; ) {
42 SSCRUTE(
"NOT USING ALL PROCESS");
45 _blocksize = nentities/_nusedproc;
47 _lastusedrank = _nusedproc-1;
49 if ( myrank < _nusedproc)
63 *start = myrank*_nblocks_pproc*_blocksize;
65 *count = _nblocks_pproc;
68 if ( myrank == _lastusedrank ) {
69 *blocksize = nentities+_blocksize*(1-_nusedproc);
71 *blocksize =_blocksize;
74 *lastusedrank=_lastusedrank;
75 printf(
"My rank %d , start %lld , stride %lld , blocksize %lld , count %lld , lastblocksize %lld\n",
76 myrank,*start,*stride,*blocksize,*count,*lastblocksize);
83 int *
const lastusedrank ,
med_size *
const lastblocksize ) {
86 int _lastusedrank = nproc-1;
87 int _nblocks_pproc = *io_count;
88 int _nblocks = _nblocks_pproc*nproc;
91 if (_nblocks) _blocksize=nentities/_nblocks;
97 for (; (_blocksize < 1) && ( _nblocks_pproc > 1 ) ; ) {
99 _nblocks = _nblocks_pproc*nproc;
100 _blocksize = nentities/_nblocks;
111 if ( _blocksize == 0 ) {
112 MESSAGE(
"Downcasting getCyclicBlocksOfEntities to getContinuousBlocksOfEntities");
114 start, stride, io_count, blocksize, lastusedrank, lastblocksize );
119 *blocksize = _blocksize;
120 *stride = _blocksize*nproc;
121 *start = _blocksize*myrank;
122 *io_count = _nblocks_pproc;
124 if (myrank == _lastusedrank) {
125 *lastblocksize = nentities + _blocksize*(1-nproc*_nblocks_pproc);
128 if ( _nblocks_pproc == 1 ) {*blocksize=*lastblocksize;*lastblocksize=0;}
133 *lastusedrank=_lastusedrank;