Aplicando o poder de uma GPU noSQL ServerMsc. Mauro Pichiliani (@pichiliani)pichiliani@uol.com.br
AVISO2 | 26/11/2011 |
Sobre mim Mestre e doutorando em computação pelo ITA Escritor da SQL Magazine, Fórum Access, Java  Magazine, SQLServerCe...
Roteiro     Uso de processamento     GPU? Que bicho é esse?     Processamento paralelo e aplicações     O mercado    ...
Uso de processamento no servidor           Prioridades de um servidor de aplicação5 | 26/11/2011 |
Uso de processamento no banco  Prioridades de um servidor de banco de dados6 | 26/11/2011 |
Por que a diferença?  No servidor de aplicação:         Processamento do código fonte         Processamento de requisiç...
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...
GPU? Que bicho é esse? - Placas   Atualmente a GPU é representada por uma    placa dedicada (desktop ou notebook)  Geofor...
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 ha...
Processamento paralelo - Processador   Não é raro mudanças no processador para melhorar    desempenho específico:        ...
O mercado Pesquisas da área acadêmica abordam desde 2004 o uso de  GPU com banco de dados Oracle apostando no Exadata I...
Como utilizar uma GPU no SQL Server Trabalhar com GPU exige conhecimento da arquitetura Modelo de transferência de dados...
Hello World com CUDA (em C)// Hello World using CUDA                 // Host function                                     ...
Voltando um pouco…   Antes de programar para GPU veja se o problema é adequado   Exemplos comuns:         Multiplicação...
CUDA no SQL Server – CUDA.NET SQL Server permite a chamada de assemblies em .NET Duas abordagens para programar CUDA em ...
CUDA no SQL Server – CUDAFY.NET2) 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 conceit...
Conclusões Uso de GPU aliada a CPU fornece muito poder de  processamento GPU com banco de dados ainda é incipiente Poré...
#prontofalei                    Perguntas?22 | 26/11/2011 |
Upcoming SlideShare
Loading in...5
×

Aplicando o poder de uma GPU no SQL Server

1,730

Published on

Esta palestra foi apresentada no enveito SQLSat100 que aconteceu em 26/11/2011 na sede da Microsoft em São Paulo, Brasil

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total Views
1,730
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Aplicando o poder de uma GPU no SQL Server

  1. 1. Aplicando o poder de uma GPU noSQL ServerMsc. Mauro Pichiliani (@pichiliani)pichiliani@uol.com.br
  2. 2. AVISO2 | 26/11/2011 |
  3. 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. 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ão4 | 26/11/2011 |
  5. 5. Uso de processamento no servidor Prioridades de um servidor de aplicação5 | 26/11/2011 |
  6. 6. Uso de processamento no banco Prioridades de um servidor de banco de dados6 | 26/11/2011 |
  7. 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órios7 | 26/11/2011 |
  8. 8. Então… Por que utilizar GPU no SQL Server?8 | 26/11/2011 |
  9. 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. 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 Processors10 | 26/11/2011 |
  11. 11. GPU? Que bicho é esse? - Servidor  Há soluções para servidor e SDK (CUDA)11 | 26/11/2011 |
  12. 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. 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. 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úncio14 | 26/11/2011 |
  15. 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, SIMD15 | 26/11/2011 |
  16. 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 memoryhelloWorld(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); // everyones 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. 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/problema17 | 26/11/2011 |
  18. 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 moduleCUfunction function = cuda.GetModuleFunction(module, "fooFunction");// execute the function fooFunction() on a GPUcuda.Launch(function); 18 | 26/11/2011 |
  19. 19. CUDA no SQL Server – CUDAFY.NET2) CUDAfy .NET SDK(http://www.hybriddsp.com/)19 | 26/11/2011 |
  20. 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 projeto20 | 26/11/2011 |
  21. 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 Server21 | 26/11/2011 |
  22. 22. #prontofalei Perguntas?22 | 26/11/2011 |
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×