[petsc-users] Transpose of Block Matrix with aij type
Karl Rupp
rupp at mcs.anl.gov
Wed Apr 24 11:07:11 CDT 2013
Hi Joon,
you're welcome - another idea: if you have just six matrices A1, A2, and
B1-B4, it's worthwhile to compute the result blocks B1A1 + B2A2 and B3A1
+ B4A2 directly into temporary matrices using standard operations and
compose the result into a single matrix. This way you can avoid the more
expensive copies of A1, A2, B1-B4.
Best regards,
Karli
On 04/24/2013 10:45 AM, Joon hee Choi wrote:
> Hi Karli,
>
> Thank you. Actually, B is very huge(more than 10^10) and sparse(about 1% dense). 3x3 and 3x4 matrices were an example. I think I have to set up A again. Anyway, thank you again.
>
> Best regards,
> Joon
>
>
> ----- 원래 메시지 -----
> 보낸 사람: "Karl Rupp" <rupp at mcs.anl.gov>
> 받는 사람: "Choi240" <choi240 at purdue.edu>
> 참조: petsc-users at mcs.anl.gov
> 보낸 시간: 2013년 4월 23일, 화요일 오후 9:39:56
> 제목: Re: [petsc-users] Transpose of Block Matrix with aij type
>
> Hi Joon,
>
> sorry, that was a pretty bad idea (wouldn't even work with square
> matrices in general)
>
> I'm afraid you'll have to set up new matrices A, B with the respective
> entries. For performance reasons you better use a dense format since
> your matrices are so small.
>
> Best regards,
> Karli
>
>
> On 04/23/2013 06:05 PM, Choi240 wrote:
>> Hi,
>>
>> Thank you for your reply. But A1,A2 are not square(3x4). B1~B4 are 3x3
>> matrices. So A1*B1 is not impossible.
>>
>> Best regards,
>> Joon
>>
>>
>>
>>
>> -------- Original message --------
>> Subject: Re: [petsc-users] Transpose of Block Matrix with aij type
>> From: Karl Rupp <rupp at mcs.anl.gov>
>> To: Choi240 <choi240 at purdue.edu>
>> CC: petsc-users at mcs.anl.gov
>>
>>
>> Hi again,
>>
>> if you have control over the structure of B, what about computing
>> [A1 A2] * [B1 B3; B2 B4]
>> instead?
>>
>> Best regards,
>> Karli
>>
>>
>> On 04/23/2013 05:17 PM, Choi240 wrote:
>> > Hi,
>> >
>> > I have to compute multiplication between two block matrices. It should
>> > be as follows:
>> >
>> > B1 | B2 A1 B1A1+B2A2
>> > ---------- * --- = ---------------
>> > B3 | B4 A2 B3A1+B4A2
>> >
>> > However, I just have A = [A1 A2]. So, I need to get A^T. Is there a way
>> > I can get the transpose of this block matrix with the MatTranspose()? Or
>> > do I have to use another function such as MatGetSubMatrices()?
>> >
>> > Thank you,
>> > Joon
>> >
>> >
>> >
>> > -------- Original message --------
>> > Subject: Re: [petsc-users] Transpose of Block Matrix with aij type
>> > From: Karl Rupp <rupp at mcs.anl.gov>
>> > To: petsc-users at mcs.anl.gov
>> > CC: choi240 at purdue.edu
>> >
>> >
>> > Hi,
>> >
>> > why would you expect that the transpose of a 3x8 matrix is not a
>> 8x3-matrix?
>> >
>> > Best regards,
>> > Karli
>> >
>> >
>> > On 04/23/2013 03:27 PM, Joon hee Choi wrote:
>> > > Hello,
>> > >
>> > > I tried to get transpose of block matrix(just with aij type), but the
>> > result was not a block matrix. For example,
>> > >
>> > > A =
>> > > 1 2 3 4 | 4 3 2 1
>> > > 2 3 4 5 | 5 4 3 2
>> > > 3 4 5 6 | 6 5 4 3
>> > >
>> > >
>> > > AT(expected) =
>> > > 1 2 3 4
>> > > 2 3 4 5
>> > > 3 4 5 6
>> > > -------
>> > > 4 3 2 1
>> > > 5 4 3 2
>> > > 6 5 4 3
>> > >
>> > >
>> > > AT(result) =
>> > > 1 2 3
>> > > 2 3 4
>> > > 3 4 5
>> > > 4 5 6
>> > > 4 5 6
>> > > 3 4 5
>> > > 2 3 4
>> > > 1 2 3
>> > >
>> > > If someone knows about this problem, please let me know it.
>> > >
>> > > Thank you
>> > >
>> >
>>
>
More information about the petsc-users
mailing list