
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.
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.

The
Intel Xeon Phi, which was just branded and officially launched back in
November 2012, is already behind some leading research at one of the
U.S.’s premier scientific computing centers. According to leaders at the
Texas Advanced Computing Center (TACC), the coprocessor has made
significant bounds into a wider array of applications over the last
year.