O estudo foi realizado em uma máquina Silicon Graphics Power Series 4D/480 VGX e os programas foram compilados com o cc sem opção de otimização. A contagem de tempo foi obtida com o uso da chamada times.
Aplicando apenas a transformação de loop interchange, obtemos as 6 possíveis permutações dos 3 loops que implementam a multiplicação de matrizes. Todas estas versões podem ter seus loops externos paralelizados.
Aplicando-se as características deste programa no sistema em desenvolvimento, obtivemos a seguinte saída para o valor do custo da janela de referências:
Tabela 1 - Custo de cada uma das versões do programa em estudo.
versão ijk ikj jik jki kij kji custo 33.155 33.153 263.425 263.429 132.225 132.233E executando-se cada uma das versões em uma máquina real, obtivemos os seguintes tempos de execução em função do número de processadores utilizados. O gráfico 1 resume estes números.
Tabela 2 - Tempo de execução de cada uma das versões do programa em estudo (em seg).
versão x no 1 2 3 4 5 6 7 8 processadores ijk 65.53 33.32 22.29 16.72 13.57 11.40 9.86 8.62 ikj 36.42 18.21 12.19 9.27 7.52 6.39 5.50 4.82 jik 71.45 36.32 24.36 18.42 14.86 13.30 11.68 9.55 jki 151.85 90.93 67.07 60.50 55.38 55.67 52.18 46.62 kij 148.66 78.15 56.17 43.44 38.81 32.84 29.21 24.73 kji 258.54 140.80 105.25 87.04 80.01 72.07 66.41 60.36Comparando os resultados das tabelas 1 e 2 vemos que nosso sistema identificou corretamente a versão ikj como a melhor dentre todas. Mas houve um erro em relação às versões jik/jki e kij/kji. A explicação para isto é o fato das versões kij/kji necessitarem usar mecanismos de exclusão mútua para atualização da matriz produto; isto causado por uma série de dependências de dados existentes nestas versões, o que não há nas outras. Isto causou a estimativa de um valor de custo menor.
Analisando-se a curva de speed-up correspondente (gráfico 2), vemos que a versão ikj é a que apresenta melhores características de escalabilidade.
O gráfico 3 mostra a curva de eficiência, e mais uma vez, a versão ikj é a que possui um melhor aproveitamento dos processadores.
Assim, podemos dizer que a estratégia é funcional, bastando que sejam propostos novos componentes à função custo que englobem os aspectos relacionados à paralelização do programa. Esforços neste sentidos estão sendo conduzidos e novos resultados são esperados em breve.