Skip to content

use size_t for buffer sizes and local offsets in P?GEMR2D/P?TRMR2D - #171

Open
alexeytal wants to merge 1 commit into
Reference-ScaLAPACK:masterfrom
alexeytal:redist-64bit-offsets
Open

alexeytal wants to merge 1 commit into
Reference-ScaLAPACK:masterfrom
alexeytal:redist-64bit-offsets

Conversation

@alexeytal

Copy link
Copy Markdown

The redistribution routines compute buffer sizes and local memory offsets in Int. With 32-bit Int these overflow once one process holds more than 2^31 elements, e.g. when an N × N matrix with N > 46340 is gathered onto a single process: memoryblocksize() goes negative (xxmr2d:out of memory), hi[h].lstart * mb->lda wraps (SIGSEGV in buff2block), and a single message above 2 GiB aborts the run without any message. Same pattern as #16 fixed in PBLAS.

The redistribution routines computed buffer sizes and local memory
offsets in Int.  With the default 32-bit Int these overflow as soon as
one process holds more than 2^31 elements, e.g. when an N x N matrix
with N > 46340 is gathered onto a single process, or when the local
column offset times LDA exceeds 2^31 (buff2block segfaults).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant