Вы находитесь на странице: 1из 6

See

discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/315801969

Implementação da Técnica N-scheme em uma


Arquitetura GPU Massivamente Paralela

Conference Paper · July 2016

CITATIONS READS

0 18

3 authors, including:

Marcelo Grafulha Vanti J.P.A. Bastos


Universidade Regional de Blumenau Federal University of Santa Catarina
16 PUBLICATIONS 63 CITATIONS 88 PUBLICATIONS 1,302 CITATIONS

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Análise e Projeto de Máquinas Elétricas View project

Noise and Vibration of Electrical Machines View project

All content following this page was uploaded by Marcelo Grafulha Vanti on 06 April 2017.

The user has requested enhancement of the downloaded file.


Implementação da Técnica N-scheme em uma
Arquitetura GPU Massivamente Paralela
Leonardo Koch Kewitz João Pedro A. Bastos Marcelo Grafulha Vanti
GRUCAD-EEL, CTC GRUCAD-EEL, CTC Universidade Regional de Blumenau
Universidade Federal de Santa Catarina Universidade Federal de Santa Catarina Blumenau, SC, Brasil
Florianópolis, SC, Brasil Florianópolis, SC, Brasil vanti@furb.br
l.kewitz@posgrad.ufsc.br assumpcao.bastos@ufsc.br

Abstract—This study presents the application of GPU based tas nodais, tratando seus elementos como células que podem
parallel processing for solving 2D Finite Elements electrostatic ser processadas separadamente.
problems using the N-Scheme method. The CUDA programming A motivação principal dessa pesquisa deve-se à crescente
model is used to develop a parallel algorithm for the method.
To circumvent race conditions, a coloring technique is also popularização desses dispositivos e ao fato de que a abordagem
implemented. The algorithm is then benchmarked against a serial do método seja naturalmente aplicável a arquiteturas paralelas.
version processed on the CPU using a speed-up parameter. A
simple case of study is presented which confirms the gain on II. O MÉTODO N-scheme
performance using different meshes and confirms that GPUs can
be used to speed up the calculation. Neste método, o processo de integração e solução são reali-
zados em conjunto, dispensando a necessidade da montagem
I. I NTRODUÇÃO da matriz global de rigidez. Isso resulta em um processo
O método dos elementos finitos (FEM – Finite Element iterativo focado na solução por elemento equivalente à solução
Method) é uma técnica numérica utilizada para encontrar por Gauss-Seidel.
soluções aproximadas de equações diferenciais parciais. Essa Em contraste à implementações tradicionais do FEM, a
técnica é amplamente utilizada na simulação de diversos fenô- implementação desse método é mais simples mas que pelo
menos físicos como fluído-dinâmica e eletromagnetismo. A fato de as matrizes de contribuição não ficarem armazenadas
solução de problemas através do método envolve basicamente em memória, elas devem ser calculadas repetidas vezes, au-
duas operações computacionalmente intensivas: a montagem mentando o seu custo computacional [7].
da matriz global de rigidez e a solução desse sistema de Como mostrado na Fig. 1, seu funcionamento se resume
equações. basicamente a criar células em torno dos nós incógnitas e
Com a crescente complexidade dos problemas resolvidos seguir as seguintes etapas:
através da técnica, o processamento paralelo de alto desem-
1) Para cada célula:
penho vem se tornando uma solução popular para lidar com
esses problemas numéricos [1]–[3]. a) Calcula-se a contribuição de cada elemento ao nó
Neste contexto, as unidades de processamento gráfico (GPU central da célula;
– Graphics Processing Unit) tem evoluído em processadores b) Estima-se o potencial do nó central da célula;
genéricos massivamente paralelos. Esses processadores con- 2) Repete-se atualizando o vetor de potenciais até conver-
tam com uma grande quantidade de núcleos e uma capacidade gir.
de processamento que supera trilhões de operações de ponto- Nota-se que neste caso, além de uma tabela que faça
flutuante por segundo [4]. referência aos nós que cada elemento contém, para realizar a
Isso faz da GPU uma solução ideal para aumentar a ve- etapa a) também se faz necessário a utilização de uma tabela
locidade com que problemas intrinsecamente paralelos são que faça referência aos elementos que cada nó faz parte. Essa
processados, sendo eles gráficos ou não. Outro motivo para tabela pode ser construída da seguinte maneira:
a popularização da computação em GPU foi a criação de
arquiteturas e modelos de programação que facilitam o desen- TABLE I
volvimento dessas aplicações como CUDA (Compute Unified TABELA DE RELAÇÃO N Ó → E LEMENTO
Device Architecture) e OpenCL (Open Computing Language)
[5]. Esses modelos fornecem APIs (Application Programming Nó Elementos
Interface) compatíveis com diversas linguagens de progra- 1 d, e, ...
mação já conhecidas, simplificando o processo de implemen- 2 a, e, ...
tação de algoritmos massivamente paralelos. ... ...
O método N-scheme apresentado em [6] propõe trabalhar 6 a, b, c, d, e
um problema discretizado em FEM diretamente com incógni-
processador serial seguindo a arquitetura von Neumann sendo
x6 extremamente optimizado para execução de operações seriais.
2
1 Durante esta corrida a melhoria no desempenho dos softwares
e decorria principalmente da evolução desse hardware, onde
a
d 3 basicamente, o aumento na sua frequência de operação (clock)
5 c b
4 correspondia à um aumento proporcional no desempenho do
software [5].
No entanto no início dos anos 2000 essa evolução atingiu o
seu limite. Denominada de power wall, esta barreira define
Fig. 1. Exemplo de uma célula do N-scheme. o ponto onde se tornou inviável dissipar o calor gerado
pela CPU, devido a potência de consumo da CPU crescer
proporcionalmente ao seu clock ao cubo [4], [5]. A partir deste
Por exemplo, a Fig. 1 demonstra o funcionamento do momento a industria de semicondutores adotou a estratégia
conceito de uma célula em que os nós são indexados por de evolução multicore, que tem como objetivo manter seu
números e os elementos por letras. Supondo que a indexação desempenho na execução de programas sequenciais enquanto
local dos nós do elemento a siga a sequência global [2, 3, 6] aumenta sua quantidade de núcleos (cores).
o sistema de equação local do elemento seria: Ao mesmo tempo em que as CPUs atingiam seu limite de

a1,1 a1,2 a1,3
   
x2 b2 desempenho por aumento de clock, o poder de processamento
a2,1 a2,2 a2,3  x3  = b3  (1) das unidades de processamento gráfico (GPUs) continuavam
a3,1 a3,2 a3,3 x6 b6 crescendo exponencialmente pois adotavam uma filosofia
diferente em sua evolução. As GPUs, por serem utilizadas
A contribuição do elemento a para seus nós então é obtida basicamente para renderização gráfica, sempre contaram com
por: um desenho focado no processamento massivamente paralelo
a1,1 x2 = b2 − a1,2 x3 − a1,3 x6 (2a) e sua estratégia de evolução many-core sempre baseou-se no
aumento exponencial da quantidade de núcleos de processa-
a2,2 x3 = b3 − a2,1 x2 − a2,3 x6 (2b)
mento.
a3,3 x6 = b6 − a3,1 x2 − a3,2 x3 (2c) Mais especificamente, em uma GPU a mesma instrução é
Com o objetivo de estimar o valor correto de x6 , seria executada no processamento de uma grande quantidade de
necessário somar a contribuição de todos os elementos que dados de forma paralela. A Fig. 2 mostra o impacto dessa
fazem parte de sua célula. Para facilitar a definição da forma filosofia na utilização de seus transístores onde a maioria são
final da equação para a solução de um nó, baseado nas dedicados à unidades de processamento (ALU – Arithmetic
equações anteriores definiremos duas equações auxiliares: Logic Unit). Nessa filosofia a latência no acesso à memória é
ne
compensada pela alta capacidade de processamento e não pela
X utilização de grandes caches de dados. Como o objetivo é a
right_sumn = bn − aen,j xj − aen,l xl (3a)
e
execução da mesma tarefa paralelamente, a demanda por um
ne
X controle de fluxo sofisticado também é sacrificada resultando
diag_sumn = aen,n (3b) na necessidade de um cuidado maior em relação à condições
e de corrida [4], [8].
em que n é o índice global do nó sendo calculado, j e l nós Existem atualmente três grandes fabricantes no mercado de
vizinhos no elemento e e ne é o número de elementos contidos GPUs, sendo essas Intel, NVIDIA e AMD. A Intel predomina
na célula. De forma genérica, a solução de x para o nó n é o mercado dos integrados de baixo-rendimento com sua linha
então obtida por Intel Core de processadores que combinam CPU e GPU
integrados em um mesmo encapsulamento. NVIDIA e AMD
right_sumn disputam no mercado das GPUs discretas (ou dedicadas) de
xn = (4)
diag_sumn alto desempenho, onde no cenário acadêmico e industrial da
Com o objetivo de acelerar a convergência do método, computação de alto desempenho (conhecido como HPC – high
aplica-se a técnica de sobre-relaxação utilizando o fator R ∈ performance computing) a NVIDIA se destaca como principal
]0, 1], alterando a Eq. 4 para fornecedor, e por isso, ganha foco nesse estudo [4].
right_sumn De modo geral as GPUs da NVIDIA utilizam uma mesma
xn = (1 − R)xn + R (5) arquitetura baseada em um conjunto modular de multipro-
diag_sumn
cessadores denominados Streaming Multiprocessors (SMs). A
III. P ROCESSAMENTO PARALELO EM GPU quantidade desses multiprocessadores variam de acordo com
Os microprocessadores baseados em uma única unidade o modelo da placa, o que permite uma escalabilidade de
central de processamento (CPU) lideraram a corrida em busca desempenho por parte do hardware sem a necessidade de
de desempenho e redução de preço no mercado da computação alterações no código fonte do programa.
por mais de duas décadas. A CPU é essencialmente um Cada SM possuí uma quantidade predefinida de núcleos
(a)
ALU ALU
Controle (b)
ALU ALU
(c)

(d)
Cache

M
(e)

A
R
D
DRAM

(a)

Fig. 3. Abstrações de memórias e núcleos: (a) thread (b) bloco de threads;


(c) memória compartilhada de um multiprocessador; (d) grid de blocos; (e)
memória global da GPU.

multiprocessadores do dispositivo.
Um problema deve ser primeiramente subdividido antes de
ser encaminhado ao kernel. O primeiro parâmetro de divisão
informa a quantidade de blocos que serão ordenadamente
distribuídos entre os multiprocessadores do dispositivo. O se-
DRAM gundo parâmetro informa o tamanho de cada bloco composto
por threads. Essas threads são então processadas sequencial-
(b) mente em warps de 32 threads pelo multiprocessador em que
o bloco reside seguindo as instruções do kerel. Isso pode ser
Fig. 2. Diferença na filosofia do desenho de (a) um CPU e (b) uma GPU.
feito seguindo os seguintes passos:
1) Calcular o recurso necessário por thread do kernel.
que variam de acordo com a arquitetura atual da GPU. 2) Calcular quantas threads cabem em um multiproces-
Por exemplo, os multiprocessadores da arquitetura Maxwell sador através da razão entre o recurso necessário obtido
possuem 128 núcleos para operações aritméticas, já a Kepler em (1) pelo recurso disponível em um multiprocessador.
conta com 192 desses núcleos em cada SM. Para facilitar o 3) Arredondar o número de threads por bloco para um
desenvolvimento de programas, essas propriedades são abstraí- número múltiplo de 32 para evitar warps vazias.
das através do modelo de programação CUDA [8]. 4) Obter o número de blocos através da razão entre o
tamanho do problema pelo número de threads que cada
Os núcleos desses multiprocessadores também divergem no
bloco possui.
tipo de operação de pontos flutuante que executam. De modo
geral, a maioria desses núcleos operam em 32 bits, penalizando
o desempenho em operações de dupla precisão. Essa variação IV. I MPLEMENTAÇÃO
de desempenho depende da arquitetura e do modelo da GPU A fim de aumentar o desempenho do método N-Scheme,
sendo utilizada. esse trabalho propõe a utilização de um processador massi-
Um programa desenvolvido em CUDA consiste basicamente vamente paralelo para a solução do sistema. Isso é possível
de um conjunto de rotinas que são executadas na CPU e na em virtude de o método possuir certa granularidade, o que
GPU. Cabe ao programador encontrar as partes do algoritmo significa que sua solução pode ser subdividida em problemas
que apresentam paralelismo e abstraí-las em funções chamadas menores. Como visto anteriormente, cada célula é calculada de
kernels. Além disso também é necessário gerenciar a memória forma independente uma da outra, o que permite implementar
e a troca de dados entre CPU e GPU, uma vez que a GPU esta execução utilizando processamento paralelo.
possui sua própria estrutura de memórias e não possui acesso Embora apresente granularidade, algumas condições es-
direto à RAM do computador. pecíficas devem ser levadas em questão. O primeiro desafio
Quando um kernel é chamado, ele é executado parale- enfrentado ao implementar o N-Scheme deve-se à condição de
lamente por uma grande quantidade de threads nos diver- corrida existente na utilização do método de Gauss-Seidel que
sos multiprocessadores contidos na GPU. Essas threads são requer a utilização de valores atualizados do potencial dos nós
organizadas em uma hierarquia de dois níveis especificada vizinhos. Isso se torna impossível pois tecnicamente todos os
pelo programador e abstraem o agrupamento de núcleos e nós estarão sendo calculados ao mesmo instante.
No entanto, essa condição pode ser contornada utilizando 1: x←0
uma técnica denominada coloring, que consiste em agrupar 2: x ← xboundary
células que não compartilham uma mesma incógnita em gru- 3: i←0
pos e então processá-los sequencialmente. Este agrupamento é 4: while convergence != T rue do
realizado na etapa de pré-processamento, onde lê-se o arquivo 5: for g in groups do . (1)
de malha e organiza-se as informações para então o solver 6: device ← gelements . (2)
calcular a solução em cada nó. Como visto na Fig. 4, o 7: device ← gnodes
algoritmo do solver então é adaptado de forma a conter um 8: for all element in gelements do . (3)
loop à mais que serializa o processamento das cores. 9: → Integrate element
Outro detalhe que necessita de atenção é o gerenciamento 10: end for
de memória na GPU, uma vez que é necessário alocar e copiar 11: for c in colors do . (1)
manualmente os dados necessários para o processamento. A 12: for all node in cunknowns do . (4)
GPU utilizada nos testes (Nvidia GeForce GTX 960) possui 13: diag_sum ← 0
2GB (Giga Bytes) de memória global, o que significa que, 14: right_sum ← 0
dependendo da complexidade e do nível de discretização 15: for element in nodeelements do
utilizada para o problema, a memória disponível pode ser 16: → Add contributions to diag_sum and
insuficiente. right_sum
Primeiramente foi considerada a utilização do método de 17: end for
coloring para sequenciar o processamento em grupos que 18: x(n) ← right_sum right_sum
diag_sum + R ∗ [ diag_sum − x(n)]
ocupem um espaço menor ou igual ao disponível em memória. 19: end for
No entanto foi observado que isso resultava num redundante de 20: end for
elementos, pois apesar de separar os nós incógnitos em grupos 21: end for
distintos acaba-se por criar grupos similares de elementos. 22: → Reevaluate convergence
A solução adotada foi dividir espacialmente o domínio em 23: i←i+1
sub-regiões em o tamanho dos dados referente aos nós e 24: end while
elementos são menores que a memória disponível na GPU
Fig. 4. Algoritmo implementado onde: (1) são os loops realizados na CPU;
e então utilizar o coloring para sequenciar o processamento (2) representa a transferência de dados entre CPU e GPU; (3) é o kernel de
das incógnitas desse grupo. Desta forma é realizada uma integração do elemento; e (4) o kernel de solução de incógnita.
transferência de dados por grupo e c invocações do kernel de
processamento de incógnitas, sendo c o número de cores pre- Va
sentes no grupo. Isso também permite o pré-processamento da
integração dos elementos do grupo uma única vez, eliminando
parte da redundância no processamento de elementos.
V. R ESULTADOS N eumann
Com o objetivo de comparar o desempenho dos algoritmos
propostos foi modelado um problema eletrostático em um
meio homogêneo e isotrópico utilizando a equação de Laplace: Vb
∇2 V = 0 (6)
O domínio L utilizado é um problema clássico da elet- N eumann
rostática e comumente utilizado como exemplo para intro-
Fig. 5. Domínio L utilizado nos testes.
dução do método de elementos finitos. Nele foi aplicado uma
condição de Dirichlet no topo e no final do domínio e condição
de Neumann em suas paredes internas e externas como mostra paralelo proposto. Esse valor corresponde à relação entre o
a Fig. 5. tempo de execução que o algoritmo paralelo apresenta em
As condições de contorno de Dirichlet são impostas fazendo relação ao algoritmo serial. Compreende-se que nenhum outro
com que os nós que pertencem à linha Va e Vb tenham seu parâmetro varia, somente o algoritmo utilizado para realizar o
valor fixo no vetor x do sistema de equações. A condição de processamento. Seu valor é calculado através de
Neumann é naturalmente imposta pelo método e por isso basta
Ts
calcular os nós do limite como qualquer outro nó. Sp = (7)
No domínio proposto foram geradas quatro malhas à fim de Tp
demonstrarem o comportamento do algoritmo para diferentes em que Ts representa o tempo de processamento do algoritmo
graus de liberdade (DOF – degrees of freedom). sequencial e Tp ao tempo do algoritmo paralelo.
O principal procedimento utilizado para validar o estudo A Tabela II mostra a média dos testes realizados para o
foi a comparação do valor de speed-up (Sp ) do algoritmo caso onde o fator de relaxação R = 0.3 e apresenta a relação
TABLE II
R ESULTADOS PARA R = 0.3
3.5
DOF Iterações Tempo CPU Tempo GPU Sp R=0.3
409 579 0.035s 0.995s 0.035 3.0
R=0.6
1606 1646 0.435s 3.182s 0.137
9970 5432 10.086s 13.028s 0.774 2.5
R=0.9
15735 7080 22.006s 18.346s 1.200

Speed-up
39740 11723 152.696s 44.735s 3.413 2.0

TABLE III 1.5


R ESULTADOS PARA R = 0.6
1.0
DOF Iterações Tempo CPU Tempo GPU Sp
409 300 0.018s 0.628s 0.029
0.5
1606 888 0.234s 1.807s 0.130
9970 3147 5.825s 7.635s 0.763
0.0
15735 4164 12.263s 10.880s 1.127 409 1606 9970 15735 39740
39740 7061 92.052s 27.047s 3.403 Graus de Liberdade

TABLE IV Fig. 6. Comportamento do speed-up para diferentes índices R.


R ESULTADOS PARA R = 0.9

DOF Iterações Tempo CPU Tempo GPU Sp que foca no throughput de processamento ao invés da latência
409 105 0.006s 0.343s 0.019 como tradicionalmente fazem as CPUs. A condição de corrida
1606 241 0.063s 0.629s 0.101 enfrentada na implementação do algoritmo pode ser facilmente
9970 1037 1.891s 2.659s 0.711
contornada utilizando a técnica de coloring.
15735 1440 4.256s 3.905s 1.090
O algoritmo proposto demonstrara um ganho significativo
39740 2665 33.467s 10.338s 3.237
de desempenho em comparação à sua versão sequencial em
CPU para o caso-teste apresentado. No entanto, para uma
aplicação prática desta tecnologia apresentar ganhos no de-
entre o tamanho da malha, número de iterações e tempo
sempenho se faz necessário o estudo da arquitetura específica
que os algoritmos sequencial e paralelo levam para processar.
sendo utilizada e sua compatibilidade com detalhes do prob-
As tabelas III e IV apresentam respectivamente as mesmas
lema simulado.
informações para os casos onde R = 0.6 e R = 0.9. Nota-
se o mesmo comportamento em relação à quantidade de nós, R EFERENCES
iterações necessárias e speed-up. [1] I. Kiss, S. Gyimothy, Z. Badics, and J. Pavo, “Parallel realization
O gráfico apresentado na Figura 6 mostra que o fator R of the element-by-element fem technique by cuda,” Magnetics, IEEE
influencia ambos os tempos CPU e GPU, e por isso, o speed-up Transactions on, vol. 48, no. 2, pp. 507–510, Feb 2012.
[2] J. Mamza, P. Makyla, A. Dziekonski, A. Lamecki, and M. Mrozowski,
do algoritmo é pouco afetado. Isso revela que a viabilidade da “Multi-core and multiprocessor implementation of numerical integration
utilização do processamento paralelo depende principalmente in finite element method,” in Microwave Radar and Wireless Communi-
da complexidade do problema em estudo. cations (MIKON), 2012 19th International Conference on, vol. 2, May
2012, pp. 457–461.
VI. C ONCLUSÕES [3] J. Eyng, “Programação paralela aplicada ao método n-scheme para
solução de problemas com o método de elementos finitos,” Ph.D. dis-
Na área de estudo do eletromagnetismo aplicado, o Método sertation, Universidade Federal de Santa Catarina, 2012.
[4] A. R. Brodtkorb, T. R. Hagen, and M. L. SÆtra, “Graphics processing
dos Elementos Finitos se mostrou uma técnica numérica unit (gpu) programming strategies and trends in gpu computing,” Journal
extremamente popular entre as ferramentas utilizadas para of Parallel and Distributed Computing, vol. 73, no. 1, pp. 4 – 13, 2013,
simulação. A necessidade de se utilizar um método que apre- metaheuristics on GPUs.
[5] D. B. Kirk and W. mei W. Hwu, Programming Massively Parallel
sentasse alta granularidade foi notada logo no início do estudo Processors: A Hands-on Approach, 1st ed. Elsevier, 2010.
da arquitetura de processamento paralelo em GPU e assim foi [6] J. P. A. Bastos, “Is it possible to solve a fem static case without assembling
proposto a utilização do N-Scheme para o desenvolvimento and storing an Ax = b matrix system?” International Compumag Society
Newsletter, vol. 16, no. 1, pp. 4 – 10, 2009.
dos algoritmos paralelos. [7] J. P. A. Bastos and N. Sadowski, “A new method to solve 3-d magne-
O método N-Scheme apresenta grandes vantagens para apli- todynamic problems without assembling an system,” Magnetics, IEEE
cação em processamento paralelo em GPUs. Sua abordagem Transactions on, vol. 46, no. 8, pp. 3365 – 3368, 2010.
[8] NVIDIA, CUDA C Programming Guide, NVIDIA Corporation, Março
de processamento por células apresenta um alto nível de gran- 2015.
ularidade além de diminuir a necessidade de armazenamento
de informações em memória. Isso corresponde perfeitamente
com as características da arquitetura de placas de vídeo atual

View publication stats