Sobre o serviço
TraduzidoEu desenvolvo núcleos numéricos de alto desempenho em Futhark — uma linguagem puramente funcional e paralela que compila para CUDA e OpenCL. Se você tem um loop quente, simulação ou um grande volume de operações em arrays que está atingindo o teto da CPU, eu o reescreverei para rodar na GPU e você não precisará escrever uma única linha de código de dispositivo de baixo nível à mão. Futhark fornece fortes garantias: sem efeitos colaterais, sem surpresas de aliasing, e o próprio compilador funde operações de map, reduce, scan e segmentadas em núcleos compactos. O fluxo de trabalho típico é este. Primeiro, eu perfilo seu pipeline atual e encontro seções que são verdadeiramente paralelas. Então, eu as expresso em Futhark através de combinadores puramente funcionais, preservando legibilidade e determinismo. Eu comparo o resultado com sua versão base, ajusto tamanhos de bloco e padrões de acesso à memória e itero até que os números sejam convincentes. Finalmente, eu incorporo tudo de volta em sua pilha: Futhark gera uma biblioteca C e eu a encapsulo para que você possa chamá-la do Python via ctypes ou uma pequena extensão, ou vinculá-la diretamente em um programa host em C ou C++. Ao longo dos anos, eu acelerei a precificação de opções de Monte Carlo, filtros de imagem e sinal, estênceis físicos, procedimentos de álgebra linear e pré-processamento para aprendizado de máquina. Você recebe código-fonte limpo, um script de construção, um conjunto de testes que verifica a saída da GPU em relação a uma linha de base, resultados de benchmark e uma breve nota sobre como reconstruir e estender o código. Descreva a tarefa e o hardware alvo — e eu estimarei a aceleração real antes de começarmos.