Pergunta

Todo mundo tem esse enorme supercomputador maciçamente paralelizado em seu desktop na forma de uma GPU da placa gráfica.

  • O que é a "Olá mundo" equivalente da comunidade GPU?
  • O que eu faço, onde eu vou, para começar a programação da GPU para os principais fornecedores de GPU?

-Adam

Foi útil?

Solução

Confira CUDA da NVIDIA, IMO é a plataforma mais fácil de fazer programação GPU. Há toneladas de materiais interessantes para ler. http://www.nvidia.com/object/cuda_home.html

Olá, mundo seria fazer qualquer tipo de cálculo usando GPU.

Espero que ajude.

Outras dicas

  1. Você começa vértice programável e pixel shaders que permitem a execução de código diretamente na GPU para manipular os tampões que estão a ser desenhada. Línguas (ou seja, GL Shader Lang e alta do OpenGL equivalentes de nível Shader Lang e DirectX ), São C sintaxe estilo, e realmente fácil de usar. Alguns exemplos de HLSL pode ser encontrada aqui para o jogo XNA estúdio e Direct X. Eu não tenho quaisquer referências decentes GLSL, mas estou certeza de que há uma volta muito. Estes linguagens de sombreamento dar uma imensa a quantidade de energia manipular o que é atraída a um por vértice ou nível por pixel, directamente na placa de vídeo, tornando as coisas como sombras, iluminação e flor realmente fácil de implementar.
  2. A segunda coisa que vem à mente é usar OpenCL ao código para o novo linhas de uso geral GPU. Eu estou não sei como usar isso, mas meu entendimento é que OpenCL dá os primórdios de ser capaz de processadores de acesso em ambos os placa gráfica e CPU normal. Esta não é a tecnologia convencional ainda, e parece ser impulsionado pela Apple.
  3. CUDA parece ser um tema quente. CUDA é maneira de acessar o poder GPU da Nvidia. Aqui algumas intros

Eu acho que os outros têm respondido à sua segunda pergunta. Quanto ao primeiro, o "Olá Mundo" de CUDA, eu não acho que há um padrão definido, mas, pessoalmente, eu recomendo um somador paralelo (programa ou seja, um que somas N inteiros).

Se você olhar o exemplo de "redução" no SDK NVIDIA, a tarefa aparentemente simples pode ser estendido para demonstrar inúmeras considerações CUDA, como coalesced lê, conflitos banco de memória e desdobramento de loop.

Veja esta apresentação para mais informações:

http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf

Dê uma olhada na ATI Stream Computing SDK . Baseia-se BrookGPU desenvolvido em Stanford.

No futuro todos os trabalhos GPU serão normalizados usando OpenCL . É uma iniciativa da Apple-patrocinado que será gráficos fornecedor do cartão neutro.

CUDA é um excelente quadro para começar. Ele permite que você escrever GPGPU kernels em C. O compilador irá produzir GPU microcódigo do seu código e enviar tudo que é executado na CPU para o seu compilador regular. É NVIDIA única embora e só funciona em cartões 8-series ou melhor. Você pode conferir CUDA zona para ver o que pode ser feito com ele. Há algumas grandes demos na CUDA SDK . A documentação que vem com o SDK é um bom ponto de partida bastante para realmente escrever código. Ele irá orientá-lo através de escrever uma matriz multiplicação kernel, que é um ótimo lugar para começar.

OpenCL é um esforço para fazer uma biblioteca multi-plataforma capaz de programação de código adequado para, entre outras coisas, GPUs. Ele permite escrever o código sem saber o GPU ele será executado em, tornando-o mais fácil de usar algum do poder da GPU sem visar vários tipos de GPU especificamente. Eu suspeito que não é tão alto desempenho como código GPU nativa (ou como nativo como os fabricantes de GPU irá permitir), mas a troca pode valer a pena para algumas aplicações.

É ainda em seus estágios relativamente iniciais (1,1 a partir desta resposta), mas ganhou alguma tração na indústria -. Por exemplo, é suportado nativamente no OS X 10.5 e acima

Outra maneira fácil de entrar em programação GPU, sem entrar em CUDA ou OpenCL, é fazê-lo via OpenACC .

OpenACC funciona como OpenMP, com diretivas de compilador (como #pragma acc kernels) para enviar o trabalho para a GPU. Por exemplo, se você tem um grande loop (únicos maiores realmente benefício):

int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
  b[i] = b[i] * a;
}

Edit:. Infelizmente, apenas o compilador IGP realmente suporta OpenACC agora, para NVIDIA GPU cartões

Tente GPU ++ e libSh

link LibSh tem uma boa descrição de como eles obrigado a linguagem de programação para as primitivas gráficas (e, obviamente, os próprios primitivos), e GPU ++ descreve o que é tudo sobre, ambos com exemplos de código.

Se você usar MATLAB, torna-se muito simples de uso GPU é para computação técnica (cálculos de matriz e matemática pesada / processamento de números). Acho que é útil para a utilização de cartões de GPU fora dos jogos. Confira no link abaixo:

http://www.mathworks.com/discovery/matlab-gpu.html

Eu também estou interessado neste assunto e Programação Paralela. E eu encontrei o seguinte ligação , por favor dê uma olhada Udacity.com!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top