quinta-feira, 23 de outubro de 2014


1.INTRODUÇÃO
A maioria dos problemas da dinâmica de fluidos são descritos pelas equações de Euler e de Navier-Stokes (Chung, 2010), (Randles et al., 2013). Através do estudo das propriedades dos líquidos e gases é possível determinar diferentes tipos de fenômenos físicos, tais como: simulação de furacões, previsão de tempo, aerodinâmica,aeroacústica e gerenciamento térmico (Batchelor, 2000), (Schepke et al., 2009).
A evolução dos sistemas computacionais tornou possível resolver estes problemas de forma eficiente através de novas técnicas de simulação. Com isso, alguns métodos e algoritmos foram desenvolvidos para simulações numéricas. Normalmente, o domínio de um problema da dinâmica de fluidos é discretizado, gerando um conjunto de equações lineares que é resolvido através de métodos numéricos (Sims et al., 2000). Métodos alternativos, como o Método de Lattice Boltzmann (MLB) foram desenvolvidos para melhorar e simplificar estas etapas.
 
Do ponto de vista computacional, as operações do MLB são essencialmente locais, e o paralelismo do algoritmotorna-se uma alternativa para reduzir o tempo de execução e com isso permitir a simulação de problemas maiores em tempo aceitável. Devido a isso, o MLB constitui a possibilidade de avaliar o Intel Xeon Phi para indicar se o coprocessador é uma boa abordagem para aplicações da dinâmica de fluidos.
 
O Intel Xeon Phi é um dos mais novosmany-core. O coprocessador possui até 61 cores e 244 threads para acelerar códigos altamente paralelos. Esta arquitetura permite o uso de linguagens de programação tradicionais e ferramentas de desenvolvimento padrão. Neste trabalho, investigamos como o coprocessador Intel Xeon Phi poderia impactar no tempo de execução de modelos de fluxo de fluido, considerando duas interfaces de programação paralela.
 
O restante deste artigo está organizado da seguinte forma. A Seção 2 dá uma visão geral do coprocessador Intel Xeon Phi. A Seção 3 apresenta os trabalhos relacionados com o MLB e avaliações anteriores de diversas arquiteturas paralelas. A Seção 4 apresenta detalhes da nossa versão paralela do MLB. Os resultados experimentais são mostrados na Seção 5. Finalmente, a Seção 6 apresenta a conclusão deste trabalho e os trabalhos futuros previstos.
 
2.INTEL XEON PHI
O coprocessador é acoplado ao sistema hospedeiro por meio de uma PCI Express que executa internamente uma distribuição Linux leve (Jeffers e Reinders, 2013).
Interfaces de programação paralela como Intel Cilk Plus e OpenMP (OpenMP) permitem que o desenvolvedor execute a parte intensiva da computação do código na arquitetura desejada. Aplicações programadas em paralelo com tais interfaces podem ser compiladas no sistema local utilizando aflag -mmic que permite que o compilador gere um arquivo executável para arquitetura MIC.
 
        3.TRABALHOS RELACIONADOS
Diversos experimentos têm sido feitos sobre a avaliação comparativa do coprocessador Intel Xeon Phi. A maioria desses trabalhos relatam resultados em aplicações numéricas (Winter et al., 2014), (Vaidyanathan et al., 2014).
No entanto, há poucos trabalhos sobre o MLB para o coprocessador Intel Xeon Phi. Crimi et al. (2013) descreve resultados de experimentos iniciais no protótipo MIC Knights Corner (KNC).
 
4.IMPLEMENTAÇÃO PARALELA
 
Neste trabalho, o Método de Lattice Boltzmann foi implementado em linguagem de programação C.
A estrutura s_properties contém as propriedades físicas, tais como: densidade, aceleração, escala do tempo de relaxação e o diâmetro real simulado usado para o cálculo do número de Reynolds.
A estrutura s_lattice armazena informações a respeito da malha. Nela está definido um vetor descrevendo a posição das barreiras e bordas do fluxo e um vetor onde são armazenadas as informações das propriedades físicas atribuídas a cada um dos pontos da malha.
O laço principal do algoritmo é composto por operações de redistribuição, propagação, condição de contorno e relaxação. Nas subseções seguintes são apresentados detalhes das implementações paralelas do Método de Lattice Boltzmann, destacando cada interface de programação utilizada.
 
4.1 Intel Cilk Plus
O código apresentado na Fig. 1 descreve a paralelização do método usando a interface de programação paralela Intel Cilk Plus.
O laço cilk_for é um substituto para o laço for que permite que iterações sejam executadas em paralelo. Em tempo de execução, o laço cilk_for é convertido em uma função chamada recursivamente utilizando o paradigma dividir para conquistar.
4.2 OpenMP
Nesta versão, as iterações do laço são divididas pelo número de fluxos de execução. As variáveis privadas e compartilhadas são definidas por um construtor padrão. Há barreiras implícitas no fim das construções
#pragma omp parallel for.
O código na Fig. 2 descreve a paralelização do método com essa interface de programação paralela.
 
 
A Fig. 3 mostra os resultados de tempo de execução no Intel Xeon Phi, destacando- se cada interface de programação utilizada e quatro variações de tamanho da malha. Os resultados computacionais foram obtidos a partir da média de 20 execuções, onde o desvio padrão foi menor que 1s.
Em relação às interfaces de programação paralela, OpenMP apresenta um speedup maior, sendo até 33,97% melhor que Cilk, isso se deve às otimizações de cada interface para operações matemáticas e de acesso à memória.
 
 
De modo geral as funções são divididas em dois grupos. As demath-bound são funções que possuem uso intensivo de operações matemáticas e as de memory- bound funções que possuem dependência de dados e grande numero de acessos à memória.
 
 
Intel Cilk Plus apresentou melhor desempenho em funções memory-bound,como as de propagação e condições de contorno, e OpenMP em funções math- bound, as quais nesta aplicação representam a maior parte do tempo de execução.
Avaliou-se o speedup, tempo paralelo dividido pelo tempo sequencial. A Tabela 1 apresenta o speedup de cada interface variando o tamanho da malha. O speedup é em relação à versão sequencial utilizando um core do Intel Xeon E5 (última linha da tabela).
6.CONCLUSÃO E TRABALHOS FUTUROS
Neste trabalho, avaliamos o desempenho das versões paralelas do Método de Lattice Boltzmann executando no coprocessador Xeon Phi. Nossos experimentos mostram que a interface OpenMP otimiza ganhos em funções math-bound e a Cilk mem-bound.
Trabalhos futuros incluem avaliações experimentais do nosso MLB paralelo utilizando a nova interface OpenMP 4. Além disso, a versão tridimensional do MLB será implementada.
 
 
BATCHELOR, G. K. An Introduction to Fluid Dynamics. In: Cambridge university press, 2000.
SCHEPKE, C.; MAILLARD, N.; NAVAUX, P. O. A. Parallel Lattice Boltzmann Method with Blocked Partitioning. International Journal of Parallel Programming, 2009.
SIMS, J. S.; HAGEDORN, J. G; KETCHAM, P. M.; SATTERFIELD, S. G. Accelerating Scientific Discovery Through Computation and Visualization. Journal of
Research of the National Institute of Standards and Technology, 2000.
JEFFERS, J.; REINDERS, J. Intel Xeon Phi Coprocessor High Performance Programming. In: Morgan Kaufmann,2013.
WINTER, F. T.; CLARK, A.; EDWARDS, R. G.; JOO, B. A Framework for Lattice QCD Calculations on GPUs. International
Parallel and Distributed Processing Symposium, 2014.
VAIDYANATHAN, K; PAMNANY, K.; KALAMKAR, D. D.; HEINECKE, A.; SMELYANSKIY, M.; PARK, J.; KIM, A. S. G.; KAUL, B.; JOO, B.; DUBEY, P. Improving Communication Performance and Scalability of Native Applications on Intel Xeon Phi Coprocessor Clusters.
International Parallel and Distributed Processing Symposium, 2014.
CRIMI, G.; MANTOVANI, F.; PIVANTI, M.; SCHIFANO, S.; TRIPICCIONE, R. Early Experience on Porting and Running a Lattice Boltzmann Code on the Xeon-phi Co-Processor.Procedia Computer Science,
2013
 
Agradecimentos
Este trabalho foi financiado pelo PROBIC - FAPERGS / UNIPAMPA. Gostaríamos de agradecer ao Intel Manycore Testing Lab que nos permitiu utilizar os seus sistemas de computação.
REFERÊNCIAS
CHUNG, T. J. Computational fluid dynamics. In: Cambridge university press.
2010.
RANDLES, A. P.; KALE, V.; HAMMOND, J.; GROPP, W.; KAXIRAS, E. Performance Analysis of the Lattice Boltzmann Model beyond Navier-Stokes. Parallel and Distributed Processing, 2013.

Nenhum comentário:

Postar um comentário