Raja adalah perpustakaan abstraksi perangkat lunak C ++, terutama dikembangkan di Lawrence Livermore National Laboratory (LLNL), yang memungkinkan portabilitas model arsitektur dan pemrograman untuk aplikasi HPC. Raja memiliki dua tujuan utama:
Raja menawarkan eksekusi loop paralel portabel dengan menyediakan blok bangunan yang memperpanjang paralel yang diterima secara umum untuk idiom. Raja mengandalkan fitur C ++ 14 standar.
Desain Raja berakar dalam beberapa dekade pengalaman mengerjakan aplikasi multiphysics berbasis jala produksi. Berdasarkan keragaman algoritma dan gaya rekayasa perangkat lunak yang digunakan dalam aplikasi tersebut, RAJA dirancang untuk memungkinkan pengembang aplikasi untuk mengadaptasi konsep Raja dan mengkhususkannya untuk pola implementasi kode yang berbeda dan penggunaan C ++.
Raja berbagi tujuan dan konsep yang ditemukan dalam pendekatan abstraksi portabilitas C ++ lainnya, seperti Kokkos dan Dorongan. Namun, itu termasuk konsep dan kemampuan yang tidak ada dalam model lain yang mendasar untuk aplikasi yang kami kerjakan.
Penting untuk dicatat bahwa, meskipun Raja digunakan dalam keragaman aplikasi produksi, itu sangat banyak kemajuan. Komunitas peneliti dan pengembang aplikasi di LLNL yang secara aktif berkontribusi untuk itu semakin berkembang. Versi yang tersedia karena rilis GitHub mengandung sebagian besar fitur yang baik dan teruji dengan baik. Antarmuka inti kami cukup stabil saat implementasi yang mendasari disempurnakan. Fitur tambahan akan muncul di rilis mendatang.
Kode Raja hidup dalam repositori GitHub. Untuk mengkloning repo, gunakan perintah:
git clone --recursive https://github.com/llnl/raja.git
Kemudian, Anda dapat membangun Raja seperti proyek CMake lainnya, asalkan Anda memiliki kompiler C ++ yang mendukung standar C ++ 14. Cara paling sederhana untuk membangun kode, menggunakan kompiler default sistem Anda, adalah dengan menjalankan urutan perintah berikut di direktori RAJA tingkat atas (build in-source tidak diperbolehkan!):
mkdir build
cd build
cmake ../
make
Rincian lebih lanjut tentang opsi konfigurasi Raja terletak di Panduan Pengguna Raja (ditautkan di bawah).
Kami juga mempertahankan proyek template Raja yang menunjukkan cara menggunakan Raja dalam proyek CMake, baik sebagai submodule git atau sebagai perpustakaan yang diinstal.
Panduan Pengguna Raja adalah tempat terbaik untuk mulai belajar tentang Raja dan cara menggunakannya.
Versi terbaru dari Panduan Pengguna (Raja Develop Branch): https://raja.readthedocs.io
Untuk mengakses dokumen untuk versi Raja yang dirilis lainnya: https://readthedocs.org/projects/raja/
Kami memelihara repositori untuk materi tutorial Raja Portaility Suite: https://github.com/llnl/raja-suite-tutorial
Untuk mengutip Raja, silakan gunakan referensi berikut:
Lapisan Portabilitas Kinerja 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: Kinerja Portabel untuk Aplikasi Ilmiah Skala Besar", 2019 Lokakarya Internasional IEEE/ACM tentang Kinerja, Portabilitas, dan Produktivitas di HPC (P3HPC). Unduh di sini
Suite Kinerja Raja berisi koleksi loop kernel yang diimplementasikan dalam beberapa varian Raja dan Non-Raja. Kami menggunakannya untuk memantau dan menilai kinerja Raja pada platform yang berbeda menggunakan berbagai kompiler. Banyak vendor kompiler utama menggunakan suite untuk meningkatkan dukungan mereka dari abstraksi seperti Raja. Raja Kinerja Raja adalah sumber contoh penggunaan Raja yang sangat baik di mana Anda dapat membandingkan varian Raja dan non-Raja dari berbagai kernel yang berbeda dan back-end Raja.
Repositori Proxy Raja berisi versi RAJA dari beberapa aplikasi proxy HPC yang penting.
Chai menyediakan abstraksi array yang dikelola yang bekerja dengan Raja untuk secara otomatis menyalin data yang digunakan dalam kernel Raja ke ruang yang sesuai untuk dieksekusi. Itu dikembangkan sebagai pelengkap Raja.
Cara paling efektif untuk berkomunikasi dengan tim pengembangan inti Raja adalah melalui milis kami: [email protected]
Anda juga dipersilakan untuk bergabung dengan Raja Google Group kami.
Jika Anda memiliki pertanyaan, temukan bug, atau memiliki ide tentang memperluas fungsionalitas atau penerapan Raja dan tertarik untuk berkontribusi pada pengembangannya, jangan ragu untuk menghubungi kami. Kami sangat tertarik untuk meningkatkan Raja dan mengeksplorasi cara -cara baru untuk menggunakannya.
Tim Raja mengikuti model pengembangan GitFlow. Orang -orang yang ingin berkontribusi pada Raja, harus menyertakan pekerjaan mereka dalam cabang fitur yang dibuat dari cabang Raja develop
. Cabang itu berisi karya terbaru di Raja. Kemudian, buat permintaan tarik dengan cabang develop
sebagai tujuan. Secara berkala, kami menggabungkan cabang pengembangan ke cabang main
dan menandai rilis baru.
Silakan lihat halaman Kontributor Raja, untuk melihat daftar lengkap kontributor proyek.
Raja dilisensikan di bawah lisensi BSD 3-Clause.
Hak cipta dan paten dalam proyek Raja dipertahankan oleh kontributor. Tidak ada penugasan hak cipta yang diperlukan untuk berkontribusi pada Raja.
Open Source Unlimited-BSD 3-Clause Distribution LLNL-CODE-689114
OCEC-16-063
Untuk detail dan pembatasan rilis, silakan lihat informasi di berikut ini:
File individual berisi tag SPDX alih -alih teks lisensi lengkap. Ini memungkinkan pemrosesan mesin informasi lisensi berdasarkan pengidentifikasi lisensi SPDX yang tersedia di sini: https://spdx.org/licenses/
File yang dilisensikan sebagai klausa BSD 3 berisi teks berikut di header lisensi:
SPDX-License-Identifier: (BSD-3-Clause)
Raja menggabungkan dependensi eksternal sebagai submodul di repositori git. Paket -paket ini ditanggung oleh berbagai lisensi permisif. Daftar ringkasan berikut. Lihat lisensi yang disertakan dengan setiap paket untuk detail lengkap.
Packagename: BLT
PackageHomepage: https://github.com/llnl/blt
PackageLicensEdeclared: BSD-3-Clause
Packagename: Camp
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: Lisensi MIT