- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Hello,
I want to take the sum of a product of two symmetric matrices, meaning that if A and B are symmetric matrices than I want to compute
c=sum(A*B)
where c is a scalar and the multiplication is done element wise. Is there some way to do this by using an MKL routine or is the fastest method using the default compiler commands?
Elad
I want to take the sum of a product of two symmetric matrices, meaning that if A and B are symmetric matrices than I want to compute
c=sum(A*B)
where c is a scalar and the multiplication is done element wise. Is there some way to do this by using an MKL routine or is the fastest method using the default compiler commands?
Elad
1 Lösung
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
It seems to me that you really do not want a matrix product, but the scalar product of two vectors (i.e., 1-D arrays) that happen to be mis-arranged as square matrices. Look up the reshape function in your Fortran manual, so that you can cast the operation that is desired by you into an equivalent scalar product evaluation.
Link kopiert
4 Antworten
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
It seems to me that you really do not want a matrix product, but the scalar product of two vectors (i.e., 1-D arrays) that happen to be mis-arranged as square matrices. Look up the reshape function in your Fortran manual, so that you can cast the operation that is desired by you into an equivalent scalar product evaluation.
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
That seems like a good idea, do you think it will be worth my time to work with 1D arrays (which will make the code very unreadable) or just do a reshape every time (this product will occur a lot of times using matrices which are typically (1024,1024) big, so basically I'm asking if the reshape command is very time consuming)
Elad
Elad
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Is there some routine other than reshape that converts a symmetrical matrix into a packed scheme?
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Anstößigen Inhalt melden
Fortran has always allowed argument association between multidimensional arrays and one-dimensional arrays, as in the example below. Note that this will not work if you use subroutine arguments of assumed shape.
[fortran]program treshape integer A(3,3) data A/11,12,13,21,22,23,31,32,33/ call sub(A,3*3) end program treshape subroutine sub(A,n) integer A(n) write(*,10)(i,A(i),i=1,n) 10 format(I4,2x,I4) return end subroutine sub [/fortran]Converting a dense matrix to packed or banded matrices is straightforward. Read the section on matrix storage schemes in the MKL manual.
Antworten
Themen-Optionen
- RSS-Feed abonnieren
- Thema als neu kennzeichnen
- Thema als gelesen kennzeichnen
- Diesen Thema für aktuellen Benutzer floaten
- Lesezeichen
- Abonnieren
- Drucker-Anzeigeseite