• Nenhum resultado encontrado

Usando o benchmark Rodinia para comparação de OpenCL e OpenMP em aplicações paralelas no coprocessador Intel Xeon Phi

N/A
N/A
Protected

Academic year: 2021

Share "Usando o benchmark Rodinia para comparação de OpenCL e OpenMP em aplicações paralelas no coprocessador Intel Xeon Phi"

Copied!
6
0
0

Texto

(1)

Usando o benchmark Rodinia para comparac¸˜ao de

OpenCL e OpenMP em aplicac¸˜oes paralelas

no coprocessador Intel Xeon Phi

Leonardo Tavares Oliveira1, Ricardo Menotti1

1Departamento de Computac¸˜ao – Universidade Federal de S˜ao Carlos (UFSCar)

Caixa Postal 676 – 13.565-905 – S˜ao Carlos – SP – Brazil

{628174@comp, menotti@dc}.ufscar.br

Abstract. The use of accelerators has become popular in HPC, being present in several of the computers in the Top 500. Among them, the Intel Xeon Phi copro-cessor stands out due to its large number of cores and use of x86 architecture, allowing an easier writing and adaptation of codes for use with the coproces-sor. This paper uses the Rodinia benchmark to compare 3 different ways of pro-gramming parallel, two using the OpenMP library and one using the OpenCL language. By testing different number and types of thread affinity, one can see the non-uniformity of scalability, as well as the influence of overhead on codes with a small number of iterations.

Resumo. O uso de aceleradores vem se popularizando em HPC, estando pre-sentes em diversos dos computadores prepre-sentes na Top 500. Dentre eles o copro-cessador Intel Xeon Phi se destaca devido `a sua grande quantidade de n´ucleos e arquitetura x86, permitindo maior facilidade para escrita e adaptac¸˜ao de c´odigos para uso com o coprocessador. Esse trabalho utiliza o benchmark Rodi-nia para comparar 3 formas diferentes de utilizar programac¸˜ao paralela, sendo duas usando a biblioteca OpenMP e uma utilizando a linguagem OpenCL. Por meio do teste de diferente n´umero e tipo de afinidade de threads, ´e poss´ıvel ver a n˜ao uniformidade de escalabilidade, assim como a influˆencia do overhead em c´odigos com um n´umero pequeno de iterac¸˜oes.

1. Introduc¸˜ao

Com o avanc¸o da Computac¸˜ao de Alto Desempenho (HPC1) surgiram diversas bibliotecas

e linguagens para a otimizac¸˜ao e aumento de produtividade para a programac¸˜ao paralela. Dentro desse contexto, destacam-se a biblioteca OpenMP e a linguagem OpenCL, pos-suindo diferentes formas e modelos de programac¸˜ao. O OpenMP ´e focado na criac¸˜ao e uso de threads em CPUs, j´a o OpenCL no uso de hierarquia de mem´oria em GPUs e aceleradores por meio de kernels.

A partir dessa realidade, este trabalho busca realizar a comparac¸˜ao de trˆes algo-ritmos com caracter´ısticas diferentes em trˆes modelos distintos de execuc¸˜ao, sendo os dois primeiros usando OpenMP: Somente CPU, Offload para acelerador e OpenCL. A organizac¸˜ao do restante deste artigo ´e descrita a seguir.

(2)

Na Sec¸˜ao 2 s˜ao apresentados trabalhos relacionados da ´area. Na Sec¸˜ao 3 ´e des-crito o benchmark utilizado nesse artigo, assim como o procedimento para escolha dos algoritmos a serem testados. Na Sec¸˜ao 4 s˜ao expostos os resultados experimentais obti-dos por meio do benchmark. Na Sec¸˜ao 5 s˜ao apresentadas as conclus˜oes desse trabalho, juntamente com propostas para futuros trabalhos.

2. Trabalhos Relacionados

[Misra et al. 2013] realizam uma an´alise de dois algoritmos presentes no benchmark Ro-dinia, ambos implementados em OpenMP, rodando-os e comparando o resultado em trˆes formas diferentes: Somente CPU, Nativo e Offload. Chegando `a conclus˜ao que para nem todas as aplicac¸˜oes o uso de offload ´e vi´avel, devido principalmente ao overhead causado pela transferˆencia de dados pela PCIe.

Em [Ramachandran et al. 2013] os autores utilizam o coprocessador para acelerar c´odigos da NASA Advanced Supercomputing Division. O c´odigo ´e executado somente em modo nativo, removendo o problema do overhead causado pela passagem de dados pelo barramento PCIe, permitindo o foco em aspectos diferentes para otimizac¸˜ao.

N˜ao pudemos, entretanto, encontrar artigos que utilizassem o coprocessador In-tel Xeon Phi para um benchmark com OpenCL. O mais pr´oximo a essa situac¸˜ao ´e em [Memeti et al. 2017], onde dois computadores, um deles utilizando a GPU GTX Titan X e o outro com um coprocessador Intel Xeon Phi, rodam vers˜oes em OpenCL e CUDA (no primeiro) e vers˜oes em OpenMP (no segundo), n˜ao possuindo assim dados do desempe-nho dos algoritmos em OpenCL com o coprocessador.

Esta carˆencia de artigos que utilizam OpenCL com a Intel Xeon Phi pode ser atribu´ıda principalmente ao enfoque do OpenCL ser para uso em GPUs e aceleradores (como FPGAs). Este fato demonstra uma carˆencia e necessidade de analisar a viabilidade do uso de OpenCL em uma arquitetura como a x86 (presente no coprocessador Intel Xeon Phi).

3. Benchmark Rodinia

O Rodinia Benchmark Suite foi criado pela University of Virginia com o intuito de ajudar arquitetos de sistemas e programadores a testar e comparar hardware paralelo com diver-sos tipos de algoritmos computacionalmente intensivos [Che et al. 2009]. Atualmente o Rodinia est´a na sua vers˜ao 3.1 possuindo 23 algoritmos implementados em CUDA, sendo 22 desses algoritmos implementados em OpenCL e 19 em OpenMP.

Devido `a n˜ao uniformidade de vers˜oes dispon´ıveis, foi necess´aria uma an´alise pr´evia dos algoritmos, selecionando os que possuiam implementac¸˜ao em ambos OpenMP e OpenCL. Posteriormente, foram escolhidas as implementac¸˜oes em OpenMP que pos-suiam vers˜oes com a opc¸˜ao de offload para o coprocesssador, e por fim, implementac¸˜oes que utilizam arquivos externos como fonte de dados, de forma a garantir a uniformidade dos c´alculos.

4. Resultados experimentais

Escolhidos os algoritmos CFD, NW e HotSpot, foi realizado o teste de afinidade de th-reads em cada um dos benchmarks, buscando encontrar o melhor tipo de afinidade jun-tamente com o melhor n´umero de threads por n´ucleo. Foi utilizado um computador com

(3)

Processador IntelR XeonR E5-1607 v3 (4 cores, 3.1 GHz, 10 Mb Cache), Linux

Cen-tOS 7.1.1503 x86 64, 8 GB DDR4 2133 MHz, HD 500GB SATA (7200 RPM) e um Coprocessador IntelR Xeon PhiTM3210A.

A biblioteca IntelR OpenMP* permite a variac¸˜ao do numero de threads e tipo

de afinidade por meio da alterac¸˜ao de vari´aveis de ambiente. O Intel Xeon Phi possui 3 tipos de afinidade de threads, sendo eles balanced, compact e scatter. Cada m´etodo distribui os threads de forma diferente, permitindo que haja a concentrac¸˜ao de threads consecutivos em um mesmo n´ucleo (compact) ou espalhando-os entre os n´ucleos (scat-ter) [Reinders 2013].

Para compilac¸˜ao dos programas em todas as formas (CPU, Offload e OpenCL) fo-ram adaptados os arquivos de Makefile de forma a utilizarem o compilador da Intel (ICC). Utilizando as configurac¸˜oes padr˜oes do arquivo ./run dos benchmarks foram realizados 10 testes para cada tipo de afinidade e n´umero de threads por n´ucleo, utilizando um intervalo de confianc¸a de 99.5%. 1 2 3 4 0.25 0.5 0.75 1 N´umero de Threads Tempo (s) Scatter Compact Balanced

(a) Afinidade de threads no NW

1 2 3 4 0 0.2 0.4 0.6 N´umero de Threads Tempo (s) Scatter Compact Balanced

(b) Afinidade de threads no HotSpot

1 2 3 4 0 20 40 60 80 N´umero de Threads Tempo (s) Scatter Compact Balanced (c) Afinidade de threads no CFD Figura 1: Teste de afinidade de threads

(4)

A Figura 1 ilustra o resultado da execuc¸˜ao dos trˆes algor´ıtmos. ´E poss´ıvel perceber que nas Figuras 1a e 1b, referentes respectivamente aos algoritmos Needleman-Wunsch (do dom´ınio da bioinform´atica e que utiliza de conceitos de programac¸˜ao dinˆamica) e HotSpot (do dom´ınio das simulac¸˜oes f´ısicas e que utiliza de structured grids), n˜ao houve boa escalabilidade do c´odigo devido ao n´umero baixo de iterac¸˜oes no algoritmo, gerando resultados piores para quanto mais threads por n´ucleo, causados pelo tempo e recursos gastos com a criac¸˜ao e gerenciamento de threads.

Por outro lado, a Figura 1c, referente ao algoritmo CFD Solver (pertencente ao dom´ınio da dinˆamica de flu´ıdos e que utiliza de unstructured grids para resoluc¸˜ao de equac¸˜oes de Euler) possuiu alto grau de escalabilidade, resultando em uma relac¸˜ao de aumento de performance no aumento do n´umero de threads.

Tendo como base os dados conseguidos por meio dos benchmarks utilizados e fazendo uso do mesmo n´umero de iterac¸˜oes e dos mesmos arquivos para entrada de dados, foi gerada a Figura 2 com o eixo de Tempo (s) representado de forma lo-gar´ıtmica. Para a execuc¸˜ao de c´odigos em OpenCL com o Xeon Phi foi necess´aria a alterac¸˜ao de todas as ocorrˆencias de CL DEVICE TYPE GPU nos c´odigos para CL DEVICE TYPE ACCELERATOR, permitindo assim a utilizac¸˜ao do coprocessador.

NW HotSpot CFD 10 2 10 1 100 101 Tempo (s) CPU Offload OpenCL

Figura 2: Melhores tempos de execuc¸˜ao dos algoritmos

As barras azuis representam os tempos gastos para a execuc¸˜ao dos algoritmos utilizando a vers˜ao OpenMP, por´em executando apenas na CPU. As barras vermelhas uti-lizam a mesma metodologia descrita anteriormente, contudo fazem uso do coprocessador por meio de offload. As barras verdes representam a utilizac¸˜ao do coprocessador por meio da linguagem OpenCL.

´E poss´ıvel notar que para algoritmos com baixa escalabilidade para n´umero pe-queno de iterac¸˜oes, como o NW e HotSpot, somente o uso da CPU se mostrou bastante favor´avel, obtendo bons resultados em ambos os casos, enquanto que houveram

(5)

resulta-dos inst´aveis para OpenCL e resultaresulta-dos ruins para Offload. Por outro lado, no algoritmo com maior escalabilidade (CFD) o uso de OpenCL e offload mostraram-se favor´aveis, chegando a uma melhoria de desempenho de aproximadamente 300% e 237%, respecti-vamente.

Por fim, devido `a m´a escalabilidade e facilidade em alterar o n´umero de iterac¸˜oes (por meio da alterac¸˜ao do arquivo ./run), foi realizada a comparac¸˜ao do tempo de execuc¸˜ao por iterac¸˜oes no HotSpot, utilizando o n´umero de threads e tipo de afinidade ´otimo de-terminado empiricamente na Figura 1b, foi gerado o gr´afico da Figura 3. O valor padr˜ao de iterac¸˜oes para este algoritmo ´e de duas iterac¸˜oes (dessa forma, o primeiro ponto no gr´afico possui os mesmos valores de tempo da Figura 1b para o HotSpot), aumentando exponencialmente esse valor por um fator de 10.

100 101 102 103 104 105 10 2 10 1 100 101 102 N´umero de iterac¸˜oes Tempo(s) CPU Offload OpenCL

Figura 3: Tempo por iterac¸ ˜oes no HotSpot

´E poss´ıvel notar a melhoria de desempenho da t´ecnica de offload utilizando OpenMP para um n´umero alto de iterac¸˜oes, causando a reduc¸˜ao do overhead derivado do uso da porta PCIe para a passagem de dados. Para valores altos de iterac¸˜oes o tempo de execuc¸˜ao do m´etodo de offload torna-se linear, obtendo melhores resultados que o uso de OpenCL ou somente CPU.

5. Conclus˜ao

Com base nos resultados ´e poss´ıvel notar a viabilidade de utilizar c´odigos escritos em OpenCL com o Xeon Phi, necessitando de poucas alterac¸˜oes para adaptar o programa. Apesar de ser uma linguagem que utiliza de conceitos e recursos de baixo n´ıvel, os al-goritmos testados em OpenCL n˜ao obtiveram resultados suficientemente bons quando comparados com OpenMP, principalmente dado um n´umero de iterac¸˜oes alto, como visto na Figura 1b, de forma a justificar uma reescrita de c´odigos em C e C++ com uso de OpenMP para OpenCL.

(6)

Al´em disso, a utilizac¸˜ao de trˆes algoritmos de dom´ınios diferentes se mostrou im-portante de forma a demonstrar que n˜ao h´a uma correlac¸˜ao direta entre maior n´umero de threads e melhor desempenho, conforme visto nas Figuras 1a e 1b. Contudo, em algo-ritmos com alta escalabilidade (Figura 1c), o alto n´umero de cores (e consequentemente threads) do Xeon Phi gera resultados ´otimos, com acelerac¸˜ao de aproximadamente 300% em tempo de execuc¸˜ao. Em todos os casos, a afinidade balanced se provou a melhor opc¸˜ao, obtendo na m´edia o melhor desempenho.

Por fim, conforme exposto na Figura 1b, ´e poss´ıvel notar que h´a um overhead causado pelo uso do barramento PCIe para transferˆencia de dados para o coprocessador. O tempo de execuc¸˜ao se mant´em praticamente est´avel entre 2 e 2000 iterac¸˜oes, somente obtendo crescimento linear a partir de 20000 iterac¸˜oes, chegando assim `a superac¸˜ao do tempo de overhead. Desta forma, pode-se concluir que o uso da t´ecnica de offload utili-zando o coprocessador s´o ´e vi´avel para um n´umero suficientemente grande de iterac¸˜oes, dando preferˆencia para o uso de somente a CPU nos outros casos.

Os resultados obtidos neste artigo abrem espac¸o para a realizac¸˜ao de futuros tra-balhos buscando maior paralelizac¸˜ao, escalabilidade e reduc¸˜ao de overhead nos c´odigos em OpenMP que utilizam do offload para o coprocessador, assim como otimizac¸˜ao de kernels e de parˆametros nos c´odigos em OpenCL.

Referˆencias

Che, S., Boyer, M., Meng, J., Tarjan, D., Sheaffer, J. W., Lee, S.-H., and Skadron, K. (2009). Rodinia: A benchmark suite for heterogeneous computing. In Workload Cha-racterization, 2009. IISWC 2009. IEEE International Symposium on, pages 44–54. Ieee.

Memeti, S., Li, L., Pllana, S., Kolodziej, J., and Kessler, C. (2017). Benchmarking opencl, openacc, openmp, and cuda: programming productivity, performance, and energy con-sumption. arXiv preprint arXiv:1704.05316.

Misra, G., Kurkure, N., Das, A., Valmiki, M., Das, S., and Gupta, A. (2013). Evaluation of rodinia codes on intel xeon phi. In Intelligent Systems Modelling & Simulation (ISMS), 2013 4th International Conference on, pages 415–419. IEEE.

Ramachandran, A., Vienne, J., Wijngaart, R. V. D., Koesterke, L., and Sharapov, I. (2013). Performance evaluation of nas parallel benchmarks on intel xeon phi. In 2013 42nd International Conference on Parallel Processing, pages 736–743.

Reinders, J. J. . J. (2013). Intel Xeon Phi Coprocessor High Performance Programming. Morgan Kaufmann Publishers Inc., Boston, MA, USA.

Referências

Documentos relacionados

29 Table 3 – Ability of the Berg Balance Scale (BBS), Balance Evaluation Systems Test (BESTest), Mini-BESTest and Brief-BESTest 586. to identify fall

A direção dos Serviços Farmacêuticos Hospitalares (SFH) fica sempre a cargo de um farmacêutico. São várias as funções desempenhadas pelo FH no decorrer da sua atividade

13 Assim, a primeira fase no momento da dispensa de um MSRM é a validação da receita, por isso, independentemente do modo de disponibilização da prescrição, a receita

Os principais objectivos definidos foram a observação e realização dos procedimentos nas diferentes vertentes de atividade do cirurgião, aplicação correta da terminologia cirúrgica,

psicológicos, sociais e ambientais. Assim podemos observar que é de extrema importância a QV e a PS andarem juntas, pois não adianta ter uma meta de promoção de saúde se

Embora acreditemos não ser esse o critério mais adequado para a seleção dos professores de Sociologia (ou de qualquer outra disciplina), cabe ressaltar que o Conselho

Porém, a partir dos meados do século XIV, e até antes para algumas regiões como o Baixo-Alentejo ou o concelho de Santarém, medidas defensivas, procurando conservar as matas para

No presente estudo, catorze animais (34,15%) apresentavam algum tipo de parentesco procedente de oito diferentes propriedades rurais (26,66%), ora relacionado à vaca, ora ao touro,