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");
44 _blocksize = nentities/_nusedproc;
46 _lastusedrank = _nusedproc-1;
48 if ( myrank < _nusedproc)
62 *start = myrank*_nblocks_pproc*_blocksize;
64 *count = _nblocks_pproc;
67 if ( myrank == _lastusedrank ) {
68 *blocksize = nentities+_blocksize*(1-_nusedproc);
70 *blocksize =_blocksize;
73 *lastusedrank=_lastusedrank;
74 printf(
"My rank %d , start %l , stride %l , blocksize %l , count %l , lastblocksize %l\n",
75 myrank,*start,*stride,*blocksize,*count,*lastblocksize);
81 int *
const lastusedrank,
med_size *
const lastblocksize ) {
83 int _nusedproc = nproc;
84 int _lastusedrank = nproc-1;
85 int _nblocks_pproc = *io_count;
86 int _nblocks = _nblocks_pproc*nproc;
89 if (_nblocks) _blocksize=nentities/_nblocks;
95 for (; (_blocksize < 1) && ( _nblocks_pproc > 1 ) ; ) {
97 _nblocks = _nblocks_pproc*nproc;
98 _blocksize = nentities/_nblocks;
109 if ( _blocksize == 0 ) {
110 MESSAGE(
"Downcasting getCyclicBlocksOfEntities to getContinuousBlocksOfEntities");
112 start, stride, io_count, blocksize, lastusedrank, lastblocksize );
117 *blocksize = _blocksize;
118 *stride = _blocksize*nproc;
119 *start = _blocksize*myrank;
120 *io_count = _nblocks_pproc;
122 if (myrank == _lastusedrank) {
123 *lastblocksize = nentities + _blocksize*(1-nproc*_nblocks_pproc);
126 if ( _nblocks_pproc == 1 ) {*blocksize=*lastblocksize;*lastblocksize=0;}
131 *lastusedrank=_lastusedrank;