@@ -514,7 +514,7 @@ struct UHCache {
514514 // receive maps
515515 std::vector<int > _lRecvSize, _rRecvSize, _lRecvOff, _rRecvOff;
516516 // buffers
517- DDPT::Buffer _recvBuff , _sendLBuff, _sendRBuff;
517+ DDPT::Buffer _recvLBuff, _recvRBuff , _sendLBuff, _sendRBuff;
518518 bool _bufferizeSend, _bufferizeLRecv, _bufferizeRRecv;
519519 // start and sizes for chunks from remotes if copies are needed
520520 int64_t _lTotalRecvSize, _rTotalRecvSize, _lTotalSendSize, _rTotalSendSize;
@@ -531,10 +531,10 @@ struct UHCache {
531531 std::vector<int > &&rSendSize, std::vector<int > &&lSendOff,
532532 std::vector<int > &&rSendOff, std::vector<int > &&lRecvSize,
533533 std::vector<int > &&rRecvSize, std::vector<int > &&lRecvOff,
534- DDPT::Buffer &&recvBuff , DDPT::Buffer &&sendLBuff ,
535- DDPT::Buffer &&sendRBuff, std::vector< int > &&rRecvOff ,
536- bool bufferizeSend , bool bufferizeLRecv , bool bufferizeRRecv ,
537- int64_t lTotalRecvSize, int64_t rTotalRecvSize,
534+ DDPT::Buffer &&recvLBuff , DDPT::Buffer &&recvRBuff ,
535+ DDPT::Buffer &&sendLBuff, DDPT::Buffer &&sendRBuff ,
536+ std::vector< int > &&rRecvOff , bool bufferizeSend , bool bufferizeLRecv ,
537+ bool bufferizeRRecv, int64_t lTotalRecvSize, int64_t rTotalRecvSize,
538538 int64_t lTotalSendSize, int64_t rTotalSendSize)
539539 : _lBufferStart(std::move(lBufferStart)),
540540 _lBufferSize (std::move(lBufferSize)),
@@ -546,11 +546,12 @@ struct UHCache {
546546 _lSendOff(std::move(lSendOff)), _rSendOff(std::move(rSendOff)),
547547 _lRecvSize(std::move(lRecvSize)), _rRecvSize(std::move(rRecvSize)),
548548 _lRecvOff(std::move(lRecvOff)), _rRecvOff(std::move(rRecvOff)),
549- _recvBuff(std::move(recvBuff)), _sendLBuff(std::move(sendLBuff)),
550- _sendRBuff(std::move(sendRBuff)), _bufferizeSend(bufferizeSend),
551- _bufferizeLRecv(bufferizeLRecv), _bufferizeRRecv(bufferizeRRecv),
552- _lTotalRecvSize(lTotalRecvSize), _rTotalRecvSize(rTotalRecvSize),
553- _lTotalSendSize(lTotalSendSize), _rTotalSendSize(rTotalSendSize) {}
549+ _recvLBuff(std::move(recvLBuff)), _recvRBuff(std::move(recvRBuff)),
550+ _sendLBuff(std::move(sendLBuff)), _sendRBuff(std::move(sendRBuff)),
551+ _bufferizeSend(bufferizeSend), _bufferizeLRecv(bufferizeLRecv),
552+ _bufferizeRRecv(bufferizeRRecv), _lTotalRecvSize(lTotalRecvSize),
553+ _rTotalRecvSize(rTotalRecvSize), _lTotalSendSize(lTotalSendSize),
554+ _rTotalSendSize(rTotalSendSize) {}
554555 UHCache &operator =(const UHCache &) = delete ;
555556 UHCache &operator =(UHCache &&) = default ;
556557};
@@ -748,20 +749,22 @@ void *_idtr_update_halo(DDPT::DTypeId ddpttype, int64_t ndims,
748749 }
749750 cache = &(cIt->second );
750751
751- if (cache->_bufferizeLRecv || cache->_bufferizeRRecv ) {
752- cache->_recvBuff .resize (
753- std::max (cache->_lTotalRecvSize , cache->_rTotalRecvSize ) *
754- sizeof_dtype (ddpttype));
752+ auto nbytes = sizeof_dtype (ddpttype);
753+ if (cache->_bufferizeLRecv ) {
754+ cache->_recvLBuff .resize (cache->_lTotalRecvSize * nbytes);
755+ }
756+ if (cache->_bufferizeRRecv ) {
757+ cache->_recvRBuff .resize (cache->_rTotalRecvSize * nbytes);
755758 }
756759 if (cache->_bufferizeSend ) {
757- cache->_sendLBuff .resize (cache->_lTotalSendSize * sizeof_dtype (ddpttype) );
758- cache->_sendRBuff .resize (cache->_rTotalSendSize * sizeof_dtype (ddpttype) );
760+ cache->_sendLBuff .resize (cache->_lTotalSendSize * nbytes );
761+ cache->_sendRBuff .resize (cache->_rTotalSendSize * nbytes );
759762 }
760763
761764 void *lRecvData =
762- cache->_bufferizeLRecv ? cache->_recvBuff .data () : leftHaloData;
765+ cache->_bufferizeLRecv ? cache->_recvLBuff .data () : leftHaloData;
763766 void *rRecvData =
764- cache->_bufferizeRRecv ? cache->_recvBuff .data () : rightHaloData;
767+ cache->_bufferizeRRecv ? cache->_recvRBuff .data () : rightHaloData;
765768 void *lSendData =
766769 cache->_bufferizeSend ? cache->_sendLBuff .data () : ownedData;
767770 void *rSendData =
0 commit comments