ChunelFeng/CGraph

【A common used C++ & Python DAG framework】 一个通用的、无三方依赖的、跨平台的、收录于awesome-cpp的、基于流图的并行计算框架。欢迎star & fork & 交流

해결하는 문제

CGraph는 복잡한 작업 시퀀스를 방향성 비순환 그래프(DAG)로 조직하고 실행할 수 있는 방법을 제공합니다. 작업 간 의존성 관리를 해결하여, 의존성이 없는 작업은 자동으로 병렬로 실행되며, 종속 작업은 전제 조건이 완료된 후에만 실행되도록 보장합니다.

작동 방식

사용자는 GNode 클래스를 상속하고 run() 메서드를 구현하여 작업을 정의합니다. 이러한 노드는 지정된 의존성과 함께 GPipeline에 등록됩니다. 프레임워크의 내부 스케줄러가 실행 흐름을 처리하며, 다음과 같은 고급 로직을 지원합니다:

  • 병렬성: 의존성이 없는 노드는 병렬로 실행됩니다.
  • 그룹화: GGroup를 사용해 조건부 로직, 반복문, 집계 실행을 구현할 수 있습니다.
  • 스케줄링: 작업에 대한 일시정지, 재개, 타임아웃 설정을 지원합니다.
  • 다중 언어: 순수한 C++11로 작성되었지만, Python API(pycgraph)를 제공하며 C#, Java, Go에 대한 네이티브 구현도 있습니다.

대상 사용자

실행 파이프라인, 워크플로 엔진, 또는 구조화된 작업 스케줄링과 병렬 처리가 필요한 시스템을 구축해야 하는 개발자에게 적합합니다.

주요 특징

  • 의존성 없음: 순수한 C++11 표준 라이브러리로 구축되었습니다.
  • 크로스 플랫폼: macOS, Linux, Windows, Android와 호환됩니다.
  • 고급 흐름 제어: 반복문, 조건 분기, 비동기 실행을 지원합니다.
  • 확장성: 아스펙트 지향 프로그래밍(aspect), 함수 인젝션, 파이프라인 간 메시지 기반 통신 등의 기능을 포함합니다.
  • 성능 도구: 내장된 성능 분석(perf)과 Graphviz 시각화를 통해 실행 그래프를 시각화할 수 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트