Pergunta

Estou investigando maneiras de usar a GPU para processar dados de streaming. Eu tinha duas opções, mas não consegui decidir para qual caminho seguir?

Meus critérios são os seguintes:

  1. Facilidade de uso (boa API)
  2. Comunidade e documentação
  3. atuação
  4. Futuro

Vou codificar em C e C ++ no Linux.

Foi útil?

Solução

OpenCl

  • interface do seu código de produção
  • Portátil entre diferentes hardware gráfico
  • operações limitadas, mas atalhos pré -preparados

CUDA

  • linguagem separada (Cuda C)
  • apenas hardware nvidia
  • controle quase total sobre o código (codificação em uma linguagem do tipo C)
  • Muitas ferramentas de perfil e depuração

Resumindo - OpenCl é portátil, o CUDA é apenas o NVIDIA. No entanto, sendo um idioma independente, o CUDA é muito mais poderoso e tem várias ferramentas realmente boas.

  1. Fácil de usar - O OpenCL é mais fácil de usar fora da caixa, mas depois de configurar o ambiente de codificação CUDA, é quase como codificar em C.
  2. Comunidade e documentação - Ambos têm uma extensa documentação e exemplos, no entanto, acho que Cuda tem melhor.
  3. atuação -O CUDA permite um maior controle, portanto, pode ser melhor ajustado para um desempenho mais alto.
  4. Futuro - Difícil dizer realmente.

Outras dicas

Minhas experiências pessoais foram:

  1. API: OpenCl tem API um pouco mais complexa. No entanto, na maioria das vezes, você gastará com o código do kernel, e aqui ambos são quase idênticos.

  2. Comunidade: Cuda tem uma comunidade muito maior e depois o Open Up até agora, mas isso provavelmente vai se unir.

  3. Documentação: Ambos estão muito bem documentados.

  4. Desempenho: Fizemos a experiência, que os drivers de OpenCL ainda não estão totalmente otimizados.

  5. Futuro: O futuro está no OpenCL, pois é um padrão aberto, não restrito a um fornecedor ou hardware específico!

Esta avaliação é de 2010, provavelmente desatualizada.

OpenCl todo o caminho, a menos que você tenha um motivo específico para usar o CUDA. O OpenCL funciona bem em multicores como o Intel i7, além de executar no GPUs. Ao usar o OpenCL, você pode executá -lo em uma gama muito mais ampla de hardware, desde telefones celulares dróides até os nós de computação IBM Power7 do maior supercomputador do mundo, Águas azuis, que deve ficar online no próximo ano.

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