OCCA เป็นเฟรมเวิร์กโอเพ่นซอร์ส แบบพกพา และเป็นกลางสำหรับผู้จำหน่ายสำหรับการเขียนโปรแกรมแบบขนานบนแพลตฟอร์มที่ต่างกัน OCCA API มอบโมเดลที่รวมเป็นหนึ่งสำหรับแนวคิดการเขียนโปรแกรมที่แตกต่างกัน เช่น อุปกรณ์ หน่วยความจำ หรือเคอร์เนล ในขณะที่ OCCA Kernel Language (OKL) ช่วยให้สามารถสร้างเคอร์เนลของอุปกรณ์พกพาได้โดยใช้ส่วนขยายตามคำสั่งไปยังภาษา C
แอปพลิเคชันด้านวิทยาศาสตร์คอมพิวเตอร์และวิศวกรรมที่สำคัญต่อภารกิจจากภาครัฐและเอกชนพึ่งพา OCCA ผู้ใช้ที่โดดเด่น ได้แก่ กระทรวงพลังงานและเชลล์ของสหรัฐอเมริกา
คุณสมบัติที่สำคัญ
OCCA ใช้ระบบการสร้าง CMake ชำระเงินคู่มือการติดตั้งเพื่อดูภาพรวมที่ครอบคลุมของการตั้งค่าบิลด์ทั้งหมดและคำแนะนำสำหรับการสร้างบน Windows หรือ Mac OS
เพื่อความสะดวก เชลล์สคริปต์ configure-cmake.sh
ได้รับการจัดเตรียมไว้เพื่อขับเคลื่อนบิลด์ CMake คอมไพเลอร์ แฟล็ก และพารามิเตอร์บิลด์อื่นๆ สามารถปรับได้จากที่นั่น โดยดีฟอลต์ สคริปต์นี้ใช้ ./build
และ ./install
install สำหรับไดเร็กทอรี build และติดตั้ง
ข้อมูลต่อไปนี้สาธิตลำดับทั่วไปของคำสั่งเชลล์เพื่อสร้าง ทดสอบ และติดตั้ง occa:
$ ./configure-cmake.sh
$ cmake --build build --parallel < number-of-threads >
$ ctest --test-dir build --output-on-failure
$ cmake --install build --prefix install
หากมีการติดตั้งการขึ้นต่อกันในตำแหน่งที่ไม่ได้มาตรฐาน ให้ตั้งค่าตัวแปรสภาพแวดล้อมที่สอดคล้องกันเป็นพาธนี้
ระหว่างการติดตั้ง ไฟล์ Env Modules <install-prefix>/modulefiles/occa
จะถูกสร้างขึ้น เมื่อโมดูลนี้ถูกโหลด พาธไปยัง bin
ที่ติดตั้ง lib
และไดเร็กทอรี include
จะถูกต่อท้ายกับตัวแปรสภาพแวดล้อม เช่น PATH
และ LD_LIBRARY_PATH
เพื่อความสะดวก OCCA จะจัดเตรียมไฟล์แพ็คเกจ CMake ซึ่งได้รับการกำหนดค่าระหว่างการติดตั้ง ไฟล์แพ็กเกจเหล่านี้กำหนดเป้าหมายที่นำเข้า OCCA::libocca
และค้นหาการอ้างอิงที่จำเป็นทั้งหมด
ตัวอย่างเช่น CMakeLists.txt ของโปรเจ็กต์ดาวน์สตรีมที่ใช้ OCCA จะรวมไว้ด้วย
find_package (OCCA REQUIRED)
add_executable (downstream-app ...)
target_link_libraries (downstream-app PRIVATE OCCA::libocca)
add_library (downstream-lib ...)
target_link_libraries (downstream-lib PUBLIC OCCA::libocca)
อินเตอร์เฟสบรรทัดคำสั่ง OCCA สามารถพบได้ใน <install-prefix>/bin/occa
เครื่องมือนี้สามารถใช้เพื่อสืบค้นข้อมูลเกี่ยวกับฮาร์ดแวร์และการกำหนดค่าของ OCCA บนแพลตฟอร์มที่กำหนด
ตัวอย่างเช่น การเรียก occa info
จะมีแบ็กเอนด์ OCCA และข้อมูลจำเพาะฮาร์ดแวร์ที่เกี่ยวข้อง ในขณะที่ occa env
จะแสดงค่าของตัวแปรสภาพแวดล้อมที่เกี่ยวข้องกับ OCCA หากต้องการดูรายการตัวเลือกที่มีทั้งหมด ให้โทร occa --help
$ occa info
========+======================+=================================
CPU(s) | Processor Name | AMD EPYC 7532 32-Core Processor
| Memory | 251.6 GB
| Clock Frequency | 2.4 MHz
| SIMD Instruction Set | SSE2
| SIMD Width | 128 bits
| L1d Cache Size | 1 MB
| L1i Cache Size | 1 MB
| L2 Cache Size | 16 MB
| L3 Cache Size | 256 MB
========+======================+=================================
OpenCL | Platform 0 | NVIDIA CUDA
| ----------------------+---------------------------------
| Device 0 | NVIDIA A100-PCIE-40GB
| Device Type | gpu
| Compute Cores | 108
| Global Memory | 39.40 GB
========+======================+=================================
CUDA | Device Name | NVIDIA A100-PCIE-40GB
| Device ID | 0
| Memory | 39.40 GB
========+======================+=================================
ต้องการความช่วยเหลือ? ชำระเงินที่ Repository Wiki หรือถามคำถามในหมวดการสนทนาถามตอบ
หากต้องการให้คำติชม ให้เริ่มการสนทนาในหมวดหมู่การอภิปรายทั่วไปหรือแนวคิด
งานนี้ได้รับการสนับสนุนบางส่วนจาก
OCCA มีให้บริการภายใต้ใบอนุญาต MIT