Multiplicação de matrizes: uma comparação entre as abordagens sequencial (CPU) e paralela (GPU)
Designing problems using matrices is very important in Computer Science. Fields like graph computer, graphs theory, and machine learning use matrices very often to solve their own problems. The most often matrix operation is the multiplication. It may be time-consuming if the matrices to be multiplied are large. For this reason, the parallel computer became a must to tackle this problem. In this report, it is presented a comparison between sequential and parallel approaches to computing the matrix multiplication using CUDA and openMP. The results show the importance of parallelizing mainly when the matrices are large. A modelagem de problemas utilizando matrizes é de extrema importância para Ciência da Computação. Áreas como computação gráfica, grafos e aprendizado de máquina utilizam matrizes com alta frequência para solucionar seus respectivos problemas. Dessa forma, operar matrizes de maneira eficiente é muito importante para o desempenho de algoritmos. Uma das operações de matrizes mais utilizadas é a multiplicação, que se torna um empecilho para o desempenho computacional de algoritmos na medida que o tamanho das matrizes a serem multiplicadas aumentam. Por conta disso, a computação paralela se tornou uma solução padrão para abordar tal problema. Neste trabalho é apresentado uma comparação entre as abordagens sequencial e paralela para multiplicação de matrizes utilizando CUDA e OpenMP. O resultado da análise realizada entre o tamanho da matriz e o desempenho da multiplicação mostra a importância da paralelização principalmente para matrizes de ordem elevada.
READ FULL TEXT