Simulação de Fluxos de Fluidos no Intel Xeon Phi

July 4, 2017 | Autor: Matheus Serpa | Categoria: Computer Science, Parallel Computing, High Performance Computing
Share Embed


Descrição do Produto

SIMULAÇÃO DE FLUXOS DE FLUIDOS NO INTEL XEON PHI Matheus da Silva Serpa Acadêmico do Curso de Ciência da Computação da UNIPAMPA [email protected]

Claudio Schepke Professor da UNIPAMPA [email protected]

Evaír Borges Severo Acadêmico do Curso de Ciência da Computação da UNIPAMPA [email protected]

Resumo. Uma alternativa para acelerar o desempenho de uma variedade de algoritmos consiste na execução paralela do código. Para isso é necessário reescrevê-lo de forma a expressar o paralelismo. O Intel Xeon Phi é uma nova maneira de atender a esses requisitos e pode ser programado com técnicas convencionais de programação paralela. Neste artigo nós avaliamos o desempenho do coprocessador Intel Xeon Phi, a primeira versão da arquitetura Many Integrated Core (MIC) da Intel. Este artigo considera como estado da arte o Método de Lattice Boltzmann, usado para a simulação de dinâmica de fluidos. Os resultados mostram que a interface de programação paralela OpenMP é superior a Cilk em relação à execução de modelos de dinâmica de fluidos no coprocessador Intel Xeon Phi. Palavras-chave: Intel Xeon Phi, Método de Lattice Boltzmann, Computação de Alto Desempenho. 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 algoritmo torna-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 novos many-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

XXVI CONGRESSO REGIONAL DE INICIAÇÃO CIENTÍFICA E TECNOLÓGICA EM ENGENHARIA – CRICTE 2014 8 a 10 de outubro de 2014 – Alegrete – RS – Brasil

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

XXVI CONGRESSO REGIONAL DE INICIAÇÃO CIENTÍFICA E TECNOLÓGICA EM ENGENHARIA – CRICTE 2014 8 a 10 de outubro de 2014 – Alegrete – RS – Brasil

Figura 1. Paralelização utilizando Intel Cilk Plus.

Figura 2. Paralelização utilizando OpenMP.

5.

RESULTADOS EXPERIMENTAIS

A fim de avaliar as nossas implementações paralelas do MLB executamos um caso de teste, composto por cinco barreiras em um canal quadrado. Nosso objetivo foi avaliar o comportamento dos fluidos e o ganho paralelo utilizando diferentes interfaces de programação. 5.1 Ambiente de Execução Os experimentos foram executados em uma workstation. A workstation possui um Intel Xeon Phi 3120P. Este coprocessador contem 57 cores físicos e permite execução de até 228 threads. Nossas avaliações do MLB foram desenvolvidas de acordo com as interfaces de programação paralela disponíveis. Os experimentos foram executados com 228 threads utilizando Intel Cilk Plus e OpenMP.

A Fig. 3 mostra os resultados de tempo de execução no Intel Xeon Phi, destacandose 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 de math-bound são funções que possuem uso intensivo de operações matemáticas e as de memorybound 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 mathbound, 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.

5.2 Avaliação de desempenho

XXVI CONGRESSO REGIONAL DE INICIAÇÃO CIENTÍFICA E TECNOLÓGICA EM ENGENHARIA – CRICTE 2014 8 a 10 de outubro de 2014 – Alegrete – RS – Brasil

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. Figura 3. Tempo de execução paralelo no Intel Xeon Phi. Tabela 1. Speedup utilizando diferentes interfaces. Interface Cilk OpenMP T. Seq. (s)

456 57,92 87,72 2404,26

Tamanho da Malha M x M 912 1824 3648 80,04 87,32 95.99 93.57 9615,69

89.79 23087,11

97.04 155424,89

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.

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

XXVI CONGRESSO REGIONAL DE INICIAÇÃO CIENTÍFICA E TECNOLÓGICA EM ENGENHARIA – CRICTE 2014 8 a 10 de outubro de 2014 – Alegrete – RS – Brasil

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.