RAJA는 주로 LLNL (Lawrence Livermore National Laboratory)에서 개발 된 C ++ 소프트웨어 추상화 라이브러리로 HPC 애플리케이션을위한 아키텍처 및 프로그래밍 모델 휴대 성을 가능하게합니다. Raja에는 두 가지 주요 목표가 있습니다.
Raja는 일반적으로 수용되는 관용구에 대해 평행 한 평행을 확장하는 빌딩 블록을 제공하여 휴대용 병렬 루프 실행을 제공합니다. Raja는 표준 C ++ 14 기능에 의존합니다.
Raja의 디자인은 생산 메시 기반 다중 물리 제 애플리케이션에서 수십 년의 경험을 쌓았습니다. 이러한 응용 프로그램에 사용되는 다양한 알고리즘 및 소프트웨어 엔지니어링 스타일을 기반으로 RAJA는 애플리케이션 개발자가 RAJA 개념을 조정하고 다양한 코드 구현 패턴 및 C ++ 사용에 대해 전문화 할 수 있도록 설계되었습니다.
Raja는 Kokkos 및 Strust와 같은 다른 C ++ 휴대 성 추상화 접근법에서 발견 된 목표와 개념을 공유합니다. 그러나 여기에는 우리와 함께 일하는 응용 프로그램의 기본이되는 다른 모델에는없는 개념과 기능이 포함됩니다.
Raja는 다양한 생산 응용 프로그램에 사용되지만 진행중인 작업이라는 점에 유의해야합니다. LLNL의 연구원 및 응용 프로그램 개발자 커뮤니티가 적극적으로 기여하고 있습니다. GitHub 릴리스로 사용 가능한 버전에는 주로 잘 사용되고 잘 테스트 한 기능이 포함되어 있습니다. 우리의 핵심 인터페이스는 상당히 안정적이며 기본 구현이 개선되고 있습니다. 향후 릴리스에는 추가 기능이 나타납니다.
Raja 코드는 Github 저장소에 있습니다. Repo를 복제하려면 명령을 사용하십시오.
git clone --recursive https://github.com/llnl/raja.git
그런 다음 C ++ 14 표준을 지원하는 C ++ 컴파일러가있는 경우 다른 CMAKE 프로젝트와 마찬가지로 RAJA를 구축 할 수 있습니다. 시스템 기본 컴파일러를 사용하여 코드를 빌드하는 가장 간단한 방법은 최상위 레벨 RAJA 디렉토리에서 다음의 명령 시퀀스를 실행하는 것입니다 (소스 빌드는 허용되지 않습니다!).
mkdir build
cd build
cmake ../
make
RAJA 구성 옵션에 대한 자세한 내용은 RAJA 사용자 안내서 (아래 링크)에 있습니다.
또한 CMAKE 프로젝트에서 RAJA를 GIT 하위 모듈 또는 설치된 라이브러리로 사용하는 방법을 보여주는 RAJA 템플릿 프로젝트를 유지합니다.
Raja 사용자 안내서는 Raja와 사용 방법에 대한 학습을 시작하기에 가장 좋은 곳입니다.
가장 최근의 사용자 안내서 (Raja 개발 지점) : https://raja.readthedocs.io
다른 Raja 릴리스 버전에 대한 문서에 액세스하려면 https://readthedocs.org/projects/raja/
우리는 Raja Portaility Suite 튜토리얼 자료를위한 저장소를 유지 관리합니다 : https://github.com/llnl/raja-suite-tutorial
Raja를 인용하려면 다음 참조를 사용하십시오.
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 : 대규모 과학 응용 프로그램을위한 휴대용 성능", 2019 HPC (P3HPC)의 IEEE/ACM 국제 워크숍 (P3HPC). 여기에서 다운로드하십시오
Raja Performance Suite 에는 여러 Raja 및 비 라자 변형으로 구현 된 루프 커널 모음이 포함되어 있습니다. 다양한 컴파일러를 사용하여 다른 플랫폼에서 RAJA 성능을 모니터링하고 평가하는 데 사용합니다. 많은 주요 컴파일러 공급 업체는이 제품군을 사용하여 Raja와 같은 추상화 지원을 향상시킵니다. Raja Performance Suite는 다양한 커널과 Raja 백엔드의 Raja와 비 라자 변형을 비교할 수있는 Raja 사용의 훌륭한 사례입니다.
RAJA 프록시 저장소에는 여러 중요한 HPC 프록시 응용 프로그램의 RAJA 버전이 포함되어 있습니다.
Chai는 Raja와 함께 Raja 커널에 사용 된 데이터를 적절한 실행 공간에 자동으로 복사하기 위해 관리되는 배열 추상화를 제공합니다. 그것은 Raja의 보완으로 개발되었습니다.
핵심 Raja Development 팀과 의사 소통하는 가장 효과적인 방법은 메일 링리스트를 통해 [email protected] 입니다.
Raja Google 그룹에 가입 할 수 있습니다.
질문이 있거나 버그를 찾거나 Raja의 기능 또는 적용 가능성을 확장하고 개발에 기여하는 데 관심이있는 경우 주저하지 말고 저희에게 연락하십시오. 우리는 Raja를 개선하고 새로운 사용 방법을 탐색하는 데 매우 관심이 있습니다.
Raja 팀은 Gitflow 개발 모델을 따릅니다. Raja에 기여하고자하는 사람들은 Raja develop
지점에서 만든 기능 지점에 작업을 포함해야합니다. 그 지점에는 Raja의 최신 작업이 포함되어 있습니다. 그런 다음 develop
분기를 대상으로 풀 요청을 작성하십시오. 주기적으로 개발 지점을 main
브랜치로 병합하고 새 릴리스를 태그합니다.
프로젝트에 기고자의 전체 목록을 보려면 Raja 기고자 페이지를 참조하십시오.
Raja는 BSD 3-Clause 라이센스에 따라 라이센스가 부여됩니다.
Raja 프로젝트의 저작권 및 특허는 기고자가 유지합니다. Raja에 기여하기 위해서는 저작권 과제가 필요하지 않습니다.
무제한 오픈 소스 -BSD 3-Clause 배포 LLNL-CODE-689114
OCEC-16-063
릴리스 세부 사항 및 제한 사항은 다음의 정보를 참조하십시오.
개별 파일에는 정식 라이센스 텍스트 대신 SPDX 태그가 포함되어 있습니다. 이를 통해 여기에서 사용 가능한 SPDX 라이센스 식별자를 기반으로 라이센스 정보의 기계 처리가 가능합니다 : https://spdx.org/licenses/
BSD 3-Clause로 라이센스가 부여 된 파일에는 라이센스 헤더에 다음 텍스트가 포함되어 있습니다.
SPDX-License-Identifier: (BSD-3-Clause)
Raja는 외부 의존성을 GIT 저장소에서 하위 모듈로 묶습니다. 이 패키지는 다양한 허용 라이센스로 덮여 있습니다. 요약 목록은 다음과 같습니다. 자세한 내용은 각 패키지에 포함 된 라이센스를 참조하십시오.
Packagename : blt
PackageHomePage : https://github.com/llnl/blt
PackagelicensedEclared : BSD-3-Clause
Packagename : 캠프
PackageHomePage : https://github.com/llnl/camp
PackagelicensedEclared : BSD-3-Clause
Packagename : Cub
PackageHomePage : https://github.com/nvlabs/cub
PackagelicensedEclared : BSD-3-Clause
Packagename : Rocprim
PackageHomePage : https://github.com/rocmsoftwareplatform/rocprim.git
PackagelicensedEclared : MIT 라이센스