OPS(Oxford Parallel library for Structured meshsolvers)는 멀티 블록 구조 메시 알고리즘을 작성하기 위한 고급 임베디드 도메인 특정 언어이며, 멀티 코어 및 다중 코어 아키텍처에서 자동 병렬화를 가능하게 하는 해당 소프트웨어 라이브러리 및 코드 변환 도구입니다. . 다중 블록 구조의 메쉬. OPS API는 C/C++ 및 Fortran에 내장되어 있습니다.
이 저장소에는 백엔드 라이브러리와 코드 생성기의 구현이 포함되어 있으며 다음과 같이 구성됩니다.
ops
: 사용자 및 런타임 OPS C/C++ API 구현apps
: C의 애플리케이션 예제입니다. 이는 사용자 애플리케이션 코드의 예제이며 OPS 코드 생성기에서 생성된 대상 병렬 코드도 포함합니다.ops_translator
: C/C++/Fortran API용 Python/Clang/Fparser/jinja2 기반 OPS 코드 생성기(새로운 코드 생성 엔진). 참고: 문서 읽기에 제공된 지침을 참조하세요. 이 코드 생성을 활용하는 데 필요한 Python 종속성에 대한 자세한 내용은ops_translator_legacy
: C/C++/Fortran API용 Python OPS 코드 생성기(기존 코드 생성 엔진)scripts
: 환경 변수 설정 및 애플리케이션 테스트를 위한 예제 스크립트cmake
: cmake 설치 파일makefiles
: makefile 기반 설치 파일doc
: 문서 OPS 문서는 문서 읽기에서 볼 수 있습니다.
OPS를 인용하려면 다음 문서를 참조하세요.
IZ Reguly, GR Mudalige 및 MB Giles, OPS를 사용하여 런타임에 대규모 스텐실 코드의 루프 타일링, 병렬 및 분산 시스템의 IEEE 트랜잭션, vol. 29, 아니. 4, pp. 873-886, 2018년 4월 1일, doi: 10.1109/TPDS.2017.2778161.
@ARTICLE{Reguly_et_al_2018,
author={Reguly, István Z. and Mudalige, Gihan R. and Giles, Michael B.},
journal={IEEE Transactions on Parallel and Distributed Systems},
title={Loop Tiling in Large-Scale Stencil Codes at Run-Time with OPS},
year={2018},
volume={29},
number={4},
pages={873-886},
doi={10.1109/TPDS.2017.2778161}}
OPS 관련 버그 및 문제를 보고하는 데 선호되는 방법은 저장소의 문제 추적기를 통해 문제를 제출하는 것입니다. 사용자는 OP-DSL 팀에 연락하여 작성자에게 직접 이메일을 보낼 수도 있습니다.
OPS에 기여하려면 다음 단계를 따르십시오.
develop
분기에 대한 끌어오기 요청을 생성하여 변경 사항을 제출하세요. develop
브랜치의 기여는 새 릴리스를 생성할 때 마스터 브랜치에 병합됩니다.
OPS는 BSD 3-Clause License에 따라 오픈 소스 프로젝트로 출시됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.