clOpenCLip - Estendendo aplicações heterogéneas a ambientes distribuídos de forma transparente - Alves, Rui Alexandre Coelho (2020)
Em sistemas computacionais heterogéneos co-existem dispositivos de computação de diferentes arquiteturas, além da principal (hospedeira). Para tirar partido dessa variedade, com o objetivo de acelerar a sua execução, as aplicações desdobram-se em componentes de código destinados aos diferentes dispositivos disponíveis. Um dos principais modelos de programação deste tipo de aplicações é o OpenCL, modelo aberto e independente, dos fabricantes de hardware. No modelo aplicacional original do OpenCL, uma “aplicação heterogénea” arranca num certo nó hospedeiro, podendo recorrer aos vários dispositivos de computação locais. No entanto, o modelo não permite utilizar dispositivos de outros nós, ainda que interligados em rede com o nó de arranque. O clOpenCLip (cluster OpenCL sobre IP), apresentado neste poster, pretende resolver este problema. O objetivo deste trabalho é a construção de uma solução que possibilite o uso dos múltiplos dispositivos de computação disponíveis num ambiente distribuído, por parte de aplicações que seguem o modelo OpenCL, utilizando comunicação baseada em TCP/IP, e de forma completamente transparente, ou seja, compatível com aplicações OpenCL já pré-compiladas. A agregação dos vários dispositivos de computação disponíveis em ambiente distribuído foi realizada através de um conjunto de serviços que intermedeiam a submissão de pedidos de clientes remotos aos dispositivos co-localizados com os serviços, sendo toda a comunicação cliente-servidor baseada em sockets BSD (sobre UDP ou TCP). Nos clientes, um novo driver OpenCL expõe todos os dispositivos remotos disponíveis e fornece às aplicações a transparência necessária para a exploração desses dispositivos. No estágio atual de desenvolvimento, o clOpenCLip foi já validado com recurso a um conjunto diversificado de benchmarks OpenCL, que permitiram por à prova a estabilidade da implementação e aferir o impacto da comunicação no desempenho. Os objetivos iniciais estão praticamente atingidos, uma vez que já é possível a execução de funções OpenCL em sistemas remotos. Além disso, um grande número de primitivas OpenCL 1.2 já está abrangida no clOpenCLip, o que aumenta o seu potencial de uso. Apesar disso, e de toda a validação já feita através de um vasto conjunto de benchmarks OpenCL, ainda existem aspetos que é necessário considerar: validar a robustez da troca de mensagens quando o protocolo de comunicação escolhido é o UDP; tentar alargar a 100% o grau de cobertura da especificação OpenCL1.2; optimizar o código produzido, de forma a minimizar o mais possível o impacto da comunicação em rede e do processamento das mensagens trocadas; realizar benchmarks com vários clientes interagindo com os mesmos serviços, para validar a robustez destes e estudar a sua escalabilidade.