RAJA - это библиотека абстракций программного обеспечения C ++, в основном разработанной в Национальной лаборатории Lawrence Livermore (LLNL), которая обеспечивает порт архитектуру и модели программирования для приложений HPC. Раджа имеет две основные цели:
Раджа предлагает портативную, параллельную петлю, предоставляя строительные блоки, которые расширяют общепринятую параллель для идиомы. Раджа полагается на стандартные функции C ++ 14.
Дизайн Раджа основан на десятилетиях опыта работы над многочисленными приложениями на основе производственных сетей. Основываясь на разнообразии алгоритмов и стилей разработки программного обеспечения, используемых в таких приложениях, RAJA предназначен для того, чтобы позволить разработчикам приложений адаптировать концепции RAJA и специализировать их на различные модели реализации кода и использование C ++.
Раджа делится целями и понятиями, найденными в других подходах абстракции переносимости C ++, таких как коккос и тяга. Тем не менее, он включает в себя концепции и возможности, которые отсутствуют в других моделях, которые являются фундаментальными для приложений, с которыми мы работаем.
Важно отметить, что, хотя Раджа используется в разнообразных производственных приложениях, это очень много работы. Сообщество исследователей и разработчиков приложений в LLNL, которое активно вносит в него вклад. Версии, доступные в виде выпусков GitHub, содержат в основном хорошо используемые и хорошо проверяемые функции. Наши основные интерфейсы довольно стабильны, в то время как базовые реализации уточняются. Дополнительные функции появятся в будущих выпусках.
Код Раджа живет в репозитории GitHub. Чтобы клонировать репо, используйте команду:
git clone --recursive https://github.com/llnl/raja.git
Затем вы можете построить Raja, как и любой другой проект Cmake, при условии, что у вас есть компилятор C ++, который поддерживает стандарт C ++ 14. Самый простой способ создать код, используя компилятор системы по умолчанию,-это запустить следующую последовательность команд в каталоге RAJA верхнего уровня (сборки в исходном исходном коде не допускаются!):
mkdir build
cd build
cmake ../
make
Более подробная информация о параметрах конфигурации RAJA находится в Руководстве пользователя RAJA (связано ниже).
Мы также поддерживаем проект шаблона Raja , который показывает, как использовать Raja в проекте Cmake, в качестве подмодуля GIT или в качестве установленной библиотеки.
Руководство пользователя Raja - лучшее место для начала изучения Раджа и того, как его использовать.
Самая последняя версия Руководства пользователя (Raja Разработка Branch): https://raja.readthedocs.io
Чтобы получить доступ к документам для других выпущенных версий Raja: https://readthedocs.org/projects/raja/
Мы поддерживаем хранилище для учебного пособия Raja Portail
Чтобы цитировать Раджа, используйте следующие ссылки:
Раджа производительность. https://github.com/llnl/raja
Date Beckingsale, J. Burmark, R. Hornung, H. Jones, W. Killian, AJ Kunen, O. Pearce, P. Robinson, BS Ryujin, Trw Scogland, «Раджа: портативные результаты для крупномасштабных научных применений», 2019 Международный семинар IEEE/ACM по производительности, переносимости и производительности в HPC (P3HPC). Скачать здесь
Suite Raja Performance содержит коллекцию ядер петлей, реализованную в нескольких вариантах Raja и Non-Raja. Мы используем его для мониторинга и оценки производительности RAJA на разных платформах, используя различные компиляторы. Многие крупные поставщики компилятора используют набор для улучшения своей поддержки таких абстракций, как Раджа. Suite Raja Performance является отличным источником примеров использования Raja, где вы можете сравнить варианты Раджа и нераджа различных ядер и обработки раджи.
Репозиторий Raja Proxies содержит версии RAJA нескольких важных прокси -приложений HPC.
Chai предоставляет управляемую абстракцию массива, которая работает с Raja для автоматической копии данных, используемых в ядрах раджа в соответствующее пространство для выполнения. Он был разработан как дополнение к Радже.
Самый эффективный способ общения с основной командой разработчиков Raja-это наш список рассылки: [email protected]
Вы также можете присоединиться к нашей группе Google Raja.
Если у вас есть вопросы, найдите ошибку или у вас есть идеи о расширении функциональности или применимости Raja, и вы заинтересованы в содействии ее разработке, пожалуйста, не стесняйтесь обращаться к нам. Мы очень заинтересованы в улучшении Raja и изучении новых способов его использования.
Команда Раджа следует модели разработки Gitflow. Люди, желающие внести свой вклад в Раджу, должны включать свою работу в филиал, develop
из филиала Раджа. Эта филиал содержит последнюю работу в Радже. Затем создайте запрос на притяжение с помощью develop
Franch в качестве пункта назначения. Периодически мы объединяем разработку ветви в main
ветвь и отмечаем новый релиз.
Пожалуйста, смотрите страницу Anportors Raja, чтобы увидеть полный список участников проекта.
Раджа имеет лицензию по лицензии BSD 3-rack.
Авторские права и патенты в проекте Раджа сохраняются участниками. Никакое назначение авторских прав не требуется для внесения вклад в Раджу.
Unlimited Open Source-BSD 3-CLAUSE Распределение LLNL-CODE-689114
OCEC-16-063
Для получения информации о выпуске и ограничениях, пожалуйста, смотрите информацию в следующем:
Отдельные файлы содержат теги SPDX вместо полного текста лицензии. Это позволяет обработать машинную информацию о лицензии на основе идентификаторов лицензий SPDX, которые доступны здесь: https://spdx.org/licenses/
Файлы, которые лицензированы как BSD 3-rack, содержат следующий текст в заголовке лицензии:
SPDX-License-Identifier: (BSD-3-Clause)
Раджа связывает свои внешние зависимости в качестве подмодулей в репозитории 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 Лицензия