Raja es una biblioteca de abstracciones de software C ++, desarrolladas principalmente en Lawrence Livermore National Laboratory (LLNL), que permite la portabilidad del modelo de arquitectura y programación para aplicaciones HPC. Raja tiene dos objetivos principales:
Raja ofrece ejecución portátil de bucle paralelo al proporcionar bloques de construcción que extienden el paralelo generalmente aceptado para el idioma. Raja se basa en características estándar de C ++ 14.
El diseño de Raja se basa en décadas de experiencia trabajando en aplicaciones multifísicas basadas en la malla de producción. Basado en la diversidad de algoritmos y estilos de ingeniería de software utilizados en tales aplicaciones, Raja está diseñado para permitir a los desarrolladores de aplicaciones adaptar los conceptos RAJA y especializarlos para diferentes patrones de implementación de código y uso de C ++.
Raja comparte objetivos y conceptos que se encuentran en otros enfoques de abstracción de portabilidad de C ++, como Kokkos y empuje. Sin embargo, incluye conceptos y capacidades que están ausentes en otros modelos que son fundamentales para las aplicaciones con las que trabajamos.
Es importante tener en cuenta que, aunque Raja se usa en una diversidad de aplicaciones de producción, es en gran medida un trabajo en progreso. La comunidad de investigadores y desarrolladores de aplicaciones en LLNL que contribuye activamente está creciendo. Las versiones disponibles como lanzamientos de GitHub contienen principalmente características bien utilizadas y bien probadas. Nuestras interfaces centrales son bastante estables, mientras que las implementaciones subyacentes se refinan. Aparecerán características adicionales en futuros lanzamientos.
El código Raja vive en un repositorio de GitHub. Para clonar el repositorio, use el comando:
git clone --recursive https://github.com/llnl/raja.git
Luego, puede construir Raja como cualquier otro proyecto CMake, siempre que tenga un compilador C ++ que admite el estándar C ++ 14. La forma más sencilla de construir el código, utilizando el compilador predeterminado de su sistema, es ejecutar la siguiente secuencia de comandos en el directorio RAJA de nivel superior (¡no están permitidas las compilaciones en el código!)::
mkdir build
cd build
cmake ../
make
Más detalles sobre las opciones de configuración de Raja se encuentran en la Guía del usuario de Raja (vinculado a continuación).
También mantenemos un proyecto de plantilla Raja que muestra cómo usar Raja en un proyecto CMake, ya sea como un submódulo GIT o como una biblioteca instalada.
La Guía del usuario de Raja es el mejor lugar para comenzar a aprender sobre Raja y cómo usarlo.
La versión más reciente de la guía del usuario (rama Raja Develople): https://raja.readthedocs.io
Para acceder a documentos para otras versiones lanzadas a Raja: https://readthedocs.org/projects/raja/
Mantenemos un repositorio del Raja Portaility Suite Tutorial Material: https://github.com/llnl/raja-suite-tutorial
Para citar a Raja, use las siguientes referencias:
RAJA Capa de portabilidad de rendimiento. 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: rendimiento portátil para aplicaciones científicas a gran escala", 2019 Taller Internacional IEEE/ACM sobre rendimiento, portabilidad y productividad en HPC (P3HPC). Descargar aquí
La suite Raja Performance contiene una colección de núcleos de bucle implementados en múltiples variantes Raja y no RAJA. Lo usamos para monitorear y evaluar el rendimiento de Raja en diferentes plataformas utilizando una variedad de compiladores. Muchos proveedores de compiladores importantes usan la suite para mejorar su apoyo a abstracciones como Raja. La suite Raja Performance es una excelente fuente de ejemplos de uso de Raja donde puede comparar variantes Raja y no RAJA de una variedad de diferentes núcleos y back-ends de Raja.
El repositorio de proxies Raja contiene versiones RAJA de varias aplicaciones proxy HPC importantes.
Chai proporciona una abstracción de matriz administrada que funciona con RAJA para copiar automáticamente los datos utilizados en los núcleos Raja al espacio apropiado para la ejecución. Fue desarrollado como un complemento para Raja.
La forma más efectiva de comunicarse con el equipo central de desarrollo de Raja es a través de nuestra lista de correo: [email protected]
También puede unirse a nuestro grupo Raja Google.
Si tiene preguntas, encuentre un error o tiene ideas sobre la expansión de la funcionalidad o aplicabilidad de Raja y está interesado en contribuir a su desarrollo, no dude en contactarnos. Estamos muy interesados en mejorar Raja y explorar nuevas formas de usarlo.
El equipo Raja sigue el modelo de desarrollo de GitFlow. La gente que desee contribuir a Raja debe incluir su trabajo en una rama de características creada a partir de la rama Raja develop
. Esa rama contiene el último trabajo en Raja. Luego, cree una solicitud de extracción con la rama develop
como destino. Periódicamente, fusionamos la rama de desarrollo en la rama main
y etiquetamos una nueva versión.
Consulte la página de contribuyentes de Raja para ver la lista completa de contribuyentes al proyecto.
Raja tiene licencia bajo la licencia BSD 3 cláusula.
Los contribuyentes retienen los derechos de autor y las patentes en el Proyecto Raja. No se requiere asignación de derechos de autor para contribuir a Raja.
Corriente abierto ilimitado-BSD 3 cláusula Distribución LLNL-CODE-689114
OCEC-16-063
Para obtener detalles y restricciones de lanzamiento, consulte la información de la siguiente manera:
Los archivos individuales contienen etiquetas SPDX en lugar del texto completo de la licencia. Esto permite el procesamiento de la máquina de la información de la licencia basada en los identificadores de licencia SPDX que están disponibles aquí: https://spdx.org/licenses/
Los archivos que tienen licencia como cláusula BSD 3 contienen el siguiente texto en el encabezado de la licencia:
SPDX-License-Identifier: (BSD-3-Clause)
RAJA agrupa sus dependencias externas como submódulos en el repositorio GIT. Estos paquetes están cubiertos por varias licencias permisivas. Sigue un listado de resumen. Consulte la licencia incluida con cada paquete para obtener todos los detalles.
PackageName: BLT
PaqueteHomepage: https://github.com/llnl/blt
PackageliceDeclared: Cláusula BSD-3
Packagename: campamento
PaqueteHomepage: https://github.com/llnl/camp
PackageliceDeclared: Cláusula BSD-3
Packagename: Cub
Paquete de paquetes: https://github.com/nvlabs/cub
PackageliceDeclared: Cláusula BSD-3
PackageName: Rocprim
PaqueteHomepage: https://github.com/rocmsoftwareplatform/rocprim.git
PackageliceDeclared: Licencia del MIT