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

Meet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike Steenbergen
Meet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike SteenbergenMeet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike Steenbergen
Meet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike Steenbergendistributed matters
 
Jenkins multi configuration (matrix)
Jenkins multi configuration (matrix)Jenkins multi configuration (matrix)
Jenkins multi configuration (matrix)Muhammad Zbeedat
 
Open Mic "Notes Federated Login"
Open Mic "Notes Federated Login"Open Mic "Notes Federated Login"
Open Mic "Notes Federated Login"Ranjit Rai
 
4. install and configure hyper v
4. install and configure hyper v4. install and configure hyper v
4. install and configure hyper vHameda Hurmat
 
Administering and configuring System Center Configuration Manager 2012 R2 SP1
Administering and configuring System Center Configuration Manager 2012 R2 SP1Administering and configuring System Center Configuration Manager 2012 R2 SP1
Administering and configuring System Center Configuration Manager 2012 R2 SP1Unitek Eduation
 
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkJohn Dalsgaard
 
Evento Virtual - Continuidad de los desarrollos con Oracle Forms & Reports
Evento Virtual - Continuidad de los desarrollos con Oracle Forms & Reports Evento Virtual - Continuidad de los desarrollos con Oracle Forms & Reports
Evento Virtual - Continuidad de los desarrollos con Oracle Forms & Reports avanttic Consultoría Tecnológica
 
Windows Virtual Desktop 解説
Windows Virtual Desktop 解説Windows Virtual Desktop 解説
Windows Virtual Desktop 解説Takashi Ushigami
 
PCF-VxRail-ReferenceArchiteture
PCF-VxRail-ReferenceArchiteturePCF-VxRail-ReferenceArchiteture
PCF-VxRail-ReferenceArchitetureVuong Pham
 
Agile Integration eBook from 2018
Agile Integration eBook from 2018Agile Integration eBook from 2018
Agile Integration eBook from 2018Kim Clark
 
Developing with SharePoint Framework (SPFx) on-premises
Developing with SharePoint Framework (SPFx) on-premisesDeveloping with SharePoint Framework (SPFx) on-premises
Developing with SharePoint Framework (SPFx) on-premisesDragan Panjkov
 
경쟁사비교:기능
경쟁사비교:기능경쟁사비교:기능
경쟁사비교:기능itian-f5
 
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Odinot Stanislas
 
Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform WSO2
 
Managing sap upgrade_projects
Managing sap upgrade_projectsManaging sap upgrade_projects
Managing sap upgrade_projectsKishore Kumar
 
Scaling Push Messaging for Millions of Devices @Netflix
Scaling Push Messaging for Millions of Devices @NetflixScaling Push Messaging for Millions of Devices @Netflix
Scaling Push Messaging for Millions of Devices @NetflixC4Media
 
Enterprise Business Architecture in Practice -- Leveraging EBA for Success on...
Enterprise Business Architecture in Practice -- Leveraging EBA for Success on...Enterprise Business Architecture in Practice -- Leveraging EBA for Success on...
Enterprise Business Architecture in Practice -- Leveraging EBA for Success on...SteveMelville
 
F5 Solutions for Service Providers
F5 Solutions for Service ProvidersF5 Solutions for Service Providers
F5 Solutions for Service ProvidersBAKOTECH
 

Mais procurados (20)

Meet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike Steenbergen
Meet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike SteenbergenMeet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike Steenbergen
Meet Spilo, Zalando’s HIGH-AVAILABLE POSTGRESQL CLUSTER - Feike Steenbergen
 
IBM MQ V8 Security
IBM MQ V8 SecurityIBM MQ V8 Security
IBM MQ V8 Security
 
Jenkins multi configuration (matrix)
Jenkins multi configuration (matrix)Jenkins multi configuration (matrix)
Jenkins multi configuration (matrix)
 
Open Mic "Notes Federated Login"
Open Mic "Notes Federated Login"Open Mic "Notes Federated Login"
Open Mic "Notes Federated Login"
 
4. install and configure hyper v
4. install and configure hyper v4. install and configure hyper v
4. install and configure hyper v
 
Administering and configuring System Center Configuration Manager 2012 R2 SP1
Administering and configuring System Center Configuration Manager 2012 R2 SP1Administering and configuring System Center Configuration Manager 2012 R2 SP1
Administering and configuring System Center Configuration Manager 2012 R2 SP1
 
CXL at OCP
CXL at OCPCXL at OCP
CXL at OCP
 
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWork
 
Evento Virtual - Continuidad de los desarrollos con Oracle Forms & Reports
Evento Virtual - Continuidad de los desarrollos con Oracle Forms & Reports Evento Virtual - Continuidad de los desarrollos con Oracle Forms & Reports
Evento Virtual - Continuidad de los desarrollos con Oracle Forms & Reports
 
Windows Virtual Desktop 解説
Windows Virtual Desktop 解説Windows Virtual Desktop 解説
Windows Virtual Desktop 解説
 
PCF-VxRail-ReferenceArchiteture
PCF-VxRail-ReferenceArchiteturePCF-VxRail-ReferenceArchiteture
PCF-VxRail-ReferenceArchiteture
 
Agile Integration eBook from 2018
Agile Integration eBook from 2018Agile Integration eBook from 2018
Agile Integration eBook from 2018
 
Developing with SharePoint Framework (SPFx) on-premises
Developing with SharePoint Framework (SPFx) on-premisesDeveloping with SharePoint Framework (SPFx) on-premises
Developing with SharePoint Framework (SPFx) on-premises
 
경쟁사비교:기능
경쟁사비교:기능경쟁사비교:기능
경쟁사비교:기능
 
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
Bare-metal, Docker Containers, and Virtualization: The Growing Choices for Cl...
 
Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform  Introduction to the WSO2 Carbon Platform
Introduction to the WSO2 Carbon Platform
 
Managing sap upgrade_projects
Managing sap upgrade_projectsManaging sap upgrade_projects
Managing sap upgrade_projects
 
Scaling Push Messaging for Millions of Devices @Netflix
Scaling Push Messaging for Millions of Devices @NetflixScaling Push Messaging for Millions of Devices @Netflix
Scaling Push Messaging for Millions of Devices @Netflix
 
Enterprise Business Architecture in Practice -- Leveraging EBA for Success on...
Enterprise Business Architecture in Practice -- Leveraging EBA for Success on...Enterprise Business Architecture in Practice -- Leveraging EBA for Success on...
Enterprise Business Architecture in Practice -- Leveraging EBA for Success on...
 
F5 Solutions for Service Providers
F5 Solutions for Service ProvidersF5 Solutions for Service Providers
F5 Solutions for Service Providers
 

Semelhante a Aplicando o poder da 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áficoThársis T. P. Souza
 
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".Filipo Mór
 
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 ApplicationsMarcos Gonzalez
 
Programando Software Livre em C
Programando Software Livre em CProgramando Software Livre em C
Programando Software Livre em CDiego Santos
 
Defesa TC V1.2.1
Defesa TC V1.2.1Defesa TC V1.2.1
Defesa TC V1.2.1B Bellaver
 
Linux4all#2
Linux4all#2Linux4all#2
Linux4all#2Daniel
 
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 piMarcos Aurelio Barranco
 
Sistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaSistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaAdriano 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çãoAdriano 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 DominguesJoao Galdino Mello de Souza
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 

Semelhante a Aplicando o poder da 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

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 Aumentadapichiliani
 
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íruspichiliani
 
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...pichiliani
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teachingpichiliani
 
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ôpichiliani
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientistapichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
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 learningpichiliani
 
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 TensorFlowpichiliani
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLpichiliani
 
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? pichiliani
 
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 virtualpichiliani
 
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?pichiliani
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastpichiliani
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015pichiliani
 
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...pichiliani
 
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...pichiliani
 
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 SQLpichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Applicationpichiliani
 

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
 

Aplicando o poder da 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 |