Artigo
Multiplica¸ca˜o de Matrizes em CUDA
Luciano Garim
17 de junho de 2015
Durante anos o uso de microprocessadores com uma unidade central de processamento evoluiu muito em quest˜ ao de desempenho. A expans˜ ao e o crescimento no mercado desses microprocessadores permitiu que os computadores fossem mais acess´ıveis ` a usu´ arios comuns. Atualmente, ´e normal vocˆe ter em sua casa um computador ou notebook, e estas m´ aquinas permitem que vocˆe acesse a internet, transmita dados, jogue jogos, crie programas, entre outras funcionalidades. Mas assim como todos os mercados, o de microprocessadores n˜ao ´e diferente, os usu´arios querem cada vez mais desempenho e benef´ıcios.
Uma maneira para tentar aumentar o desempenho de um computador pode ser feito por meio de modifica¸c˜ oes no hardware, por exemplo, no processador. E foi isto o que aconteceu at´e meados do ano de 2003, ap´os isto tornava-se imposs´ıvel, por exemplo, aumentar a frequˆencia de clock em uma CPU, devido ao alto consumo de energia. Praticamente, todos os fabricantes de microprocessador passaram para modelos em que v´arias unidades de processamento, conhecidas como n´ ucleos, s˜ ao usadas em cada chip para aumentar o poder de processamento. Essa mudan¸ca exerceu um impacto tremendo sobre a comunidade de desenvolvimento de software [Sutter, 2005].
Tratando-se de software, v´ arios programas de computador s˜ao escritos de forma sequencial e executados dessa maneira, e isso leva a qualquer pessoa a pensar que conforme acontece um avan¸co de desempenho nos processadores, diminui o tempo de execu¸c˜ ao do programa. Na verdade isso n˜ao acontece, pois, um programa s´o ir´a rodar em um n´ ucleo, o que n˜ ao mudar´ a muito em quest˜ ao de desempenho. Uma solu¸c˜ao para este problema consiste em escrever programas que possam ser executados em paralelo, assim v´arios threads podem ser executados ao mesmo tempo independentemente. Deste modo, o mercado de microprocessadores atual conta com