Raja เป็นห้องสมุดของ Abstractions ซอฟต์แวร์ C ++ ซึ่งส่วนใหญ่พัฒนาขึ้นที่ Lawrence Livermore National Laboratory (LLNL) ซึ่งช่วยให้สามารถใช้สถาปัตยกรรมและรูปแบบการเขียนโปรแกรมสำหรับแอปพลิเคชัน HPC ราชามีสองเป้าหมายหลัก:
ราชาเสนอการดำเนินการวนรอบแบบพกพาแบบขนานโดยการจัดทำหน่วยการสร้างที่ขยายขนานที่ได้รับการยอมรับโดยทั่วไปสำหรับสำนวน ราชาอาศัยคุณสมบัติ C ++ 14 มาตรฐาน
การออกแบบของ Raja นั้นมีรากฐานมาจากประสบการณ์หลายทศวรรษในการทำงานกับแอพพลิเคชั่น Multiphysics ที่ใช้ตาข่าย ขึ้นอยู่กับความหลากหลายของอัลกอริทึมและรูปแบบวิศวกรรมซอฟต์แวร์ที่ใช้ในแอปพลิเคชันดังกล่าวราชาได้รับการออกแบบมาเพื่อให้นักพัฒนาแอปพลิเคชันสามารถปรับแนวคิดราชาและเชี่ยวชาญสำหรับรูปแบบการใช้งานรหัสที่แตกต่างกันและการใช้งาน C ++
ราชาแบ่งปันเป้าหมายและแนวคิดที่พบในวิธีการที่เป็นนามธรรมในการพกพา C ++ อื่น ๆ เช่น Kokkos และแรงผลักดัน อย่างไรก็ตามมันรวมถึงแนวคิดและความสามารถที่ขาดหายไปในรุ่นอื่น ๆ ที่เป็นพื้นฐานของแอพพลิเคชั่นที่เราทำงานด้วย
เป็นสิ่งสำคัญที่จะต้องทราบว่าแม้ว่าราชาจะใช้ในแอพพลิเคชั่นการผลิตที่หลากหลาย แต่ก็เป็นงานที่ทำงานอยู่อย่างมาก ชุมชนนักวิจัยและนักพัฒนาแอปพลิเคชันที่ LLNL ซึ่งมีส่วนช่วยอย่างแข็งขันกำลังเติบโต เวอร์ชันที่มีให้เมื่อ GitHub เปิดตัวมีคุณสมบัติที่ใช้งานได้ดีและได้รับการทดสอบอย่างดีเป็นส่วนใหญ่ อินเทอร์เฟซหลักของเราค่อนข้างเสถียรในขณะที่การใช้งานพื้นฐานกำลังได้รับการปรับปรุง คุณสมบัติเพิ่มเติมจะปรากฏในการเผยแพร่ในอนาคต
รหัสราชาอาศัยอยู่ในที่เก็บ GitHub หากต้องการโคลน repo ให้ใช้คำสั่ง:
git clone --recursive https://github.com/llnl/raja.git
จากนั้นคุณสามารถสร้างราชาเช่นโครงการ CMake อื่น ๆ หากคุณมีคอมไพเลอร์ C ++ ที่รองรับมาตรฐาน C ++ 14 วิธีที่ง่ายที่สุดในการสร้างรหัสโดยใช้คอมไพเลอร์เริ่มต้นระบบของคุณคือการเรียกใช้ลำดับคำสั่งต่อไปนี้ในไดเรกทอรี RAJA ระดับบนสุด (ไม่อนุญาตให้สร้างในแหล่งข้อมูล!)::
mkdir build
cd build
cmake ../
make
รายละเอียดเพิ่มเติมเกี่ยวกับตัวเลือกการกำหนดค่า RAJA อยู่ในคู่มือผู้ใช้ RAJA (เชื่อมโยงด้านล่าง)
นอกจากนี้เรายังรักษา โครงการแม่แบบราชา ที่แสดงวิธีการใช้ราชาในโครงการ CMake ไม่ว่าจะเป็น Submodule Git หรือเป็นไลบรารีที่ติดตั้ง
คู่มือผู้ใช้ราชาเป็นสถานที่ที่ดีที่สุดในการเริ่มเรียนรู้เกี่ยวกับราชาและวิธีการใช้งาน
คู่มือผู้ใช้เวอร์ชันล่าสุด (Raja Develop Branch): https://raja.readthedocs.io
ในการเข้าถึงเอกสารสำหรับ Raja รุ่นอื่นที่ปล่อยออกมา: https://readthedocs.org/projects/raja/
เรารักษาพื้นที่เก็บข้อมูลสำหรับ Raja Portaility Suite Suite วัสดุ: https://github.com/llnl/raja-suite-tutorial
ในการอ้างอิงราชาโปรดใช้ข้อมูลอ้างอิงต่อไปนี้:
เลเยอร์การพกพาประสิทธิภาพของราชา 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 IEEE/ACM International Workshop เกี่ยวกับประสิทธิภาพการพกพาและผลผลิตใน HPC (P3HPC) ดาวน์โหลดที่นี่
ชุดประสิทธิภาพของราชา มีชุดของห่วงเคอร์เนลที่ใช้ในหลายราชาและตัวแปรที่ไม่ใช่ราชา เราใช้เพื่อตรวจสอบและประเมินประสิทธิภาพของราชาบนแพลตฟอร์มที่แตกต่างกันโดยใช้คอมไพเลอร์ที่หลากหลาย ผู้ขายคอมไพเลอร์รายใหญ่หลายรายใช้ห้องสวีทเพื่อปรับปรุงการสนับสนุนสิ่งที่เป็นนามธรรมเช่นราชา Raja Performance Suite เป็นแหล่งตัวอย่างที่ยอดเยี่ยมของการใช้งานราชาที่คุณสามารถเปรียบเทียบตัวแปรราชาและไม่ใช่ราชาของเมล็ดพันธุ์ที่แตกต่างกันและ raja back-end
Repository Raja Proxies มีแอพพลิเคชั่นพร็อกซี HPC ที่สำคัญหลายฉบับของราชา
ชัย จัดเตรียมสิ่งที่เป็นนามธรรมอาร์เรย์ที่ได้รับการจัดการซึ่งทำงานร่วมกับราชาเพื่อคัดลอกข้อมูลที่ใช้ในเคอร์เนลราชาโดยอัตโนมัติไปยังพื้นที่ที่เหมาะสมสำหรับการดำเนินการ มันได้รับการพัฒนาเป็นส่วนประกอบของราชา
วิธีที่มีประสิทธิภาพมากที่สุดในการสื่อสารกับทีมพัฒนาหลักราชาคือผ่านรายชื่อผู้รับจดหมายของเรา: [email protected]
นอกจากนี้คุณยังสามารถเข้าร่วม Raja Google Group ของเราได้
หากคุณมีคำถามค้นหาข้อผิดพลาดหรือมีแนวคิดเกี่ยวกับการขยายการทำงานหรือการบังคับใช้ของราชาและมีความสนใจในการสนับสนุนการพัฒนาโปรดอย่าลังเลที่จะติดต่อเรา เราสนใจที่จะปรับปรุงราชาและสำรวจวิธีการใหม่ ๆ ในการใช้งาน
ทีมราชาตามรูปแบบการพัฒนา Gitflow คนที่ต้องการมีส่วนร่วมในราชาควรรวมงานของพวกเขาในสาขาฟีเจอร์ที่สร้างขึ้นจากสาขา develop
ราชา สาขานั้นมีงานล่าสุดในราชา จากนั้นสร้างคำขอดึงด้วยสาขา develop
เป็นปลายทาง เรารวมสาขาพัฒนาเป็นระยะ ๆ เข้ากับสาขา main
และติดแท็กรุ่นใหม่
โปรดดูหน้า Raja ผู้มีส่วนร่วมเพื่อดูรายชื่อผู้สนับสนุนทั้งหมดในโครงการ
ราชาได้รับใบอนุญาตภายใต้ใบอนุญาต BSD 3 ข้อ
ลิขสิทธิ์และสิทธิบัตรในโครงการราชาจะถูกเก็บรักษาไว้โดยผู้มีส่วนร่วม ไม่จำเป็นต้องมีการมอบหมายลิขสิทธิ์เพื่อสนับสนุนราชา
โอเพนซอร์สไม่ จำกัด-การแจกแจง BSD 3-clause LLNL-CODE-689114
OCEC-16-063
สำหรับรายละเอียดการวางจำหน่ายและข้อ จำกัด โปรดดูข้อมูลในสิ่งต่อไปนี้:
แต่ละไฟล์มีแท็ก SPDX แทนข้อความใบอนุญาตเต็มรูปแบบ สิ่งนี้ช่วยให้การประมวลผลของเครื่องจักรของข้อมูลใบอนุญาตตามตัวระบุใบอนุญาต SPDX ที่มีอยู่ที่นี่: https://spdx.org/licenses/
ไฟล์ที่ได้รับอนุญาตเป็น BSD 3-clause มีข้อความต่อไปนี้ในส่วนหัวใบอนุญาต:
SPDX-License-Identifier: (BSD-3-Clause)
ราชารวมการพึ่งพาภายนอกเป็น submodules ในที่เก็บ Git แพ็คเกจเหล่านี้ครอบคลุมโดยใบอนุญาตที่อนุญาตต่างๆ รายชื่อสรุปดังต่อไปนี้ ดูใบอนุญาตที่รวมอยู่ในแต่ละแพ็คเกจสำหรับรายละเอียดทั้งหมด
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: ใบอนุญาต MIT