Escolar Documentos
Profissional Documentos
Cultura Documentos
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
Pergunta: Como escolher os SUMRIO EXECUTIVO modelos de programao ideais e Com a transio do mecanismo primrio para ganhos de desempenho de velocidade do clock para recursos as ferramentas que aumentam o como mltiplos ncleos, vetores mais amplos e conjuntos de intrues orientadas a vetores mais avanadas, desempenho da aplicao? cada vez mais importante para os desenvolvedores de software a otimizao de suas aplicaes para
utilizar plenamente os recursos existentes no hardware. Entretanto, os desenvolvedores nem sempre esto cientes que j existem ferramentas especializadas para ajud-los a usar plenamente tais recursos. Este document apresenta os recursos do hardware, lista as opes de ferramentas disponveis, descreve cada ferramenta em detalhes e traz perguntas claras para ajudar os desenvolvedores a definir a ferramenta certa para suas aplicaes. Se voc um programador trabalhando em ambientes C, C++ ou Fortran e est disposto a realizar algumas pequenas mudanas em seu cdigo, continue lendo para saber como grandes e pequenas empresas esto verificando enormes ganhos de desempenho em suas aplicaes atravs das ferramentas de software da Intel..
Tecnologia de diversos ncleos da Intel (Intel multicore) Intel SSE, incluindo Intel AVX Intel AES-NI PMU - Unidade de Monitoramento de Desempenho (Performance Monitoring Unit)
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
Contedo Sumrio executivo............................................. 1 Razes para adotar o paralelismo............................................................. 1 Recursos de desempenho nos processadores Xeon da Intel................... 1 Ferramentas disponveis.............................. 2 Ferramentas de Desenvolvimento......................................... 2 Modelos de Programao........................ 2 Escolha da opo de desempenho .......... 3 Definindo o modelo de programao................................................... 4 Ferramentas e modelos de programao: breves descries.............................................................. 4 Resumo................................................................... 8
FERRAMENTAS DISPONVEIS
A Intel oferece aos desenvolvedores de software uma ampla gama de ferramentas e modelos de desenvolvimento para adotar o paralelismo.
FERRAMENTAS DE DESENVOLVIMENTO
Ferramentas de anlise rapidamente apontam reas de problemas em cdigos-fonte atravs da busca por erros e vulnerabilidades de segurana, e fornecem dicas para ajudar a tomar decises. Bibliotecas fornecem funes pr-definidas que podem ser facilmente adicionadas ao seu cdigo para usar de forma mais eficiente os recursos existentes no hardware Intel. Compiladores oferecem recursos de otimizao e capacidade para multi-threading. Ferramentas de cluster ajudam a analisar e otimizar o desempenho de aplicaes paralelas durante o desenvolvimento de clusters usando a interface MPI (Message Passing Interface). Nossos pacotes de produtos simplificam o processo de aquisio, incluindo a maior parte ou todas as ferramentas em um nico pacote de instalao. Categoria Produto Intel Linguagens
MODELOS DE PROGRAMAO
A Intel tambm oferece uma srie de modelos de programao que podem ser utilizados tanto processadores multi-core quanto em processadores many-core. Cada modelo possibilita aos desenvolvedores incluir ou otimizar o paralelismo em suas aplicaes. Os modelos variam desde aqueles designados para abstrao de alto nvel e com facilidade de uso em mente (como Intel Cilk Plus e Intel TBB), bibliotecas altamente otimizadas e que fazem uso extensivo de multi-threading, projetadas para produtividade imediata (Intel IPP, Intel MKL) at ferramentas que implementam padres estabelecidos, que ajudam na escalabilidade entre diversos ambientes (MPI, OpenMP*, Coarray Fortran and OpenCL*). A tabela abaixo apresenta as diversas escolhas disponveis.
Intel Threading Building Blocks Extenses Template para as libraries linguagens amplament C/C++ para e usadas simplificar o em C++ paralelismo para paralelismo Cdigo aberto Tambm um produto Intel Cdigo aberto Tambm um produto Intel Intel Cilk Plus Domain Specific Libraries Intel Integrated Performanc e Primitives Intel Math Kernel Library Padres estabelecidos Message Passing Interface (MPI) OpenMP* Coarray Fortran OpenCL*
suportadas Ferramentas Intel Parallel Advisor C, C++ de Anlise Intel VTune C, C++, Amplifier XE Fortran, C# Intel Inspector XE C, C++, Fortran Bibliotecas Intel Math Kernel C, C++, Library (Intel MKL) Fortran Intel Integrated C, C++. Performance Exemplos de Primitives uso em C#, (Intel IPP) Java Intel Threading C++ template Building Blocks library (Intel TBB) Compiladores Intel Composer XE C, C++, Fortran Ferramentas Intel MPI Library C, C++, de Cluster Fortran Intel Trace Analyzer C, C++, and Collector Fortran Pacotes Intel Parallel Studio C, C++, XE Fortran Intel Cluster Studio C, C++, XE Fortran
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
Nota: Aplicaes que utilizem intensamente operaes de ponto flutuante so especialmente favorecidas para acelerao atravs de nossas ferramentas.
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
Utilize a tabela abaixo para escolher o modelo de programao mais adequado para voc. Pergunta Quanto voc est disposto a aprender um novo modelo de programao? Quanto voc tolerante a mudanas em seu cdigo? Resposta Baixa disposio e tolerncia Utilize bibliotecas Intel IPP e Intel MKL. Explore os recurso de auto-vetorizao do compilador. Alguma disposio e tolerncia Considere Intel Cilk Plus, Intel OpenMP*, Coarray Fortran, alm das bibliotecas da Intel. Muita disposio e tolerncia Considere Intel TBB e Intel MPI, pois elas oferecem mxima flexibilidade e desempenho. Voc est usando memria compartilhada, cluster ou programao com vetores? Programao para cluster use MPI para aplicaes utilizando memria distribuda. Use OpenMP*, Intel Cilk Plus ou Intel TBB para ns utilizando MPI. Programao para memria compartilhada Use OpenMP*, Intel Cilk Plus ou Intel TBB. Programao com vetores (SSE/AVX, etc) Use Intel Cilk Plus e array notation do Fortran90. A programao hbrida, CPU + GPU importante para voc? Se sim, considere a utilizao de OpenCL*.
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
Intel Parallel Advisor (ferramenta de anlise) Orienta os desenvolvedores a implementar ou otimizar o paralelismo em programas C/C++ existentes. Desenvolvedores podem utiliz-lo para identificar as regies de cdigo que esto consumindo mais tempo, inserir anotaes para realizar experimentos com a adio de paralelismo, validar a viabilidade das mudanas propostas e verificar eventuais problemas que podem impedir que a aplicao funcione adequadamente quando paralelizada. Esta ferramenta est disponvel para Microsoft Windows*. Saiba mais em software.intel.com/en-us/articles/intel-parallel-advisor/ Intel Composer XE (compilador e bibliotecas) Este o nome do pacote que inclui o compilador C++ da Intel, compilador Fortran da Intel, bibliotecas Intel Math Kernel Library, Intel Integrated Performance Primitives e Intel Threading Building Blocks. Permite que desenvolvedores C/C++ e Fortran criem e mantenham aplicaes corporativas e de alto desempenho para processadores com as mais recentes arquiteturas Intel. A utilizao deste pacote permite melhorias superiores aos melhores compiladores C++ e Fortran otimizados do mercado. Uma simples recompilao com o Intel Composer XE pode aumentar o desempenho em 20% ou mais. Melhorias de desempenho so fruto das otimizaes em memria, auto-paralelizao e vetorizao. Saiba mais em software.intel.com/en-us/articles/intel-composer-xe/ Intel Vtune Amplifier XE (ferramenta de anlise) uma ferramenta de perfil de desempenho do software e de threading para desenvolvedores C/C++, Fortran e C# que precisam entender o comportamento sequencial e paralelo para aumentar o desempenho e a escalabilidade. Como software de anlise de desempenho para aplicaes em Windows e Linux, o Intel Vtune Amplifier XE remove o processo de tentativa e erro, fornecendo acesso rpido a informaes de escalabilidade para tomadas de decises mais rpidas e melhores. Otimize seu software para o mximo desempenho, garanta que os ncleos sejam plenamente explorados e que os novos recursos do processador sejam suportados em todo seu potencial. O software apresenta uma srie de novas experincias de perfis de desempenho pr-definidas, para obter rapidamente informaes de perfil de desempenho sem ter que conhecer detalhes da microarquitetura. Aps verificar o perfil de desempenho, recursos de anlise como a linha do tempo, filtragem e anlise de frames transformam os dados em informao para orientar as aes. Saiba mais em www.intel.com/software/products/vtune Intel Inspector XE (ferramenta de anlise) Ajuda a aumentar a confiabilidade da aplicao atravs da deteco de erros de memria e de threading. A ferramenta foi criada para desenvolvedores C, C++, C# e Fortran, construindo software em sistemas Windows* e Linux*. A ferramenta de anlise de memria pode detectar memory leaks e corrupes de memria nos incio do ciclo de desenvolvimento. A ferramenta de anlise de threads e o debugger encontram threads com interaes problemticas e identifica competio por dados (data races) e deadlocks. Ela tambm identifica erros intermitentes e no determinsticos, mesmo quando o cenrio de timing responsvel pelo erro no acontece. Usando esta ferramenta no incio do ciclo de desenvolvimento pode detectar e resolver problemas de segurana que seriam muito mais dispendiosos para resolver aps a distribuio do software. Saiba mais em software.intel.com/en-us/articles/intel-inspector-xe/
Intel MPI Library (biblioteca de cluster) Aumenta o desempenho da aplicao em clusters baseados em arquitetura Intel, atravs da implementao da especificao MPI-2 (Message Passing Interface-2) de alto desemepnho em diversas fabrics. Ela permite alteraes e upgrades para novas interconexes sem exigir maiores mudanas no software ou no ambiente operacional. Use esta biblioteca de MPI de alto desempenho para desenvolver aplicaes que podem rodar em mltiplas interconexes de cluster fabrics, escolhidos pelo usurio em tempo de execuo. A Intel tambm disponibiliza um kit com um ambiente de runtime grtis para produtos desenvolvidos com a biblioteca MPI da Intel. Obtenha os mximos resultados para a computao de alto desempenho (HPC) em ambientes de nvel corporativo, de diviso, departamento ou grupo de trabalho. Saiba mais em software.intel.com/en-us/articles/intel-mpi-library/ Intel Trace Analyzer and Collector (anlise de cluster) uma ponderosa ferramenta para validar a correo e o comportamento das aplicaes. Inclui uma biblioteca de tracing de baixo impacto, que realiza o tracing de aplicaes baseado em eventos. Voc pode analisar os dados coletados pelo tracing para pontos de melhoria de desempenho e gargalos. O produto completamente thread-safe e integra-se com processos multithreaded em C/C++ e Fortran, com ou sem MPI. Suorta intromentao binria e modo fail-safe. Alm disso, pode verificar erros de programao MPI e de sistema. O Intel Trace Analyzer proporciona uma forma conveniente de monitorar atividades da aplicao obtidas pelo Intel Trace Collector atravs de visualizaes grficas. Voc pode visualizar o nvel de detalhes desejado, identificar rapidamente pontos de melhoria de desempenho e gargalos, e analisar suas causas. Combinados, o Analyzer e o Collector permitem anlises otimizadas e capacidade de visualizao. Juntos, oferecem a rpida visualizao grfica de dados complexos de perfil de desempenho e podem escalar facilmente at centenas de processos. A ferramenta est disponvel para Linux* e Microsoft Windows*. Saiba mais em software.intel.com/enus/articles/intel-trace-analyzer/
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
Intel Threading Building Blocks (Intel TBB) A abstrao mais popular para programao paralela em C++. Introduzida pela Intel em 2006, tornou-se um projeto de cdigo aberto em 2007, e conta com adoo considervel no mercado, tendo ultrapassado OpenMP em popularidade. Empresas que tm declarado publicamente o uso de Intel TBB incluem Adobe, Autodesk e Dreamworks Animations, para nomear somente algumas. Intel TBB foi portado para numerosos sistemas operacionais e processadores. Intel TBB deve ser usado por desenvolvedores C++ que buscam implementar paralelismo em processadores multi-core e many-core. Saiba mais em http://threadingbuildingblocks.org Chamada de funo paralelizada em C++ usando Intel Threading Building Blocks parallel_for (0, n, [=](int i) { Foo(a[i]); } ); OpenMP* Em 1996, o padro OpenMP* foi proposto como uma forma para os compiladores auxiliarem na utilizao de hardware paralelo. Aps mais do que uma dcada, a maioria dos compiladores C, C++ e Fortran suportam OpenMP*. OpenMP particularmente adequado para as necessidades de programas Fortran e de programas cientficos escritos em C. A Intel membro do grupo de trabalho OpenMP* e lder como fornecedora de implementaes e ferramentas de suporte OpenMP*. OpenMP* aplicvel programao para multi-core e many-core. Saiba mais em http://openmp.org Somando elementoes de vetores em C usando OpenMP #pragma omp parallel for reduction(+: s) for (int i = 0; i < n; i++) { s += x[i]; }
Bibliotecas (Intel Math Kernel Library e Intel Integrated Performance Primitives) Bibliotecas disponibilizam um importante mtodo de abstrao de programao paralela que deve ser considerado antes de se dedicar programao. importante considerar as implementaes de algoritmos das bibliotecas, incluindo BLAS, codificadores/decodificadores de udio e vdeo, FFT, ordenadores e solucionadores de problemas(solvers). As bibliotecas da Intel oferecem implementaes avanadas de muitos algoritmos que so altamente otimizados para utilizar os conjuntos de instrues SSE e AVX, bem como os recursos de processadores multi-core e many-core. Um cdigo fonte nico pode usufruir destes benefcios com uma nica chamada para em uma das bibliotecas. MKL disponibiliza interfaces padro em Fortran e suporta novos padres de mercado para interfaces C para LAPACK, o qual a Intel ajudou a criar. Em conjunto com a constante busca da Intel por alto desempenho em suas bibliotecas, padres tornam as bibliotecas uma fcil escolha para iniciar na programao paralela. Saiba mais em http://www.intel.com/software/products/mkl/ and www.intel.com/software/products/ipp/ Multiplicao de matrizes em Fortran utilizando uma chamada da biblioteca Intel Math Kernel call DGEMM(transa,transb,m,n,k,alpha,a,lda,b,ldb,beta,c ,ldc) Intel Cilk Plus Uma extenso rpida, fcil e confivel para o C e C++. Fornece extenses para execuo de tarefas paralelas e array notations para o uso efetivo de paralelismo de tarefas, dados e vetores. Estas extenses tm suas origens nas pesquisas do Prof. Leiserson do M.I.T. e na empresa que ele fundou, conhecida como Cilk Arts. Intel Cilk Plus deve ser divulgado para o programador C e C++ que busca implementar paralelismo de tarefas, dados em vetores em processadores e co-processadores. Cilk Plus deve ser considerado antes de Intel TVV em qualquer projeto que possa se beneficiar de paralelismo por vetorizao. Os recursos do Cilk Plus e da Intel TBB podem ser mesclados e utilizados em conjunto. Portanto, usurios de Intel TBB podem usar recursos de paralelismo do Cilk Plus para dados e vetores em programas usando Intel TBB. Saiba mais em http://cilkplus.org Invocao de funes paralelizadas usando Intel Cilk Plus cilk_for (int i=0; i<n; ++i) { Foo(a[i]); } DAXPY em array notation usando Intel Cilk Plus a[0:n] += x * b[0:n];
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
Message Passing Interface (MPI) Para programadores que utilizam clusters, nos quais os processadores esto conectados pela capacidade de passar mensagens mas no sempre pela capacidade de compartilhar memria, Message Passing Interface (MPI) o mtodo de programao mais comum. Num cluster, a comunicao continua utilizando MPI da mesma forma, independentemente se os ns do cluster possuem processadores many-core ou no. A biblioteca Intel MPI, amplamente utilizada, oferece ao mesmo tempo alto desempenho e suporte para praticamente todas as interconexes. A biblioteca Intel MPI suporta sistemas baseados em processadores multi-core e many-core, criando ranks em processadores multi-core e many-core de uma forma que familiar e consistente com a programao MPI atual. Saiba mais em http://intel.com/go/mpi Cdigo MPI em C para clusters for (d=1; d<ntasks; d++) { rows = (d <= extra) ? avrow+1 : avrow; printf( sending %d rows to task %d\n, rows, dest); MPI_Send(&offset, 1, MPI_INT, d, mtype, MPI_COMM_WORLD); MPI_Send(&rows, 1, MPI_INT, d, mtype, MPI_COMM_WORLD); MPI_Send(&a[offset][0], rows*NCA, MPI_DOUBLE, d, mtype, MPI_COMM_WORLD); MPI_Send(&b, NCA*NCB, MPI_DOUBLE, d, mtype, MPI_COMM_WORLD); offset = offset + rows; } Coarray Fortran O padro Fortran 2008 introduziu extenses co-array como um mtodo adicional para usar Fortran como uma linguagem de programao paralela eficiente e robusta. O Intel Fortran Compiler suporta a programao paralela atravs de co-arrays conforme definido no padro Fortran 2008, tanto em sistemas de memria compartilhada quanto de memria distribuda. O Coarray Fortran use um modelo de programao singleprogram e multi-data (SPMD). Saiba mais em http://intel.com/software/products Soma em Fortran, usiando o recurso co-array REAL SUM[*] CALL SYNC_ALL( WAIT=1 ) DO IMG= 2,NUM_IMAGES() IF (IMG==THIS_IMAGE()) THEN SUM = SUM + SUM[IMG-1] ENDIF CALL SYNC_ALL( WAIT=IMG ) ENDDO a a
OpenCL* OpenCL* oferece uma interface mais prxima ao hardware, com algumas abstraes importantes e com substancial controle, associado a um grande interesse e comprometimento da indstria. O OpenCL* pode requerer a maior quantidade de refactoring quando comparado s outras solues apresentadas neste artigo, especialmente quando o refactoring baseado em conhecimentos avanados do hardware do sistema. Os resultados do trabalho de refactoring podem ser significativos para o desempenho de sistemas multi-core e many-core, e os resultados podem ou no ser atingveis com tal refactoring. O objetivo do OpenCL* fazer com que o investimento em refactoring seja produtivo quando realizado. Outras solues alm do OpenCL* oferecem mtodos para evitar a necessidade de refactoring baseado em conhecimento do hardware do sistema. Saiba mais em http://intel.com/go/opencl Multiplicao por elemento em C usando OpenCL kernel void dotprod( global const float *a, global const float *b, global float *c) { int myid = get_global_id(0); c[myid] = a[myid] * b[myid]; }
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
RESUMO
No desperdice desempenho. A Intel implementa continuamente novos recursos de desempenho em seus processadores, portanto seu cdigo precisa ser vetorizado e multi-threaded para usufru-los. Este artigo mostrou como as ferramentas de anlise podem identificar reas de ateno em relao ao desempenho, como funes lentas podem ser substitudas por funes altamente otimizadas das bibliotecas Intel, como um ponto de melhoria em um mdulo pode ser re-compilado usando nossos compiladores, alm de apresentar como os diversos mdulos de programao existentes podem ajud-lo. A Intel vem disponibilizando ferramentas de programao aos desenvolvedores por mais de 25 anos, com o intuito de ajud-los a utilizar todoss os recursos de nossos processadores. A Intel entende que as necessidades de cada aplicao variam amplamente, e disponibiliza aos desenvolvedores uma ampla gama de ferramentas e opes para solucionar uma grande variedade de problemas envolvendo programao. comum que os utilizadores de nossas ferramentas constatem ganhos de desempenho de 10%, 2x ou at 20x. As ferramentas so projetadas para complementar seu ambiente existente, seja ele Microsoft Visual Studio*, Eclipse*, Xcode, makefile ou builds por linha de comando, com compiladores Microsoft, Intel ou GCC. Conforme produtos baseados na arquitetura Intel Many Integrated Core Architecture (Intel MIC architecture) tornarem-se disponveis, ser crescente a importncia de garantir que seu cdigo-fonte esteja pronto para tirar plena vantagem da potncia disponvel. A boa notcia que os mesmo modelos de programao padronizados para a tecnologia multi-core x86 sero aplicveis tecnologia many-core. Uma vez que os desenvolvedores otimizem seu cdigo para processadores Intel Xeon, eles podem reutilizar o cdigo existente e sua experincia de programao na arquitetura Intel MIC. Ns encorajamos voc a saber mais sobre o assunto em: software.intel.com/pt-br/parallel/, ou publicar sua pergunta no frum: software.intel.com/enus/forums/threading-on-intel-parallel-architectures/.
Pacotes >>
Intel Composer XE
Compilador Intel C/C++ Compilador Intel Fortran Intel Integrated Performance Primitives3 Intel Math Kernel Library3 Intel CilkTM Plus Componentes Intel Threading Buidling Blocks Intel Inspector XE Intel VtuneTM Amplifier XE Static Security Analysis Biblioteca Intel MPI Intel Trace Analyzer & Collector Biblioteca Rogue Wave IMSL*2 Sistema Operacional1
W, L W, L W, L W, L W, L W, L, M W, L, M
Notas: 1 Sistemas Operacionais: W=Windows, L= Linux, M= Mac OS* X. 2 Disponvel no Intel Visual Fortran Composer XE para Windows com IMSL*. 3 No disponvel individualmente em Mac OS X, includo nos pacotes Intel C++ & Fortran Composer XE para Mac OS X.
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
AVALIE AS FERRAMENTAS
Faa o download gratuito de cpias de avaliao de nossas ferramentas. Se voc ainda est em dvida por onde comear recomendamos: Para pacotes, avalie o Intel Parallel Studio XE ou Intel Cluster Studio XE Intel VTune Amplifier XE performance analyzer Intel Parallel Advisor for Windows*
FERRAMENTAS DE APRENDIZADO
Intel Learning Lab, tutoriais, artigos e outros. Apresentaes tcnicas e videos sobre Computao Paralela
LEITURA RECOMENDADA
Guia Intel para o desenvolvimento de aplicaes Multithreaded (em ingls). Webinar A chave para escalar aplicaes para multi-core (em ingls). Intel VTune Amplifier XE um curto video de apresentao e passo-a-passo detalhado para se familiarizar com os tutoriais (em ingls). Artigo: Prepare seu cdigo para execuo paralela (inclui cdigos de exemplo detalhados) (em ingls). pgina 774 do Manual: Manual de referncia para arquiteturas Intel 64 e IA-32 (em ingls). Intel TBB (livro da Amazon.com, em ingls).
Um guia resumido para as Ferramentas para Computao Paralela utilizando processadores Xeon da Intel
INFORMAES CONTIDAS NESTE DOCUMENTO SO DISPONIBILIZADAS EM CONJUNTO COM PRODUTOS INTEL. NENHUMA LICENA, EXPRESSA OU IMPLCITA, POR EMBARGO OU OUTROS MEIOS, A QUALQUER DIREITO DE PROPRIEDADE INTELECTUAL CONCEDIDA POR ESTE DOCUMENTO. A MENOS QUE ESTIPULADO NOS TERMOS E CONDIES DE VENDA DA INTEL PARA OS PRODUTOS MENCIONADOS, A INTEL NO ASSUME NENHUA RESPONSABILIDADE E SE ISENTA DE QUALQUER GARANTIA EXPRESSA OU IMPLCITA, RELACIONADAS COM A VENDA E/OU O USO DE PRODUTOS INTEL, INCLUINDO A RESPONSABILIDADE OU GARANTIAS RELATIVAS ADEQUAO PARA UM DETERMINADO FIM, COMERCIALIZAO OU INFRAO DE QUALQUER COPYRIGHT DE PATENTE OU OUTRO DIREITO DE PROPRIEDADE INTELECTUAL.
2012, Intel Corporation. Todos os direitos reservados. Intel, o Intel logo, VTune, Cilk e Xeon so marcar registradas da Intel Corporation nos Estados Unidos e em outros pases. *Outros nomes e marcas podem ser considerados propriedade de terceiros.
10