Avançar para o conteúdo

Entrevista exclusiva: Ian Buck, da Nvidia, fala sobre GPGPU

    1651193043

    Conheça Ian Buck da Nvidia

    Obrigado por tomar o tempo para conversar hoje. Vamos começar com algumas noções básicas. Por que você não conta aos nossos leitores um pouco sobre você e o que você faz atualmente na Nvidia?

    Eu sou o Diretor de Software para GPU Computing aqui na Nvidia. Meu foco principal é construir e evoluir uma plataforma de computação GPU completa, que inclui software de sistema, ferramentas de desenvolvimento, linguagem e direção do compilador, bibliotecas e aplicativos e algoritmos direcionados. Com a ajuda de uma grande equipe, desenvolvemos o software do usuário final e definimos a direção da computação GPU na Nvidia.

    Por que não começamos do começo? Imagino que seu interesse pelo GPGPU não tenha começado quando você tinha 5 anos de idade – quais foram os eventos que estavam acontecendo em Princeton ou Stanford que realmente o levaram a descobrir o interesse pelo GPGPU?

    Eu me envolvi com computação GPU nos meus dias de Princeton, experimentando convecção térmica e simulação de fluidos em hardware gráfico, que na época era o SGI O2. Embora as coisas estivessem tão restritas, era difícil defender isso.

    Eu seriamente comecei a olhar para a computação GPU durante minha pesquisa de doutorado em Stanford. Em Stanford, eu, juntamente com outros membros da comunidade de pesquisa, percebi que a progressão natural dos gráficos programáveis ​​era a evolução da GPU para um processador de uso mais geral. Escrevemos um dos primeiros artigos SIGGRAPH sobre ray tracing com hardware de GPU de classe DX9 para ajudar a provar o ponto. O que foi tão motivador no trabalho foi que esse processador commodity, que estava disponível no PC de todos, estava seguindo uma taxa de crescimento de desempenho ao cubo da lei de Moore, muito mais rápida que a CPU. Isso levantou a questão: o que um PC poderia fazer se tivesse várias ordens de magnitude mais potência de computação do que hoje? Um divisor de águas total para as ciências computacionais, bem como visão computacional, IA, mineração de dados e gráficos.

    Qual foi o seu papel com Brook?

    Depois de trabalhar na capacidade de rastreamento de raios na GPU, meu foco de pesquisa em Stanford mudou para entender o modelo de programação correto para computação em GPU. Na época, muitos outros mostraram que a GPU era boa em uma variedade de aplicativos diferentes, mas não havia uma boa estrutura ou modelo de programação sobre como se deveria pensar na GPU como um dispositivo de computação. Na época, era necessário um PhD em computação gráfica para poder portar um aplicativo para a GPU. Então eu comecei o projeto Brook com o objetivo de definir uma linguagem de programação para computação GPU, que abstraia os grafismos da GPU em conceitos de programação mais gerais. O conceito de programação fundamental de Brook era o “stream”, que era uma coleção de elementos de dados que exigiam trabalho semelhante. Brook acabou se tornando minha tese de doutorado em Stanford. 

    Seu trabalho começou com Merrimac, o Stanford Streaming Super Computer. Como isso é diferente de algo como um Tesla?

    Os conceitos do modelo de programação de Brook eram aplicáveis ​​a mais do que apenas GPUs. Em Stanford trabalhamos em duas implementações diferentes do modelo de programação Brook: uma para GPUs, outra para Merrimac que era uma arquitetura de pesquisa desenvolvida em Stanford. Muitas das ideias lançadas como parte do Merrimac influenciaram como as GPUs podem ser aprimoradas para computação de uso geral. Deve-se notar também que Bill Dally, que foi o principal investigador da Merrimac em Stanford, é agora o cientista-chefe da Nvidia. 

    A CUDA tem raízes no Gelato? Qual foi a primeira exploração acadêmica do GPGPU? E quanto ao primeiro uso comercializado?

    Comecei a CUDA enquanto completava minha pesquisa em Stanford. A Nvidia já apoiou muito minha pesquisa e viu claramente o potencial de habilitar melhor a computação GPU no lado do hardware. Entrei na Nvidia para iniciar o projeto CUDA em 2005. Na época, éramos apenas eu e mais um engenheiro. Agora, desenvolvemos o projeto na organização que é hoje e um componente central para as GPUs da Nvidia hoje.

    www.gpgpu.org fornece uma boa história da computação GPU, que remonta a 2002.

    Atualmente, a AMD empurra Brook como a linguagem de programação de escolha para GPGPU, enquanto a Nvidia tem C com extensões CUDA. Como você compararia os pontos fortes/fracos de ambos?

    Começando na Nvidia, tivemos a oportunidade de revisitar algumas das decisões fundamentais de design da Brook, que foram amplamente baseadas no que o hardware da classe DX9 poderia alcançar. Uma das principais limitações eram as restrições do modelo de memória, que exigia que o programador mapeasse seu algoritmo em torno de um padrão de acesso à memória bastante limitado. Com nossas extensões C com CUDA, relaxamos essas restrições. Fundamentalmente, o programador simplesmente recebia um enorme conjunto de threads e podia acessar a memória da maneira que desejasse. Essa melhoria, assim como algumas outras, nos permitiu implementar a semântica completa da linguagem C na GPU.

    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x