Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Herisson Chaves Ribeiro

Herisson Chaves Ribeiro

Atualmente através do avanço tecnológico, a indústria de eletrônicos tem disponibilizado uma série de novos dispositivos com características computacionais, como é o caso da GPU. Essa evolução, aliada a novas APIs de programação paralela tem aberto novas alternativas na computação de alto desempenho. Além disso, unir mais de um dispositivo com poder computacional, como por exemplo, CPU e GPU em um ambiente híbrido tende a ter ganhos de desempenho.
CUDA é uma arquitetura paralela de propósito geral destinada a utilizar o poder computacional de GPUs nVidia.
Extensão da linguagem C, e permite controlar a execução de threads na GPU e gerenciar sua memória.

Hérisson Chaves

November 24, 2016
Tweet

Other Decks in Technology

Transcript

  1. Herisson Chaves Ribeiro • Graduando em Física • Bolsista do

    PIBIC • Nanoestruturas de carbono interagindo com poluente endócrinos: análise via simulação computacional.
  2. A CRISE DO SINGLE CORE 0 500 1000 1500 2000

    2500 3000 3500 4000 0 20 40 60 80 100 120 80286 (1982) 80386 (1985) 80486 (1989) Pentium (1993) Pentium (1997) Pentium 4 Willamette (2001) Pentium 4 Prescott (2004) Core 2 Kentsfield (2007) Taxa de clock e potência para microprocesssadores Intel x86 durante oito gerações e 25 anos Potência Taxa de Clock Taxa de Clock (Mhz) Potência (Watts) Fonte: Patterson, David A. Organização e projeto de computadores – interface hardware/software. Elsevier,2014
  3. A CRISE DO SINGLE CORE • Passando de processador para

    multiprocessadores • A dificuldade de criar programas com processamento paralelo
  4. EVOLUÇÃO DAS PLACAS DE VIDEO AS PALCAS DE VIDEOS AGORA

    NÃO SÃO APENAS SIMPLES VGA, AGORA ELAS SE TORNARAM COPROCESSADORES.
  5. SUPERCOMPUTADORES 0 1 2 3 4 5 6 7 8

    0 500 1000 1500 2000 2500 3000 Tianhe-1A Jaguar Nebulae Tsubame Hopper II Tera 100 Megawatts Gigaflops Tianhe-1ª é equipada com 7168 GPUs Nvidia Tesla e 14 336 processadores Intel Xeon.
  6. SUPERCOMPUTADORES 0 1 2 3 4 5 6 7 8

    0 500 1000 1500 2000 2500 3000 Tianhe-1A Jaguar Nebulae Tsubame Hopper II Tera 100 Megawatts Gigaflops
  7. O QUE É CUDA • Em 2007 a NVIDIA publicou

    a primeira especificação da extensão da linguagem C para a arquitetura CUDA que permite utilizar os processadores da placa de vídeo para outros fins, como processamento numérico e computação científica. Algumas Wrappers para CUDA: CUDA Fortran CUDA Python (PyCUDA) CUDA Java (jCUDA) CUDA C# (CUDA.NET)
  8. void serial_function(… ) { ... } void other_function(int ... )

    { ... } void saxpy_serial(float ... ) { for (int i = 0; i < n; ++i) y[i] = a*x[i] + y[i]; } void main( ) { float x; saxpy_serial(..); ... } NVCC (Open64) CPU Compiler C CUDA Key Kernels CUDA object files Rest of C Application CPU object files vinculador CPU-GPU Executable Modificar em código paralelo CUDA COMPILANDO C PARA APLICATIVOS CUDA
  9. EXEMPLO void saxpy_serial(int n, float a, float *x, float *y)

    { for (int i = 0; i < n; ++i) y[i] = a*x[i] + y[i]; } // Invoke serial SAXPY kernel saxpy_serial(n, 2.0, x, y); __global__ void saxpy_parallel(int n, float a, float *x, float *y) { int i = blockIdx.x*blockDim.x + threadIdx.x; if (i < n) y[i] = a*x[i] + y[i]; } // Invoke parallel SAXPY kernel with 256 threads/block int nblocks = (n + 255) / 256; saxpy_parallel<<<nblocks, 256>>>(n, 2.0, x, y); Standard C Code Parallel C Code
  10. TESTES DE DESEMPENHO SISTEMAS LINEARES PELO METODO DE ELEMINAÇÃO GAUSSIANA

    11 1 + 12 2 + ⋯ + 1 = 1 22 2 + ⋯ + 2 = 2 . . … … … … … … … … … … … … … … . =
  11. TESTES DE DESEMPENHO SISTEMAS LINEARES PELO METODO DE ELEMINAÇÃO GAUSSIANA

    Extraído do artigo: Comparação e Análise de Desempenho de Aceleradores Gráficos no Processamento de Matrizes. 4 Processadores Intel R Xeon E5-2665 (8 cores cada) • 24 GB de memória RAM • 4 Placas Gráficas NVIDIA R Tesla K10 • Sistema Operacional SUSE Linux Enterprise Server 11 SP2 (x86_64)
  12. TESTES DE DESEMPENHO SISTEMAS LINEARES PELO METODO DE ELEMINAÇÃO GAUSSIANA

    Extraído do artigo: Comparação e Análise de Desempenho de Aceleradores Gráficos no Processamento de Matrizes.
  13. TESTES DE DESEMPENHO SISTEMAS LINEARES PELO METODO DE ELEMINAÇÃO GAUSSIANA

    Extraído do artigo: Comparação e Análise de Desempenho de Aceleradores Gráficos no Processamento de Matrizes. Código 2. versão CUDA
  14. TESTES DE DESEMPENHO SISTEMAS LINEARES PELO METODO DE ELEMINAÇÃO GAUSSIANA

    Extraído do artigo: Comparação e Análise de Desempenho de Aceleradores Gráficos no Processamento de Matrizes. Tempo médio em segundos (M) e desvio padrão (DP) dos experimentos 2000 4000 6000 8000 10000 M DP M DP M DP M DP M DP 13,65 0,02 110,34 0,28 376,28 5,24 889,69 11,84 1737,37 22,70 1,12 0,03 3,65 0,03 9,79 0,04 20,93 0,04 39,04 0,08 SERIAL CUDA
  15. TESTES DE DESEMPENHO SIMULAÇÃO GRAVITACIONAL N-BODY Extraído do livro :

    Patterson, David A. Organização e projeto de computadores – interface hardware/software. Elsevier,2014 = G 2
  16. TESTES DE DESEMPENHO SIMULAÇÃO GRAVITACIONAL N-BODY Extraído do livro :

    Patterson, David A. Organização e projeto de computadores – interface hardware/software. Elsevier,2014 NVIDIA Titan X (Pascal) simulando 61440 estrelas !
  17. Tools Oil & Gas Bio-Chemistry Bio- Informatics TotalView Debugger NVIDIA

    Video Libraries MATLAB EMPhotonics CULAPACK Bright Cluster Manager CAPS HMPP MATLAB Thrust C++ Template Lib CUDA C/C++ PGI CUDA Fortran Parallel Nsight Vis Studio IDE Allinea DDT Debugger OpenEye ROCS Disponivel Em breve… TauCUDA Perf Tools NVIDIA NPP Perf Primitives ParaTools VampirTrace VSG Open Inventor StoneRidge RTM Headwave Suite Acceleware RTM Solver GeoStar Seismic Suite ffA SVI Pro OpenGeoSolut ions OpenSEIS Paradigm RTM Seismic City RTM Tsunami RTM CAE ACUSIM AcuSolve 1.8 Autodesk Moldflow Prometch Particleworks Remcom XFdtd 7.0 MSC.Software Marc 2010.2 PGI Accelerators Platform LSF Cluster Mgr MAGMA (LAPACK) FluiDyna OpenFOAM Metacomp CFD++ Disponível Futuramente Libraries Wolfram Mathematica CUDA FFT CUDA BLAS TeraChem BigDFT ABINT VMD Acellera ACEMD AMBER DL-POLY GROMACS HOOMD LAMMPS NAMD GAMESS CP2K CUDA-BLASTP CUDA-EC CUDA-MEME CUDA SW++ SmithWaterm GPU-HMMR HEX Protein Docking MUMmerGPU PIPER Docking LSTC LS-DYNA 971 RNG & SPARSE CUDA Libraries Paradigm SKUA Panorama Tech PGI CUDA x86 NÚMERO CRESCENTE DE APLICATIVOS PROFISSIONAIS EM CUDA ANSYS Mechanical
  18. Siemens 4D Ultrasound Rendering Finance EDA Digisens Medical Schrodinger Core

    Hopping MotionDSP Ikena Video Manifold GIS Dalsa Machine Vision Synopsys TCAD SPEAG SEMCAD X Agilent EMPro 2010 CST Microwave Agilent ADS SPICE Acceleware FDTD Solver Acceleware EM Solution Aquimin AlphaVision Other NAG RNG SciComp SciFinance Hanweck Options Analy Disponível Gauda OPC Useful Progress Med Lightworks Artisan Autodesk 3ds Max NVIDIA OptiX (SDK) mental images iray (OEM) Bunkspeed Shot (iray) Refractive SW Octane Works Zebra Zeany Chaos Group V-Ray GPU Cebas finalRender Random Control Arion Caustic Graphics Weta Digital PantaRay ILM Plume Futuramente Disponível Em breve… Digital Anarchy Photo Video Elemental Video Fraunhofer JPEG2000 Cinnafilm Pixel Strings Assimilate SCRATCH The Foundry Kronos TDVision TDVCodec ARRI Various Apps Black Magic Da Vinci MainConcept CUDA Encoder GenArts Sapphire Adobe Premier Pro CS5 Murex MACS Numerix Risk RMS Risk Mgt Solutions Rocketick Veritlog Sim MVTec Machine Vis NÚMERO CRESCENTE DE APLICATIVOS PROFISSIONAIS EM CUDA
  19. modelos computacionais com o objetivo de compreender a proliferação de

    doenças do ponto de vista dinâmico. investiga a paralelização do modelo de cinética química do CPTEC/INPE.
  20. O equipamento foi incluído na lista dos 500 computadores mais

    rápidos de 2012 deixou o veterano do Instituto Nacional de Pesquisas Espaciais, Tupã (o 79º), para trás. Além de superpoderoso, o Grifo04 dispõe de 17.408 núcleos e é econômico, consumindo 90% menos energia que o normal o Grifo04 é o computador mais rápido da América Latina. Ele possui nada menos que 1088 GPUs NVIDIA Tesla M2050 e consegue realizar mais de 250 trilhões de operações aritméticas por segundo. O seu poder de processamento é de 250 teraflops.Este equipamento auxiliará simulações geofísicas cujo objetivo é aprimorar a visualização das camadas geológicas do subsolo para suportar a exploração e produção de petróleo e ajudar a melhorar o desempenho das análises sísmicas.
  21. CONCLUSÕES • A plataforma CUDA permite o uso de GPUs

    para executar aplicações paralelas tornando-as um coprocessador. • Extensão da linguagem C e algumas warppers disponíveis, tornando-o de fácil aprendizado. • Mas para rodar de modo eficiente, é essencial que o código seja otimizado! • A linguagem OpenCL permite criar programas que rodam em múltiplas arquiteturas • Mas é difícil fazer um programa genérico que seja eficiente em arquiteturas diferentes • Embora os potenciais benefícios sejam grandes, as dificuldades também são, já que o desenvolvimento de aplicativos massivamente paralelos exige não apenas um bom domínio da linguagem escolhida, mas toda uma nova metodologia de desenvolvimento, especialmente em situações onde o paralelismo não é óbvio.
  22. ONDE APRENDER MAIS • Existem uma grande quantidade de material

    na Internet sobre CUDA. No site da nVidia existe links para diversos tutoriais e cursos online sobre a arquitetura CUDA http://www.nvidia.com/object/cuda_education.html • Para quem domina o inglês falado, neste site tem um curso em vídeo sobre CUDA dado por um engenheiro da nVidia na Universidade de Illinois https://developer.nvidia.com/educators/existing-courses • Outra opção é um curso online (texto) publicado no site Dr. Dobbs. A distribuição do CUDA vem com 2 guias: CUDA Programming Guide e CUDA Best Practices
  23. BIBLIOGRAFIA Stefanello, A.L., Machado, C. C., Rosa, D da., Sulzbach,

    M., Moerschbacher , R. W., e Sarturi,T. R. (2013) “Programação Paralela Híbrida em CPU e GPU: Uma Alternativa na Busca por Desempenho”. Zanotto, L., Ferreira, A. e Matsumoto, M. “Arquitetura e Programação de GPU Nvidia”. Paula, L. C. M. (2014) “CUDA VS. OPENCL: UMA COMPARAÇÃO TEÓRICA E TECNOLÓGICA”. Fernandes, A. A., Stephany, S. e Panetta, J.(2012) “Paralelização do Modelo de Cinética Química Atmosférica do CPTEC/INPE Para Utilizar Placas Gráficas”. Paula, L. C. M. (2012) “PROGRAMAÇÃO PARALELA CUDA PARA SIMULAÇÃO DE MODELOS EPIDEMIOLÓGICOS BASEADOS EM INDIVÍDUOS”. Buriol, T. M. e Argenta, M. A. “ACELERANDO O DESENVOLVIMENTO E O PROCESSAMENTO DE ANÁLISES NUMÉRICAS COMPUTACIONAIS UTILIZANDO PYTHON E CUDA”. Vargas, F. C. e Schepke, C. “Avaliação de Desempenho de uma Implementação com CUDA do Ocean-Land- Atmosphere Model”. Patterson, David A. Organização e projeto de computadores – interface hardware/software. Elsevier,2014