Raja é uma biblioteca de abstrações de software C ++, desenvolvida principalmente no Lawrence Livermore National Laboratory (LLNL), que permite a portabilidade do modelo de arquitetura e programação para aplicativos de HPC. Raja tem dois objetivos principais:
Raja oferece execução portátil de loop paralelo, fornecendo blocos de construção que estendem o paralelo geralmente aceito para o idioma. Raja conta com os recursos padrão C ++ 14.
O design de Raja está enraizado em décadas de experiência trabalhando em aplicativos multifísicos baseados em malha de produção. Com base na diversidade de algoritmos e estilos de engenharia de software usados nessas aplicações, a Raja foi projetada para permitir que os desenvolvedores de aplicativos adaptem conceitos de Raja e os especializem para diferentes padrões de implementação de código e uso de C ++.
Raja compartilha metas e conceitos encontrados em outras abordagens de abstração de portabilidade do C ++, como Kokkos e impulso. No entanto, inclui conceitos e recursos ausentes em outros modelos que são fundamentais para aplicações com as quais trabalhamos.
É importante observar que, embora o Raja seja usado em uma diversidade de aplicações de produção, é um trabalho em andamento. A comunidade de pesquisadores e desenvolvedores de aplicativos da LLNL que contribuem ativamente para ela está crescendo. As versões disponíveis, pois os lançamentos do GitHub contêm principalmente recursos bem utilizados e bem testados. Nossas interfaces principais são bastante estáveis enquanto as implementações subjacentes estão sendo refinadas. Recursos adicionais aparecerão em lançamentos futuros.
O código Raja vive em um repositório do GitHub. Para clonar o repo, use o comando:
git clone --recursive https://github.com/llnl/raja.git
Em seguida, você pode criar Raja como qualquer outro projeto CMake, desde que você tenha um compilador C ++ que suporta o padrão C ++ 14. A maneira mais simples de construir o código, usando o compilador padrão do sistema, é executar a seguinte sequência de comandos no diretório Raja de nível superior (as construções na fonte não são permitidas!):
mkdir build
cd build
cmake ../
make
Mais detalhes sobre as opções de configuração do RAJA estão localizados no Raja User Guide (vinculado abaixo).
Também mantemos um projeto de modelo Raja que mostra como usar o Raja em um projeto CMake, como um submódulo Git ou como uma biblioteca instalada.
O Raja User Guide é o melhor lugar para começar a aprender sobre Raja e como usá -lo.
A versão mais recente do guia do usuário (Raja Develop Branch): https://raja.readthedocs.io
Para acessar os documentos para outras versões liberadas da Raja: https://readthedocs.org/projects/raja/
Mantemos um repositório para o Raja Portaility Suite Tutorial Material: https://github.com/llnl/raja-suite-tutorial
Para citar Raja, use as seguintes referências:
Camada de portabilidade de desempenho de Raja. https://github.com/llnl/raja
Da Beckingsale, J. Burmark, R. Hornung, H. Jones, W. Killian, AJ Kunen, O. Pearce, P. Robinson, BS Ryujin, TRW Scogland ", Raja: desempenho portátil para aplicações científicas em larga escala", 2019 Workshop Internacional IEEE/ACM sobre desempenho, portabilidade e produtividade no HPC (P3HPC). Baixe aqui
O Raja Performance Suite contém uma coleção de núcleos de loop implementados em várias variantes Raja e não-raja. Usamos para monitorar e avaliar o desempenho do Raja em diferentes plataformas usando uma variedade de compiladores. Muitos fornecedores importantes do compilador usam a suíte para melhorar seu apoio a abstrações como Raja. O Raja Performance Suite é uma excelente fonte de exemplos de uso de Raja, onde você pode comparar variantes de Raja e não-raja de uma variedade de diferentes kernels e back-end-end-end.
O repositório de proxies Raja contém versões Raja de vários aplicativos importantes de proxy de HPC.
O CHAI fornece uma abstração de matriz gerenciada que funciona com o RAJA para copiar automaticamente os dados usados nos kernels Raja para o espaço apropriado para execução. Foi desenvolvido como um complemento para Raja.
A maneira mais eficaz de se comunicar com a equipe principal de desenvolvimento da Raja é através da nossa lista de discussão: [email protected]
Você também pode se juntar ao nosso grupo Raja Google.
Se você tiver dúvidas, encontre um bug ou tiver idéias sobre como expandir a funcionalidade ou aplicabilidade do Raja e estiver interessado em contribuir para o seu desenvolvimento, não hesite em entrar em contato conosco. Estamos muito interessados em melhorar o Raja e explorar novas maneiras de usá -lo.
A equipe Raja segue o modelo de desenvolvimento do GitFlow. As pessoas que desejam contribuir para Raja devem incluir seu trabalho em uma filial de recursos criada a partir da filial Raja develop
. Esse ramo contém o trabalho mais recente em Raja. Em seguida, crie uma solicitação de tração com a filial develop
como destino. Periodicamente, mesclamos a ramificação Desenvolvimento na filial main
e marcamos uma nova versão.
Consulte a página dos colaboradores da Raja, para ver a lista completa de colaboradores do projeto.
Raja é licenciado sob a licença de 3-cláusulas BSD.
Direitos autorais e patentes no projeto Raja são mantidos por colaboradores. Nenhuma tarefa de direitos autorais é necessária para contribuir para Raja.
Código aberto ilimitado-Distribuição de 3 cláusulas BSD LLNL-CODE-689114
OCEC-16-063
Para detalhes e restrições de lançamento, consulte as informações a seguir:
Os arquivos individuais contêm tags SPDX em vez do texto completo da licença. Isso permite o processamento da máquina de informações de licença com base nos identificadores de licença SPDX que estão disponíveis aqui: https://spdx.org/license/
Os arquivos licenciados como 3 cláusulas BSD contêm o seguinte texto no cabeçalho da licença:
SPDX-License-Identifier: (BSD-3-Clause)
Raja agrupa suas dependências externas como submódulos no repositório Git. Esses pacotes são cobertos por várias licenças permissivas. Uma listagem de resumo segue. Veja a licença incluída em cada pacote para obter detalhes completos.
Packagename: BLT
PackageHomePage: https://github.com/llnl/blt
PackagelicensEdCarared: BSD-3-cláusula
Packagename: acampamento
PackageHomePage: https://github.com/llnl/camp
PackagelicensEdCarared: BSD-3-cláusula
Packagename: Cub
PackageHomePage: https://github.com/nvlabs/cub
PackAGelicensEdCarared: BSD-3-cláusula
Packagename: RocpriM
PackageHomePage: https://github.com/rocmsoftwareplatform/rocprim.git
PackAGelicensEdCarared: MIT Licença