Comparando CUDA e SYCL para Tarefas de Bioinformática
Uma análise do CUDA e SYCL em buscas em bancos de dados de proteínas.
― 6 min ler
Índice
Nos últimos anos, o uso de diferentes tipos de hardware de computador tem se tornado cada vez mais comum na pesquisa científica. Essa tendência, conhecida como computação heterogênea, permite que os pesquisadores aproveitem vários processadores, incluindo unidades de processamento gráfico (GPUs) de empresas como NVIDIA, Intel e AMD. Um grande desafio que os pesquisadores enfrentam é como escrever software que funcione bem em diferentes tipos de hardware sem precisar reescrevê-lo para cada um. Este artigo explora duas linguagens de programação, CUDA e SYCL, para ver como elas se saem em uma tarefa específica de Bioinformática, busca em banco de dados de proteínas.
Entendendo CUDA e SYCL
CUDA é uma linguagem de programação desenvolvida pela NVIDIA, principalmente para programar suas próprias GPUs. Ela se tornou muito popular porque permite que os desenvolvedores escrevam códigos que rodam rápido em hardware da NVIDIA. No entanto, como a CUDA é exclusiva para dispositivos da NVIDIA, não dá pra usar em GPUs da AMD ou Intel.
Por outro lado, SYCL é um padrão de programação mais novo criado pelo Khronos Group. Diferente da CUDA, a SYCL é feita para funcionar em vários tipos de processadores, não só nos que são fabricados por uma única empresa. Os desenvolvedores podem escrever código SYCL uma vez, e ele tem o potencial de rodar em hardware diferente sem precisar de grandes mudanças. Isso faz da SYCL uma opção mais flexível para programadores que querem que seu código funcione em diversos sistemas.
Por que esse estudo é importante
A escolha entre CUDA e SYCL pode impactar bastante na facilidade com que os pesquisadores podem usar a mais nova potência de computação disponível. Muitas aplicações em bioinformática, como a busca em grandes bancos de dados de proteínas, podem se beneficiar da velocidade das GPUs. Comparando CUDA e SYCL para essa tarefa específica, os pesquisadores podem ter uma ideia sobre desempenho e facilidade de uso em diferentes hardwares.
A tarefa de busca em banco de dados de proteínas
Na bioinformática, os pesquisadores geralmente precisam comparar sequências de proteínas para encontrar semelhanças e diferenças. Um método comum para fazer isso é o algoritmo Smith-Waterman. Esse método é eficaz, mas também bem complexo porque precisa comparar várias possíveis alocações entre as sequências.
O principal objetivo deste estudo é avaliar quão bem CUDA e SYCL podem realizar essa tarefa de alocação em diferentes tipos de GPUs. Os pesquisadores querem ver se uma linguagem é melhor que a outra e se conseguem alcançar níveis de desempenho semelhantes em diversos hardwares.
Configuração experimental
Para testar o desempenho de ambas as linguagens, os pesquisadores usaram um conjunto de dez GPUs diferentes, incluindo uma mistura de modelos da NVIDIA, AMD e Intel. Eles rodaram o mesmo aplicativo de busca em banco de dados de proteínas usando ambas as linguagens de programação e coletaram dados sobre quão rápido cada uma conseguia realizar as tarefas.
Desempenho com uma única GPU
Os resultados mostraram que nas GPUs da NVIDIA, tanto a CUDA quanto a SYCL se saíram igualmente bem. Na verdade, não houve diferença significativa de velocidade entre as duas na maioria dos modelos testados. Por exemplo, um modelo de GPU mostrou uma leve vantagem de desempenho para a SYCL, enquanto outro favoreceu a CUDA, mas as diferenças foram mínimas no geral.
Quando se trata de GPUs da AMD e Intel, a SYCL mostrou que conseguia rodar de forma eficiente, algo que a CUDA não pode fazer, já que é exclusivamente para dispositivos da NVIDIA. Isso destaca as vantagens de portabilidade da SYCL, pois conseguiu um bom desempenho em uma gama mais ampla de hardwares.
Desempenho com múltiplas GPUs
Para complementar os testes com uma única GPU, os pesquisadores também realizaram testes usando várias GPUs ao mesmo tempo. Nesse setup de múltiplas GPUs, eles descobriram que a SYCL não introduziu nenhum atraso extra em comparação com a CUDA. Para a maioria das configurações, a SYCL teve um desempenho tão bom ou até melhor que a CUDA.
Um ponto interessante é que ao usar o aplicativo SW com diferentes GPUs, a eficiência às vezes caiu em comparação com o uso de uma única GPU. Isso pode acontecer por causa de como a carga de trabalho é dividida entre as GPUs, que pode não estar sempre balanceada de forma eficaz, levando a algumas GPUs a serem subutilizadas.
Implicações dos resultados
Os achados deste estudo sugerem que tanto a CUDA quanto a SYCL podem oferecer um bom desempenho para buscas em bancos de dados de proteínas, especialmente no hardware da NVIDIA. No entanto, a SYCL se destaca em termos de portabilidade, mostrando que pode rodar de forma eficaz em várias marcas de GPU. Isso é especialmente crucial à medida que mais pesquisadores buscam usar hardware não NVIDIA em seus fluxos de trabalho.
A capacidade de escrever código que pode rodar em diferentes plataformas sem grandes alterações está se tornando cada vez mais importante à medida que o cenário da computação evolui. Com muitos pesquisadores trabalhando com hardwares diversos, a portabilidade da SYCL pode torná-la uma opção mais atraente no futuro.
Trabalho futuro
Embora os resultados deste estudo sejam promissores, os pesquisadores reconhecem que a SYCL ainda é um modelo de programação em desenvolvimento. Eles planejam melhorar ainda mais a implementação da SYCL otimizando o código e testando-o com diferentes tipos de hardware.
Os pesquisadores também pretendem explorar outros modelos de programação que buscam compatibilidade cruzada semelhante para fornecer uma comparação mais ampla. Esse trabalho contínuo é essencial, pois ajudará a garantir que os pesquisadores tenham as ferramentas necessárias para aproveitar ao máximo os recursos de computação disponíveis de forma eficiente.
Conclusão
A comparação entre CUDA e SYCL para buscas em bancos de dados de proteínas destaca o cenário em evolução das linguagens de programação na área de bioinformática. Embora ambas as linguagens ofereçam um bom desempenho em GPUs da NVIDIA, a adaptabilidade da SYCL em várias marcas de hardware traz vantagens significativas. À medida que os pesquisadores continuam a buscar maior eficiência e desempenho em seus cálculos, a SYCL pode se tornar um jogador chave na facilitação desse objetivo, especialmente em ambientes de computação heterogênea, onde opções de hardware diversificadas são comuns.
Título: Comparing Performance and Portability between CUDA and SYCL for Protein Database Search on NVIDIA, AMD, and Intel GPUs
Resumo: The heterogeneous computing paradigm has led to the need for portable and efficient programming solutions that can leverage the capabilities of various hardware devices, such as NVIDIA, Intel, and AMD GPUs. This study evaluates the portability and performance of the SYCL and CUDA languages for one fundamental bioinformatics application (Smith-Waterman protein database search) across different GPU architectures, considering single and multi-GPU configurations from different vendors. The experimental work showed that, while both CUDA and SYCL versions achieve similar performance on NVIDIA devices, the latter demonstrated remarkable code portability to other GPU architectures, such as AMD and Intel. Furthermore, the architectural efficiency rates achieved on these devices were superior in 3 of the 4 cases tested. This brief study highlights the potential of SYCL as a viable solution for achieving both performance and portability in the heterogeneous computing ecosystem.
Autores: Manuel Costanzo, Enzo Rucci, Carlos García Sánchez, Marcelo Naiouf, Manuel Prieto-Matías
Última atualização: 2023-11-10 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2309.09609
Fonte PDF: https://arxiv.org/pdf/2309.09609
Licença: https://creativecommons.org/licenses/by-nc-sa/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.
Ligações de referência
- https://www.pcgamer.com/intel-is-already-matching-amd-for-gaming-graphics-market-share/
- https://intel.github.io/llvm-docs/GetStartedGuide.html
- https://codeplay.com/portal/blogs/2022/12/16/bringing-nvidia-and-amd-support-to-oneapi.html
- https://www.uniprot.org/downloads
- https://doi.org/10.1016/0022-2836
- https://github.com/kokkos/kokkos
- https://github.com/LLNL/RAJA
- https://docs.nvidia.com/cuda/cuda-c-programming-guide/#maximize-instruction-throughput
- https://www.alcf.anl.gov/sites/default/files/SYCLcon_2020_Homerding_Tramm.pdf