SlideShare uma empresa Scribd logo
1 de 22
Aplicando o poder de uma GPU no
SQL Server
Msc. Mauro Pichiliani (@pichiliani)
pichiliani@uol.com.br
AVISO




2 | 26/11/2011 |
Sobre mim
 Mestre e doutorando em computação pelo ITA

 Escritor da SQL Magazine, Fórum Access, Java
  Magazine, SQLServerCentral.com e outras

 Colaborador do iMasters há 10 anos

 Co-autor do @databasecast

 Foco em diversos bancos de dados

 3 | 26/11/2011 |
Roteiro

     Uso de processamento
     GPU? Que bicho é esse?
     Processamento paralelo e aplicações
     O mercado
     Como utilizar uma GPU no SQL Server
     #comofaz
     Conclusão


4 | 26/11/2011 |
Uso de processamento no servidor

           Prioridades de um servidor de aplicação




5 | 26/11/2011 |
Uso de processamento no banco

  Prioridades de um servidor de banco de dados




6 | 26/11/2011 |
Por que a diferença?
  No servidor de aplicação:
         Processamento do código fonte
         Processamento de requisições (Threads, Http)
         Gerenciamento de máquinas virtuais

  No servidor de banco de dados:
           Acesso sequencial a tabelas com muitos dados
           Uso de índice causando IO randômico
           Plano de execução e operadores imprevisíveis
           Grande movimentação de dados para relatórios


7 | 26/11/2011 |
Então…




                   Por que utilizar GPU no SQL Server?

8 | 26/11/2011 |
GPU? Que bicho é esse? - Jogos
 GPU = Graphics Processing Unit
 Circuito próprio para manipulação paralela de operações gráficas e
  instruções x86 (GPGPU)
 Não trabalha sozinha: requer um processador
 O preço é acessível
 Avanços vem da área de entretenimento (games, filmes e séries)




 9 | 26/11/2011 |
GPU? Que bicho é esse? - Placas
   Atualmente a GPU é representada por uma
    placa dedicada (desktop ou notebook)




  Geoforce GTX 580
                                  Radeon HD 6990
  3072 MB GDDR5
                                  4 GB GDDR5
  2.46* TFLOPS Single Precision
                                  5.1 TFLOPS Single Precision
  327 GB/s – 1024 Cuda cores
                                  320 GB/s – 3072 Strem Processors


10 | 26/11/2011 |
GPU? Que bicho é esse? - Servidor
   Há soluções para servidor e SDK (CUDA)




11 | 26/11/2011 |
Processamento paralelo - HPC
   O uso de GPU requer conhecimento de processamento paralelo (área HPC)
   Maior parte do hardware TOP500 (http://www.top500.org/) usa GPU
   Para lembrar:
         1 megaflop = 1 milhão de flops = 10^6 operações p.f. por segundo;
         1 gigaflop = 1 bilhão de flops     = 10^9 operações p.f. por segundo;
         1 teraflop = 1 trilhão de flops   = 10^12 operações p.f. por segundo;
         1 petaflop = 1 quatrilhão de flops = 10^15 operações p.f. por segundo.

   Um processador topo de linha para servidores fica em torno de 50~70 GFLOPS
   Nota: em geral no máximo 10% disso é utilizado
   Paralelismo é tradicionamento aplicado em:
         Jogos
         Simulações
         Construção de modelos
         Renderização
         Segurança (força bruta)




12 | 26/11/2011 |
Processamento paralelo - Processador
   Não é raro mudanças no processador para melhorar
    desempenho específico:
          Inclusão de instruções MMX para suporte a multimídia
          Integração da plataforma de 64 bits
          Instruções específicas para melhoria da virtualização

   Há também a possibilidade de criação de um chip
    customizado com FPGA (field-programmable gate
    arrays)

   Que tal um SQL Chip?

13 | 26/11/2011 |
O mercado
 Pesquisas da área acadêmica abordam desde 2004 o uso de
  GPU com banco de dados

 Oracle apostando no Exadata

 IBM usando muito CUDA e preenchendo patentes

 Comunidade de software livre experimentando GPU
  (PostgreSQL e mongoDB)

 Amazon fornecendo instâncias do EC2 com GPU

 Microsoft ainda não fez nenhum anúncio


14 | 26/11/2011 |
Como utilizar uma GPU no SQL Server
 Trabalhar com GPU exige conhecimento da arquitetura




 Modelo de transferência de dados entre memória da
  GPU e o processador

 Detalhes do SDK (CUDA usa C/C++)

 Conceitos: funções de textura, kernel, OpenCL, SIMD


15 | 26/11/2011 |
Hello World com CUDA (em C)
// Hello World using CUDA                 // Host function
                                          int
#include <cuda.h>                         main(int argc, char** argv)                   // invoke the kernel
                                          {
#include <stdio.h>                          int i;                                     helloWorld<<< dimGrid, dimBlock
                                                                                      >>>(d_str);
// Prototypes                              // desired output
__global__ void helloWorld(char*);         char str[] = "Hello World!";
                                                                                       // retrieve the results from the device
                                           // mangle contents of output                cudaMemcpy(str, d_str, size,
                                           // the null character is left intact for   cudaMemcpyDeviceToHost);
// Device kernel                          simplicity
__global__ void                            for(i = 0; i < 12; i++)
                                             str[i] -= i;                                 // free up the allocated memory
helloWorld(char* str)                                                                       // on the device
{                                          // allocate memory on the device               cudaFree(d_str);
  // determine where in the thread grid    char *d_str;
                                           size_t size = sizeof(str);
 // we are                                 cudaMalloc((void**)&d_str, size);              // everyone's favorite part
                                                                                          printf("%sn", str);
 int idx = blockIdx.x * blockDim.x +       // copy the string to the device
                                           cudaMemcpy(d_str, str, size,
threadIdx.x;                              cudaMemcpyHostToDevice);                        return 0;
                                                                                      }
    // unmangle output                     // set the grid and block sizes
    str[idx] += idx;                       dim3 dimGrid(2); //one block p/ word
}                                          dim3 dimBlock(6); //one thread p/ char.




    16 | 26/11/2011 |
Voltando um pouco…
   Antes de programar para GPU veja se o problema é adequado

   Exemplos comuns:
         Multiplicação de matrix
         Tarefas de mineração de dados/previsões
         Compactação
         Pocessamento numérico intenso
         Uso de muitos loops aninhados
         Algoritmo para geoposicionamento (manipulação de rotas)

   Porque colocar este processamento no banco de dados?
         É onde os dados estão (geralmente são MUITOS dados)
         Fácil manipulação pelo uso da linguagem SQL
         Todos os recursos do .NET

   Dica geral: faça testes e veja se GPU é melhor para o seu caso/problema



17 | 26/11/2011 |
CUDA no SQL Server – CUDA.NET
 SQL Server permite a chamada de assemblies em .NET
 Duas abordagens para programar CUDA em C#:
1) CUDA.NET (http://www.hoopoe-cloud.com/Solutions/cuda.net)
using GASS.CUDA;

// ...
CUDA cuda = new CUDA(true);

// select first available device (GPU)
cuda.CreateContext(0);

// load binary kernel module (eg. relative to from bin/Debug/)
CUmodule module = cuda.LoadModule("../../mykernel.cubin");

// select function from the module
CUfunction function = cuda.GetModuleFunction(module, "fooFunction");

// execute the function fooFunction() on a GPU
cuda.Launch(function);



 18 | 26/11/2011 |
CUDA no SQL Server – CUDAFY.NET
2) CUDAfy .NET SDK(http://www.hybriddsp.com/)




19 | 26/11/2011 |
Sou pobre, #comofaz?
 Não tenho uma CPU e quero aprender, #comofaz?
 Tenha votande e determinação!
 Aprenda outros conceitos de programação paralela (MPI, OpenMP,
  SIMD, etc)
 Estude problemas e aprenda o ‘jeito’ de programar paralelo
 Alternativa: use um emulador
      http://gpubrasil.com/2009/10/02/instalacao-do-emulador-cuda/
   Outra alternativa: ambiente da CESUP
   Unix+Cluster com GPU Tesla+CUDA
   Monte projeto, converse com professor
   Há possibilidade de conseguir conta de acesso dependendo do
    projeto


20 | 26/11/2011 |
Conclusões
 Uso de GPU aliada a CPU fornece muito poder de
  processamento
 GPU com banco de dados ainda é incipiente
 Porém há varias possibilidades e oportunidades
 Alguns fornecedores já sairam na frente…
 Uso de GPU não sai ‘de graça’:
    É preciso conhecer programação paralela (e saber
     resolver problemas)
    Requer problema específico
    Programação difícil (i.e: você vai sofrer um pouco no
     começo)
 Há possibilidade de utilizar CUDA+.NET no SQL Server

21 | 26/11/2011 |
#prontofalei


                    Perguntas?



22 | 26/11/2011 |

Mais conteúdo relacionado

Mais procurados

Pqr (procedure qualification record)
Pqr (procedure qualification record)Pqr (procedure qualification record)
Pqr (procedure qualification record)
Alex Laftarflow
 
Df correctivo de hardware
Df correctivo de hardwareDf correctivo de hardware
Df correctivo de hardware
Alan Ponce
 
Catalogo bombas centrifugas 2858-hidrostal-rev f
Catalogo bombas centrifugas 2858-hidrostal-rev fCatalogo bombas centrifugas 2858-hidrostal-rev f
Catalogo bombas centrifugas 2858-hidrostal-rev f
hugo giron
 

Mais procurados (20)

Codigos ASME
Codigos ASMECodigos ASME
Codigos ASME
 
Aws b111-inspeccion-visual-de-soldaduras
Aws b111-inspeccion-visual-de-soldadurasAws b111-inspeccion-visual-de-soldaduras
Aws b111-inspeccion-visual-de-soldaduras
 
Torqueo de pernos
Torqueo de pernosTorqueo de pernos
Torqueo de pernos
 
Formato liquidos penetrantes
Formato liquidos penetrantesFormato liquidos penetrantes
Formato liquidos penetrantes
 
Pqr (procedure qualification record)
Pqr (procedure qualification record)Pqr (procedure qualification record)
Pqr (procedure qualification record)
 
U bolts
U boltsU bolts
U bolts
 
Emulsiones bituminosas
Emulsiones bituminosasEmulsiones bituminosas
Emulsiones bituminosas
 
Miller xmt 350
Miller xmt 350Miller xmt 350
Miller xmt 350
 
Manual soldadura
Manual soldaduraManual soldadura
Manual soldadura
 
NFPA_20_BOMBAS_ESTACIONARIAS_DE_DE_PROTECCIÓN_CONTRA_INCENDIO.pdf
NFPA_20_BOMBAS_ESTACIONARIAS_DE_DE_PROTECCIÓN_CONTRA_INCENDIO.pdfNFPA_20_BOMBAS_ESTACIONARIAS_DE_DE_PROTECCIÓN_CONTRA_INCENDIO.pdf
NFPA_20_BOMBAS_ESTACIONARIAS_DE_DE_PROTECCIÓN_CONTRA_INCENDIO.pdf
 
Presentacion de discontinuidades y defectos en la soldadura
Presentacion de discontinuidades y defectos en la soldaduraPresentacion de discontinuidades y defectos en la soldadura
Presentacion de discontinuidades y defectos en la soldadura
 
Df correctivo de hardware
Df correctivo de hardwareDf correctivo de hardware
Df correctivo de hardware
 
Fallas en compresores de tornillo
Fallas en compresores de tornilloFallas en compresores de tornillo
Fallas en compresores de tornillo
 
Diseño y calificacion de un wps, pqr y wpq de soldadura sedung api 1104
Diseño y calificacion de un wps, pqr y wpq de soldadura sedung api 1104Diseño y calificacion de un wps, pqr y wpq de soldadura sedung api 1104
Diseño y calificacion de un wps, pqr y wpq de soldadura sedung api 1104
 
Apendice d api 577
Apendice d api 577Apendice d api 577
Apendice d api 577
 
Catalogo bombas centrifugas 2858-hidrostal-rev f
Catalogo bombas centrifugas 2858-hidrostal-rev fCatalogo bombas centrifugas 2858-hidrostal-rev f
Catalogo bombas centrifugas 2858-hidrostal-rev f
 
Examen cwi
Examen cwiExamen cwi
Examen cwi
 
5 api-574-rev-002
5 api-574-rev-0025 api-574-rev-002
5 api-574-rev-002
 
Zoomlion Crane intro
Zoomlion Crane introZoomlion Crane intro
Zoomlion Crane intro
 
Tema 12 soldadura
Tema 12 soldaduraTema 12 soldadura
Tema 12 soldadura
 

Semelhante a Aplicando o poder de uma GPU no SQL Server

Computação em Finanças em Hardware Gráfico
Computação em Finanças em Hardware GráficoComputação em Finanças em Hardware Gráfico
Computação em Finanças em Hardware Gráfico
Thársis T. P. Souza
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
Diego Santos
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1
B Bellaver
 
Sistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaSistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação Paralela
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoSistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - Introdução
Adriano Teixeira de Souza
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
Joao Galdino Mello de Souza
 

Semelhante a Aplicando o poder de uma GPU no SQL Server (20)

Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Computação em Finanças em Hardware Gráfico
Computação em Finanças em Hardware GráficoComputação em Finanças em Hardware Gráfico
Computação em Finanças em Hardware Gráfico
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
 
Inpe
InpeInpe
Inpe
 
Palestra
PalestraPalestra
Palestra
 
Map Reduce
Map ReduceMap Reduce
Map Reduce
 
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel ApplicationsGPU, CUDA, OpenCL and OpenACC for Parallel Applications
GPU, CUDA, OpenCL and OpenACC for Parallel Applications
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em C
 
Introdução à OpenGL
Introdução à OpenGLIntrodução à OpenGL
Introdução à OpenGL
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2
 
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry piImpressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
 
Sistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaSistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação Paralela
 
Sistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoSistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - Introdução
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Cygwin
CygwinCygwin
Cygwin
 
Pg fabio louvatti
Pg   fabio louvattiPg   fabio louvatti
Pg fabio louvatti
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Ko 7 kdp-05
Ko 7 kdp-05Ko 7 kdp-05
Ko 7 kdp-05
 

Mais de pichiliani

Mais de pichiliani (20)

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona vírus
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teaching
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robô
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientista
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learning
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka?
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtual
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCast
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQL
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Application
 

Último

Último (8)

Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 

Aplicando o poder de uma GPU no SQL Server

  • 1. Aplicando o poder de uma GPU no SQL Server Msc. Mauro Pichiliani (@pichiliani) pichiliani@uol.com.br
  • 3. Sobre mim  Mestre e doutorando em computação pelo ITA  Escritor da SQL Magazine, Fórum Access, Java Magazine, SQLServerCentral.com e outras  Colaborador do iMasters há 10 anos  Co-autor do @databasecast  Foco em diversos bancos de dados 3 | 26/11/2011 |
  • 4. Roteiro  Uso de processamento  GPU? Que bicho é esse?  Processamento paralelo e aplicações  O mercado  Como utilizar uma GPU no SQL Server  #comofaz  Conclusão 4 | 26/11/2011 |
  • 5. Uso de processamento no servidor Prioridades de um servidor de aplicação 5 | 26/11/2011 |
  • 6. Uso de processamento no banco Prioridades de um servidor de banco de dados 6 | 26/11/2011 |
  • 7. Por que a diferença?  No servidor de aplicação:  Processamento do código fonte  Processamento de requisições (Threads, Http)  Gerenciamento de máquinas virtuais  No servidor de banco de dados:  Acesso sequencial a tabelas com muitos dados  Uso de índice causando IO randômico  Plano de execução e operadores imprevisíveis  Grande movimentação de dados para relatórios 7 | 26/11/2011 |
  • 8. Então… Por que utilizar GPU no SQL Server? 8 | 26/11/2011 |
  • 9. GPU? Que bicho é esse? - Jogos  GPU = Graphics Processing Unit  Circuito próprio para manipulação paralela de operações gráficas e instruções x86 (GPGPU)  Não trabalha sozinha: requer um processador  O preço é acessível  Avanços vem da área de entretenimento (games, filmes e séries) 9 | 26/11/2011 |
  • 10. GPU? Que bicho é esse? - Placas  Atualmente a GPU é representada por uma placa dedicada (desktop ou notebook) Geoforce GTX 580 Radeon HD 6990 3072 MB GDDR5 4 GB GDDR5 2.46* TFLOPS Single Precision 5.1 TFLOPS Single Precision 327 GB/s – 1024 Cuda cores 320 GB/s – 3072 Strem Processors 10 | 26/11/2011 |
  • 11. GPU? Que bicho é esse? - Servidor  Há soluções para servidor e SDK (CUDA) 11 | 26/11/2011 |
  • 12. Processamento paralelo - HPC  O uso de GPU requer conhecimento de processamento paralelo (área HPC)  Maior parte do hardware TOP500 (http://www.top500.org/) usa GPU  Para lembrar:  1 megaflop = 1 milhão de flops = 10^6 operações p.f. por segundo;  1 gigaflop = 1 bilhão de flops = 10^9 operações p.f. por segundo;  1 teraflop = 1 trilhão de flops = 10^12 operações p.f. por segundo;  1 petaflop = 1 quatrilhão de flops = 10^15 operações p.f. por segundo.  Um processador topo de linha para servidores fica em torno de 50~70 GFLOPS  Nota: em geral no máximo 10% disso é utilizado  Paralelismo é tradicionamento aplicado em:  Jogos  Simulações  Construção de modelos  Renderização  Segurança (força bruta) 12 | 26/11/2011 |
  • 13. Processamento paralelo - Processador  Não é raro mudanças no processador para melhorar desempenho específico:  Inclusão de instruções MMX para suporte a multimídia  Integração da plataforma de 64 bits  Instruções específicas para melhoria da virtualização  Há também a possibilidade de criação de um chip customizado com FPGA (field-programmable gate arrays)  Que tal um SQL Chip? 13 | 26/11/2011 |
  • 14. O mercado  Pesquisas da área acadêmica abordam desde 2004 o uso de GPU com banco de dados  Oracle apostando no Exadata  IBM usando muito CUDA e preenchendo patentes  Comunidade de software livre experimentando GPU (PostgreSQL e mongoDB)  Amazon fornecendo instâncias do EC2 com GPU  Microsoft ainda não fez nenhum anúncio 14 | 26/11/2011 |
  • 15. Como utilizar uma GPU no SQL Server  Trabalhar com GPU exige conhecimento da arquitetura  Modelo de transferência de dados entre memória da GPU e o processador  Detalhes do SDK (CUDA usa C/C++)  Conceitos: funções de textura, kernel, OpenCL, SIMD 15 | 26/11/2011 |
  • 16. Hello World com CUDA (em C) // Hello World using CUDA // Host function int #include <cuda.h> main(int argc, char** argv) // invoke the kernel { #include <stdio.h> int i; helloWorld<<< dimGrid, dimBlock >>>(d_str); // Prototypes // desired output __global__ void helloWorld(char*); char str[] = "Hello World!"; // retrieve the results from the device // mangle contents of output cudaMemcpy(str, d_str, size, // the null character is left intact for cudaMemcpyDeviceToHost); // Device kernel simplicity __global__ void for(i = 0; i < 12; i++) str[i] -= i; // free up the allocated memory helloWorld(char* str) // on the device { // allocate memory on the device cudaFree(d_str); // determine where in the thread grid char *d_str; size_t size = sizeof(str); // we are cudaMalloc((void**)&d_str, size); // everyone's favorite part printf("%sn", str); int idx = blockIdx.x * blockDim.x + // copy the string to the device cudaMemcpy(d_str, str, size, threadIdx.x; cudaMemcpyHostToDevice); return 0; } // unmangle output // set the grid and block sizes str[idx] += idx; dim3 dimGrid(2); //one block p/ word } dim3 dimBlock(6); //one thread p/ char. 16 | 26/11/2011 |
  • 17. Voltando um pouco…  Antes de programar para GPU veja se o problema é adequado  Exemplos comuns:  Multiplicação de matrix  Tarefas de mineração de dados/previsões  Compactação  Pocessamento numérico intenso  Uso de muitos loops aninhados  Algoritmo para geoposicionamento (manipulação de rotas)  Porque colocar este processamento no banco de dados?  É onde os dados estão (geralmente são MUITOS dados)  Fácil manipulação pelo uso da linguagem SQL  Todos os recursos do .NET  Dica geral: faça testes e veja se GPU é melhor para o seu caso/problema 17 | 26/11/2011 |
  • 18. CUDA no SQL Server – CUDA.NET  SQL Server permite a chamada de assemblies em .NET  Duas abordagens para programar CUDA em C#: 1) CUDA.NET (http://www.hoopoe-cloud.com/Solutions/cuda.net) using GASS.CUDA; // ... CUDA cuda = new CUDA(true); // select first available device (GPU) cuda.CreateContext(0); // load binary kernel module (eg. relative to from bin/Debug/) CUmodule module = cuda.LoadModule("../../mykernel.cubin"); // select function from the module CUfunction function = cuda.GetModuleFunction(module, "fooFunction"); // execute the function fooFunction() on a GPU cuda.Launch(function); 18 | 26/11/2011 |
  • 19. CUDA no SQL Server – CUDAFY.NET 2) CUDAfy .NET SDK(http://www.hybriddsp.com/) 19 | 26/11/2011 |
  • 20. Sou pobre, #comofaz?  Não tenho uma CPU e quero aprender, #comofaz?  Tenha votande e determinação!  Aprenda outros conceitos de programação paralela (MPI, OpenMP, SIMD, etc)  Estude problemas e aprenda o ‘jeito’ de programar paralelo  Alternativa: use um emulador http://gpubrasil.com/2009/10/02/instalacao-do-emulador-cuda/  Outra alternativa: ambiente da CESUP  Unix+Cluster com GPU Tesla+CUDA  Monte projeto, converse com professor  Há possibilidade de conseguir conta de acesso dependendo do projeto 20 | 26/11/2011 |
  • 21. Conclusões  Uso de GPU aliada a CPU fornece muito poder de processamento  GPU com banco de dados ainda é incipiente  Porém há varias possibilidades e oportunidades  Alguns fornecedores já sairam na frente…  Uso de GPU não sai ‘de graça’:  É preciso conhecer programação paralela (e saber resolver problemas)  Requer problema específico  Programação difícil (i.e: você vai sofrer um pouco no começo)  Há possibilidade de utilizar CUDA+.NET no SQL Server 21 | 26/11/2011 |
  • 22. #prontofalei Perguntas? 22 | 26/11/2011 |