LLD_A for processes with empty submatrices

Open discussion regarding features, bugs, issues, vendors, etc.

LLD_A for processes with empty submatrices

Postby nknight » Tue Apr 15, 2014 12:42 pm

The ScaLAPACK Users' Guide

http://www.netlib.org/scalapack/slug/node77.html

requires that the LLD_A array descriptor entry satisfies

LLD_A >= max(1, LOC_r(M_A)) .

However, LOC_r(M_A) = 0 is possible: suppose

M_A <= (P_r - 1) * MB_A .

Then, some process rows have no entries of A.

Why must I set LLD_A = 1 on these processes? And, do I have to allocate an empty row?

Thanks,
Nick Knight
nknight
 
Posts: 3
Joined: Thu Mar 27, 2014 2:36 pm

Re: LLD_A for processes with empty submatrices

Postby Julien Langou » Tue Apr 15, 2014 12:57 pm

Hi Nick,

You could ask the same question for LAPACK. If A is M-by-N, then LAPACK requires that LDA (the leading dimension of the array for A) is at least 1 indeed. Even if M=0.
This comes from Fortran and the declaration of A has an assumed size array of the form A(LDA,*).

Cheers,
Julien.
Julien Langou
 
Posts: 747
Joined: Thu Dec 09, 2004 12:32 pm
Location: Denver, CO, USA

Re: LLD_A for processes with empty submatrices

Postby nknight » Tue Apr 15, 2014 1:20 pm

Ah, I never noticed this about LAPACK, thank you for pointing this out.

It seems that zero-sized arrays were introduced in Fortran 90, although I don't know offhand if this works in assumed-size array declarations like A(LDA,*).

To clarify your response (in the context of ScaLAPACK): I do not need to allocate memory for local submatrix storage if NUMROC returns 0 for either the number of (local) rows or columns, correct?

Thanks again for your help, --Nick Knight
nknight
 
Posts: 3
Joined: Thu Mar 27, 2014 2:36 pm


Return to User Discussion

Who is online

Users browsing this forum: mindriders, Yahoo [Bot] and 1 guest