Chino |
Documentación de cgraph

CGraph es un marco de plataforma cruzada que se basa en un marco cíclico de G RAPH basado en C ++ puro sin dependencias de terceros.
Usted, con él, puede construir sus propios operadores simplemente y describir cualquier horario de ejecución que sea necesario, como dependencia, paralelo, agregación, etc.
Los tutoriales y la información de contacto se muestran de la siguiente manera.
1. Introducción
CGraph se llama [color, imagen] en chino, y es un marco de ejecución de procesos de gráficos multiplataforma sin ninguna dependencia de terceros. A través de la programación subyacente GPipeline (tubería), proporciona la función de la ejecución secuencial de elementos dependientes y la ejecución concurrente de elementos no dependientes en la programación de EDAG.
Los usuarios solo necesitan heredar GNode (nodo), implementar el método run() de la subclase y establecer dependencias según sea necesario para realizar la ejecución gráfica o la ejecución de la tubería de la tarea. También es posible establecer varios GGroup (grupos) que contienen información de nodos múltiples para controlar el juicio condicional, el bucle y la lógica de ejecución concurrente del gráfico.
El proyecto proporciona un tipo de Param rico (parámetro) para la interoperabilidad de datos en diferentes escenarios de aplicación. GAdapter GEvent las diversas funciones de elementos se pueden ampliar horizontalmente agregando GAspect ;

Este proyecto se escribe utilizando la biblioteca estándar Pure C ++ 11 y no tiene dependencias de terceros. Compatible con los sistemas de MacOS , Linux , Windows y Android , admite la compilación local y el desarrollo secundario a través de CLion , VSCode , Xcode , Visual Studio , Code::Blocks , Qt Creator y otros IDE para las instrucciones de compilación CGRAPH.
Para obtener una introducción y uso funcional detallados, consulte el contenido del artículo en yimianzhiyuan.com. Los videos relacionados se actualizan continuamente en B.com.
- [Video de la estación B] Introducción de Cgraph
- [VIDEO DE LA ESTACIÓN B] Capítulo funcional CGraph
- Una introducción completa a todos los sustantivos y módulos funcionales en el proyecto CGRAPH
- Según el proceso de codificación real, los escenarios de uso específicos, los usos y los problemas resueltos de cada función se introducen en detalle.
- Adecuado para zapatos para niños que desean tener una comprensión completa de las características y comenzar rápidamente con Cgraph
- Adecuado para zapatos para niños interesados en programación multiproceso
- 【B Video del sitio】 Aplicación cgraph
- 【B Video de la estación B】 cgraph compartir
2. Use la demostración
Mynode.h
# include " CGraph.h "
class MyNode1 : public CGraph ::GNode {
public:
CStatus run () override {
printf ( " [%s], sleep for 1 second ... n " , this -> getName (). c_str ());
CGRAPH_SLEEP_SECOND ( 1 )
return CStatus ();
}
};
class MyNode2 : public CGraph ::GNode {
public:
CStatus run () override {
printf ( " [%s], sleep for 2 second ... n " , this -> getName (). c_str ());
CGRAPH_SLEEP_SECOND ( 2 )
return CStatus ();
}
};main.cpp
# include " MyNode.h "
using namespace CGraph ;
int main () {
/* 创建一个流水线,用于设定和执行流图信息 */
GPipelinePtr pipeline = GPipelineFactory::create ();
GElementPtr a, b, c, d = nullptr ;
/* 注册节点之间的依赖关系 */
pipeline-> registerGElement <MyNode1>(&a, {}, " nodeA " );
pipeline-> registerGElement <MyNode2>(&b, {a}, " nodeB " );
pipeline-> registerGElement <MyNode1>(&c, {a}, " nodeC " );
pipeline-> registerGElement <MyNode2>(&d, {b, c}, " nodeD " );
/* 执行流图框架 */
pipeline-> process ();
/* 清空流水线中所有的资源 */
GPipelineFactory::remove (pipeline);
return 0 ;
}
Como se muestra en la figura anterior, cuando se ejecuta la estructura del gráfico, el nodo a se ejecuta primero. Después de ejecutar el nodo a , el nodo b y c se ejecutan en paralelo. Después de que se ejecutan todos los nodos b y c , se ejecuta el nodo d
3. Lectura recomendada
- Pure Serialist le presenta la simple implementación de la lógica gráfica de ejecución del marco
- Pure Serialist le presenta la simple implementación de la lógica gráfica del ciclo del marco
- Pure Sequencer le presenta la simple implementación de la entrega gráfica de marco de parámetro
- Pure Serialist le presenta la simple implementación del marco gráfico: juicio condicional
- Las secuelas puras le presentan la simple implementación de marcos gráficos, orientados a la cara
- Pure Sequencer le presenta la implementación simple de la inyección gráfica de función de trabajo marco
- Pure Serialist le presenta la implementación simple del marco gráfico: el mecanismo de mensajes
- Pure Serialist le presenta la simple implementación del marco gráfico: activación de eventos
- Pure Sequencer le presenta la simple implementación del mecanismo gráfico del tiempo del marco
- Pure Sequencer le presenta la simple implementación de la optimización gráfica del grupo de hilos marco (I)
- Pure Sequencer le presenta la simple implementación de la optimización gráfica del grupo de hilos marco (ii)
- Pure Sequencer le presenta la simple implementación de la optimización gráfica del grupo de hilos marco (iii)
- Pure Sequencer le presenta la simple implementación de la optimización gráfica del grupo de hilos marco (IV)
- Pure Sequencer le presenta la simple implementación de la optimización gráfica del grupo de hilos marco (V)
- Pure Sequencer le presenta la simple implementación de la optimización gráfica del grupo de hilos marco (VI)
- Pure Sequencer le presenta la simple implementación de la optimización gráfica del marco-rendimiento (I)
- Pure Sequencer le presenta la simple implementación de la optimización gráfica del marco-rendimiento (ii)
- Las secuelas puras le presentan la simple implementación del cálculo gráfico de la distancia marco
- Canción del título de Cgraph - "Escucha al codificador"
- Habla sobre este año escribí cgraph
- ¿Cómo es liderar un proyecto incluido en Awesome-CPP desde cero?
- ¡Breaking! Después de que el desempeño de Cgraph superó el flujo de tareas de manera integral, el autor dijo que quería ...
- Uso de la optimización del mapa: resumen de ideas para calcular la concurrencia máxima de DAG en cgraph
- Un artículo lo ayudará a aprender sobre CGraph, que dura dos años y medio.
- Los autores de CGraph quieren saber, si necesita un marco de programación EDAG
- Reducción de borde y mejora de la eficiencia: resumen de ideas de corte de borde redundante en cgraph
IV.
- Grafans: búsqueda de vecinos más cercanos más cercanos basados en gráficos que trabaja en cgraph
- CthreadPool: un grupo de hilos C ++ simple y fácil de usar, potente, excelente, excelente rendimiento,
- Cgraph-Lite: solo cabeza, cgraph más simple, con DAG Ejecutor y Función de Traducir de Param
- Awesome-CPP: una lista curada de marcos impresionantes de C ++ (o C), bibliotecas, recursos y cosas brillantes.
- Awesome-Workflow-Engines: una lista curada de increíbles motores de flujo de trabajo de código abierto
- Desfluo de tareas: un sistema de programación de tareas paralelo y de propósito general
- [Video de la estación B] Comparación de la prueba real de rendimiento entre CGraph y Taskflow
- Torchpipe: servir dentro de Pytorch
- [Video de la estación B] Proyecto de código abierto Torchpipe - AI Engine Experiencia de alta concurrencia en línea y guerra práctica
- Nndeploy: Nndeploy es un modelo de implementación de extremo a extremo. Con un razonamiento multi-enve y la implementación del modelo de gráfico acíclico dirigido como el núcleo, se compromete a proporcionar a los usuarios una experiencia de implementación del modelo multiplataforma, simple y de alto rendimiento.
- [B Video de la estación B] Nndeploy --- Marco de DEPLOY final para la implementación del modelo de IA de extremo a extremo (1)
- [Video de la estación B] Nndeploy --- Marco de implementación de extremo a extremo del modelo AI (2)
- Kuiperinfer: lo lleva a implementar una biblioteca de inferencias de aprendizaje profundo de alto rendimiento desde cero, lo que respalda la inferencia de modelos como LLAMA2, UNET, YOLOV5 y RESNET. Implementar una biblioteca de inferencia de aprendizaje profundo de alto rendimiento paso a paso
- Video de la estación B】 Marco de info de Kuiperinfer: un marco de razonamiento orientado a la enseñanza
- Ogografía: Una forma simple de construir una tubería con GO.
- [B Video de la estación B] Escuche el Bigwig de Alibaba Cloud: Oragra - Mapa de transmisión basado en Go Programación de dos o tres cosas
Apéndice-1.
[2021.05.04 - v1.0.0 - Chunel]
- Proporcionar función de ejecución gráfica y admitir la computación paralela de nodos no dependientes
[2021.05.09 - V1.1.0 - Chunel]
- Optimizar la concurrencia durante la ejecución de gráficos
[2021.05.18 - V1.1.1 - Chunel]
- Agregar
name de nodo e información session
[2021.05.23 - V1.2.0 - Chunel]
- Proporcionar función de ejecución de bucle de nodo único
[2021.05.29 - V1.3.0 - Chunel]
- Proporcionar funciones de división
cluster (clúster) y region (región) y de ejecución de bucle - Proporcionar contenido
tutorial , incluidos múltiples ejemplos de uso
[2021.06.14 - v1.4.0 - Chunel]
- Proporcionar un mecanismo de entrega
param (parámetro) - Proporcionar función
group (grupo), los módulos de nodos múltiples se heredan de los módulos group de manera uniforme - Agregar soporte para sistemas Linux
[2021.06.20 - V1.4.1 - Chunel]
- Proporcionar función de
condition (condición) - Agregar soporte para los sistemas de Windows
[2021.06.24 - v1.5.0 - Chunel]
- Proporcionar método de creación de fábrica
pipeline - Actualizar contenido
tutorial
[2021.07.07 - V1.5.1 - Chunel]
- Optimizar la funcionalidad del grupo de hilos. Implementar el mecanismo de robo de tareas
[2021.07.11 - V1.5.2 - Chunel]
- Optimizar la funcionalidad del grupo de hilos. Implementar mecanismo de ajuste de hilos automáticos
[2021.07.31 - v1.5.3 - Chunel]
- Optimizar la funcionalidad del grupo de hilos. Implementar la función de adquisición de lotes de tareas y optimizar el mecanismo de robo de tareas
[2021.08.29 - V1.6.0 - Chunel]
- Proporcionar múltiples funciones
pipeline para optimizar la lógica subyacente - Actualizar contenido
tutorial
[2021.09.19 - V1.6.1 - Chunel]
- Proporciona funciones de operador
Lru , operador Trie y plantilla para optimizar la lógica subyacente - Actualizar contenido
tutorial
[2021.09.29 - V1.7.0 - Chunel]
- Proporciona función
aspect para extender node o la función group - Actualizar contenido
tutorial
[2021.10.07 - V1.7.1 - Chunel]
- Optimizar la lógica de implementación
aspect (sección), proporcionar función de parámetros de sección y función de sección por lotes de lotes - Actualizar contenido
tutorial
[2021.11.01 - v1.8.0 - Chunel]
- Proporcionar función
adapter y función de adaptador singleton - Optimizar la lógica de ejecución
pipeline - Actualizar contenido
tutorial
[2021.12.18 - V1.8.1 - Chunel]
- Valor de retorno optimizado Información
CStatus
[2022.01.02 - v1.8.2 - Chunel]
- Proporciona la función de salida automática del tiempo de espera de ejecución de nodo y proporciona la función
task group - Proporcionar método de configuración de parámetros de configuración de grupo de subprocesos
[2022.01.23 - v1.8.3 - Chunel]
- Proporciona adaptador
function para implementar funciones de programación funcionales - Proporcionar función de programación de prioridad de subprocesos y proporcionar una función de ejecución de CPU unida a los subprocesos
- Actualizar contenido
tutorial
[2022.01.31 - v1.8.4 - Chunel]
- Proporciona la función de la ejecución asincrónica
node (nodo)
[2022.02.03 - v1.8.5 - Chunel]
- Proporciona función
daemon para ejecutar tareas en gráficos no flujos regularmente - Actualizar contenido
tutorial
[2022.04.03 - v1.8.6 - Chunel]
- Proporcionar operador
DistanceCalculator para implementar cálculos de cualquier tipo de datos y cualquier tipo de distancia - Actualizar contenido
tutorial
[2022.04.05 - v2.0.0 - Chunel]
- Proporcionar función
domain (dominio), proporcionar un modelo de abstracto de dominio Ann y comenzar a admitir instrucciones profesionales individuales - Proporcionar un mecanismo de ejecución de retención
- Actualizar contenido
tutorial
[2022.05.01 - v2.0.1 - Chunel]
- Optimizar el mecanismo de registro de
pipeline y admitir la ejecución de los métodos de inicio - Proporcione scripts de compilación con un solo clic
[2022.05.29 - v2.1.0 - Chunel]
- Proporcionar un método de escritura de parámetros
element - Proporcionar soporte para la versión C ++ 14
- Actualizar contenido
tutorial
[2022.10.03 - v2.1.1 - Chunel]
- Proporcionar mecanismo de prioridad de tarea en el grupo de subprocesos
- Optimizar la lógica de ejecución
group
[2022.11.03 - v2.2.0 - Chunel]
- Proporcionar función de
message (mensaje), utilizada principalmente para completar la transmisión de datos entre diferentes pipeline - Actualizar contenido
tutorial
[2022.12.24 - v2.2.1 - Chunel]
- Proporciona la función
TemplateNode para optimizar el método de transferencia de parámetros - Actualizar contenido
tutorial
[2022.12.25 - v2.2.2 - Yeshenyong]
- Optimizar la lógica de ejecución de gráficos
[2022.12.30 - v2.2.3 - Chunel]
- Proporcionar función de publicación y suscripción de
message - Proporciona la función de conmutación de motor de ejecución
[2023.01.21 - v2.3.0 - Chunel]
- Proporcionar función de
event (evento) - Proporcione el archivo
CGraph Intro.xmind , que introduce la lógica general de CGraph a través del diagrama del cerebro.
[2023.01.25 - v2.3.1 - Chunel]
- Proporciona soporte para la versión C ++ 11. Gracias a Mirroryuchen por proporcionar soluciones relevantes
[2023.02.10 - v2.3.2 - Chunel]
- Optimizar las estrategias de programación y proporcionar interfaz de configuración de parámetros de programación
- Versión en inglés ReadMe.md está disponible
[2023.02.12 - v2.3.3 - Yeshenyong, Chunel]
- Proporcionar función de visual de imagen visual de GraphViz
- Proporcionar función de seguimiento de enlaces de parámetros
[2023.02.22 - v2.3.4 - Chunel]
- Optimizar el mecanismo de programación en el sistema de Windows
- Optimizar el mecanismo
param y el mecanismo event (evento)
[2023.03.25 - v2.4.0 - Woodx, Chunel]
- Proporcione un entorno Docker ejecutable y archivos Dockerfile para construir entornos Docker
- Proporcionar mecanismo de gestión de recursos de programación
pipeline - Optimizar el rendimiento de programación
[2023.05.05 - v2.4.1 - Chunel]
- Proporcionar la función de ejecución de enlace de subprocesos
- Proporciona
pipeline . Gracias a Hanano-Yuuki por proporcionar soluciones relevantes - Proporciona la función de ejecución asincrónica
pipeline y la función de salida durante la ejecución
[2023.06.17 - v2.4.2 - Chunel]
- Proporciona función
MultiCondition (multicondición) - Proporciona funciones de ejecución de pausa
pipeline y ejecución de currículums
[2023.07.12 - v2.4.3 - Chunel]
- Optimizar la función
CStatus y agregar información de posicionamiento de excepción
[2023.09.05 - v2.5.0 - Chunel]
- Proporciona Función PERF para el análisis de rendimiento
pipeline - Proporciona mecanismo de tiempo de espera para
element - Proporcionar
some funciones (parciales) para optimizar la ejecución asincrónica de la pipeline
[2023.09.15 - v2.5.1 - Chunel]
- Proporciona función
fence - Proporciona función
coordinator (coordinador)
[2023.11.06 - v2.5.2 - Chunel]
- Optimizar la función de
message (mensaje), que puede establecer el método de procesamiento al escribir el bloqueo y reducir el número de tiempos de copia de memoria - Agregar contenido relacionado con
example para proporcionar algunas implementaciones simples para diferentes industrias - Optimizar el rendimiento de programación
[2023.11.15 - v2.5.3 - Chunel]
- Proporcionar archivo de definición
proto - Agregar función
mutable para proporcionar azúcar de sintaxis de registro de dependencia
[2024.01.05 - v2.5.4 - Chunel]
- Proporcionar contenido
test , incluidos los casos de prueba de rendimiento y funcionalidad - Optimizar el mecanismo de
event (evento) y soporte de la función de espera asincrónica
[2024.07.18 - v2.6.0 - Papapig -Melody, Chunel]
- Proporciona la forma de ejecutar la topología
pipeline - Proporcionar un método para determinar si existe una dependencia entre
element - Proporcionar un método de compilación de bazel
- Optimizar la función de perf.
[2024.09.17 - v2.6.1 - Chunel]
- Proporciona un método de ejecución estática de
pipeline y proporciona un mecanismo de micro-tarea basado en la ejecución estática - Proporciona la función de recorte
pipeline para eliminar las dependencias duplicadas entre element - Proporciona un método para eliminar las dependencias
element - Optimizar el mecanismo de
event (evento), los eventos asíncronos pueden esperar al final - Libere el proyecto CGRAPH-LITE, proporcionando funciones simples de composición DAG y transferencia de parámetros. La interfaz es totalmente compatible y se puede cambiar a este proyecto sin problemas
[2024.11.16 - v2.6.2 - Chunel]
- Optimizar el mecanismo de exclusión mutua de parámetros y obtener rendimiento
- Se solucionó el problema de esperar la excepción de hilo auxiliar
- Actualizar contenido
tutorial
Apéndice-2.

- Gracias a la introducción y recomendación de "Ranking chino de Github": Ranking Chino Github Total - Categoría C ++

- Gracias a la recomendación de Awesome-CPP, todos sabemos, es la lista de recomendaciones más autorizada para el proyecto CPP en el mundo
- Gracias a la recomendación de
Taskflow Group : Awesome-Parallel-Computing, y siempre tratamos el flujo de tareas como un modelo a seguir - Gracias a la recomendación de Awesome-Workflow-Engines
- Gracias a todos los contribuyentes de los desarrolladores por su contribución al proyecto
- Gracias a todos los amigos que han hecho comentarios y sugerencias para
CGraph , y no los mencionarán uno por uno. Todos son bienvenidos a unirse y construir juntos
Apéndice-3.
- WeChat: Chunelfeng (bienvenido para escanear el código QR anterior para agregar al autor como amigo. Tenga en cuenta brevemente su información personal^_^)
- Correo electrónico: [email protected]
- Código fuente: https://github.com/chunelfeng/cgraph
- Foro: www.chunel.cn