Os dois casos explicados a seguir foram feitos para TAM = 1000, ou seja, para matrizes de tamanho 1000 x 1000.
PRIMEIRO CASO
Para o primeiro caso, as matrizes a serem multiplicadas (A*B) são definidas como:
DO i=1,TAM
DO j=1,TAM
A(i,j) = i + j
B(i,j) = i + j
END DO
END DO
SEGUNDO CASO
Para o segundo caso, as matrizes a serem multiplicadas (A*B) são definidas como:
DO i=1,TAM
DO j=1,TAM
A(i,j) = i - j
B(i,j) = i + j
END DO
END DO
RESULTADOS
Os resultados estão resumidos no seguinte gráfico:
Para os dois casos estudados, MATMUL foi cerca de 5 vezes mais lento que DGEMM.
CONCLUSÕES
Caso você tenha acesso à biblioteca IMSL, vale a pena gastar um pouco de tempo substituindo a função MATMUL pela DGEMM em todos os seus programas que utilizem multiplicação de matrizes.
Caso não tenha acesso a esta biblioteca, vale a pena ver se há outra subrotina que você possa utilizar no lugar da MATMUL e fazer uma breve comparação entre elas.
Se alguem puder me ajudar... estou com esta questão e não consegui desenrrolar, desde já obrigado!
ResponderExcluirEscrever um programa em Linguagem Fortran capaz de armazenar 48 numeros inteiros em uma matriz de 8 linhas por 6 colunas e outros 48 números reais em uma matriz de 6 linhas por 8 colunas. O programa deverá calcular o produto da segunda matriz pela primeira e mostrar as 3 matrizes devidamente identificadas na tela.