Chinês |
Documentação do CGRAPH

O CGRAPH é uma estrutura de plataforma transversal que uma estrutura cíclica G RAPH baseada em C ++ puro sem nenhuma dependência de terceiros.
Você, com isso, pode criar seus próprios operadores de maneira simples e descrever os horários em execução conforme necessário, como dependência, paralelo, agregação e assim por diante.
Os tutoriais e as informações de contato são mostradas as seguintes.
1. Introdução
CGraph é chamado [cor, imagem] em chinês e é uma estrutura de execução do processo de gráfico de plataformas cruzadas sem dependências de terceiros. Através da programação subjacente GPipeline (Pipeline), fornece a função da execução seqüencial de elementos dependentes e a execução simultânea de elementos não dependentes no agendamento do EDAG.
Os usuários precisam herdar apenas GNode (Node), implementar o método run() da subclasse e definir dependências conforme necessário para realizar a execução gráfica ou a execução do pipeline da tarefa. Também é possível definir vários GGroup (grupos) contendo informações de vários nós para controlar o julgamento condicional, loop e lógica de execução simultânea do gráfico.
O projeto fornece um tipo de Param rico (parâmetro) para interoperabilidade de dados em diferentes cenários de aplicativos. Além disso GEvent as várias funções de elementos acima podem ser expandidas horizontalmente, adicionando GAdapter GAspect ;

Este projeto foi escrito usando a biblioteca padrão Pure C ++ 11 e não possui dependências de terceiros. Compatível com os sistemas MacOS , Linux , Windows e Android , ele suporta compilação local e desenvolvimento secundário através de CLion , VSCode , Xcode , Visual Studio , Code::Blocks , Qt Creator e outros IDEs.
Para introdução e uso funcionais detalhados, consulte o conteúdo do artigo em yimianzhiyuan.com. Os vídeos relacionados estão sendo atualizados continuamente no B.com.
- [B VÍDEO DE ESTAÇÃO] INTRODUÇÃO CGRAPH
- [B Station Video] Capítulo funcional do CGRAPH
- Uma introdução abrangente a todos os substantivos e módulos funcionais no projeto CGRAPH
- Com base no processo de codificação real, os cenários de uso específicos, usos e problemas resolvidos de cada função são introduzidos em detalhes.
- Adequado para os sapatos infantis que desejam ter um entendimento completo dos recursos e começar rapidamente com o CGRAPH
- Adequado para os sapatos infantis interessados em programação multithread
- 【B VÍDEO DE SITE】 CGRAPH APLICAÇÃO
- 【B VÍDEO DE ESTAÇÃO】 Compartilhar CGRAPH
2. Use a demonstração
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 mostrado na figura acima, quando a estrutura do gráfico é executada, o nó a é executado pela primeira vez. Após a execução do nó a , o nó b e c são executados em paralelo. Depois que todos os nós b e c são executados, o nó d é executado.
3. Leitura recomendada
- O Pure Serialist apresenta a implementação simples da lógica gráfica da estrutura-estrutura
- O Pure Serialist apresenta a implementação simples da lógica gráfica do ciclo da estrutura
- Pure Sequencer apresenta a implementação simples de entrega gráfica-quadro-parâmetro
- Pure Serialist apresenta a implementação simples da estrutura gráfica - julgamento condicional
- Sequelas Pure apresentam a implementação simples de estruturas gráficas--orientadas para o face
- Pure Sequencer apresenta a implementação simples de injeção de função de estrutura gráfica
- O Pure Serialist apresenta a implementação simples da estrutura gráfica-o mecanismo de mensagem
- O Pure Serialist apresenta a implementação simples da estrutura gráfica - acionamento de eventos
- Pure Sequencer apresenta a implementação simples do mecanismo gráfico de tempo-tempo-tempoout
- O Pure Sequencer apresenta a implementação simples de otimização de pool (i) da estrutura gráfica da estrutura gráfica (i)
- O Pure Sequencer apresenta a implementação simples de otimização de pool de thread de estrutura gráfica (ii)
- O Pure Sequencer apresenta a implementação simples da Otimização de Pool de Thread de Estrutura Gráfica (III)
- O Pure Sequencer apresenta a implementação simples da Otimização de Pool de Tibras de Estrutura Gráfica (IV)
- O Pure Sequencer apresenta a implementação simples de otimização de pool (V) da Framework-Thread (V) de estrutura gráfica (V)
- O Pure Sequencer apresenta a implementação simples da Otimização de Pool (VI) da estrutura gráfica de estrutura gráfica (VI)
- O Pure Sequencer apresenta a implementação simples da otimização gráfica de desempenho da estrutura (i)
- O Pure Sequencer apresenta a implementação simples da otimização gráfica de desempenho da estrutura (ii)
- Sequelas Pure apresentam a implementação simples de cálculo gráfico de distribuição-distância
- Música -título de CGRAPH - "Ouça o codificador"
- Fale sobre este ano eu escrevi CGraph
- Como é liderar um projeto incluído no Awesome-CPP do zero?
- Quebrando! Depois que o desempenho do CGRAPH superou o fluxo de tarefas de uma maneira abrangente, o autor disse que queria ...
- Usando a otimização do mapa: resumo das idéias para calcular a simultaneidade máxima de DAG no CGRAPH
- Um artigo ajudará você a aprender sobre o CGRAPH, que dura dois anos e meio.
- Os autores do CGRAPH querem saber, se você precisar de uma estrutura de agendamento EDAG
- Redução de arestas e aprimoramento da eficiência: Resumo das idéias redundantes de corte de arestas no CGRAPH
Iv
- Graphanns: Pesquisa aproximada de vizinha aproximada baseada em gráficos, trabalhando fora do CGRAPH
- Cthreadpool: um desempenho simples e fácil de usar, poderoso e excelente, piscina de threads c ++ de plataforma cruzada
- CGRAPH-LITE: Somente Cabeça, Cgraph mais simples, com Executor DAG e Função de Tradução Param
- Awesome-CPP: Uma lista com curadoria de estruturas C ++ (ou C) impressionantes, bibliotecas, recursos e coisas brilhantes.
- Menção de fluxo de trabalho impressionante: uma lista com curadoria de incríveis motores de fluxo de trabalho de código aberto
- Fluxo de tarefas: um sistema de programação de tarefas paralelo e heterogêneo de uso geral
- [B Station Video] Teste real de comparação de desempenho entre CGRAPH e fluxo de tarefas
- Torchpipe: Servindo dentro de Pytorch
- [B Station Video] Projeto de código aberto Torchpipe - AI Engine Online Alta Experiência de Concorrência e Guerra Prática
- nndeploy: nndeploy é uma estrutura de implantação de ponta a ponta do modelo. Com o raciocínio multi-END e a implantação de modelo de gráfico aciclico direcionado como núcleo, ele está comprometido em fornecer aos usuários uma experiência de implantação de modelo de plataforma cruzada, simples e de alto desempenho.
- [B VÍDEO DE ESTAÇÃO] NNDEPLOW --- Framework de implantação final para o Modelo AI de implantação de ponta a ponta (1)
- [B VÍDEO DA ESTAÇÃO] NDEPLATE --- Estrutura de implantação de ponta a ponta do modelo de IA (2)
- KuiperInfer: leva você a implementar uma biblioteca de inferência de aprendizado profundo de alto desempenho do zero, apoiando a inferência de modelos como LLAMA2, UNET, YOLOV5 e RESNET. Implementar uma biblioteca de inferência de aprendizado profundo de alto desempenho passo a passo
- 【B Vídeo da estação】 Kuiperinfer Inferir Framework - Uma estrutura de raciocínio orientada para o ensino
- Ograph: Uma maneira simples de construir um oleoduto com Go.
- [B VÍDEO DE ESTAÇÃO] Ouça o BigWig de Alibaba Cloud: Ograph - Mapa de streaming baseado em GO Agendando duas ou três coisas
Apêndice-1
[2021.05.04 - v1.0.0 - Chunel]
- Forneça função de execução gráfica e suporte à computação paralela de nós não dependentes
[2021.05.09 - v1.1.0 - Chunel]
- Otimizar a simultaneidade durante a execução do gráfico
[2021.05.18 - v1.1.1 - Chunel]
- Adicione
name do nó e as informações session
[2021.05.23 - v1.2.0 - Chunel]
- Forneça função de execução de loop de nó único
[2021.05.29 - v1.3.0 - Chunel]
- Forneça funções de
cluster (cluster) e region (região) e execução de loop - Forneça conteúdo
tutorial , incluindo vários exemplos de uso
[2021.06.14 - v1.4.0 - Chunel]
- Fornecer mecanismo de entrega
param (parâmetro) - Fornecer função
group (grupo), os módulos de vários nós são herdados dos módulos group uniformemente - Adicione suporte para sistemas Linux
[2021.06.20 - v1.4.1 - Chunel]
- Fornecer função
condition (condição) - Adicione suporte para sistemas Windows
[2021.06.24 - v1.5.0 - Chunel]
- Fornecer método de criação de fábrica
pipeline - Atualize o conteúdo
tutorial
[2021.07.07 - v1.5.1 - Chunel]
- Otimize a funcionalidade do pool de threads. Implementar mecanismo de roubo de tarefas
[2021.07.11 - v1.5.2 - Chunel]
- Otimize a funcionalidade do pool de threads. Implementar mecanismo automático de ajuste de rosca
[2021.07.31 - v1.5.3 - Chunel]
- Otimize a funcionalidade do pool de threads. Implementar a função de aquisição em lote de tarefas e otimizar o mecanismo de roubo de tarefas
[2021.08.29 - v1.6.0 - Chunel]
- Forneça várias funções
pipeline para otimizar a lógica subjacente - Atualize o conteúdo
tutorial
[2021.09.19 - v1.6.1 - Chunel]
- Fornece o operador
Lru , operador Trie e funções de nó de modelo para otimizar a lógica subjacente - Atualize o conteúdo
tutorial
[2021.09.29 - v1.7.0 - Chunel]
- Fornece função
aspect para estender node externo ou a função group - Atualize o conteúdo
tutorial
[2021.10.07 - v1.7.1 - Chunel]
- Otimizar a lógica de implementação
aspect (seção), fornecer função de parâmetro da seção e adicionar função de seção em lote - Atualize o conteúdo
tutorial
[2021.11.01 - v1.8.0 - Chunel]
- Fornecer função
adapter e função do adaptador singleton - Otimizar a lógica de execução
pipeline - Atualize o conteúdo
tutorial
[2021.12.18 - v1.8.1 - Chunel]
- Valor de retorno otimizado Informações
CStatus
[2022.01.02 - v1.8.2 - Chunel]
- Fornece a função de saída automática do tempo limite de execução do nó e fornece função
task group - Forneça o método de configuração de parâmetros de configuração do pool de threads
[2022.01.23 - v1.8.3 - Chunel]
- Fornece adaptador
function para implementar funções de programação funcional - Forneça a função de agendamento de prioridade do thread e forneça função de execução da CPU ligada a roscas
- Atualize o conteúdo
tutorial
[2022.01.31 - v1.8.4 - Chunel]
- Fornece a função da execução assíncrona
node (nó)
[2022.02.03 - v1.8.5 - Chunel]
- Fornece a função
daemon para executar tarefas em gráficos sem fluxo regularmente - Atualize o conteúdo
tutorial
[2022.04.03 - v1.8.6 - Chunel]
- Forneça ao operador
DistanceCalculator para implementar cálculos de qualquer tipo de dados e qualquer tipo de distância - Atualize o conteúdo
tutorial
[2022.04.05 - v2.0.0 - Chunel]
- Forneça função
domain (domínio), forneça modelo abstrato de domínio Ann e comece a apoiar direções profissionais individuais - Fornecer um mecanismo de execução de espera
- Atualize o conteúdo
tutorial
[2022.05.01 - v2.0.1 - Chunel]
- Otimize o mecanismo de registro de
pipeline e suporte a execução de pedidos personalizados dos métodos inits - Forneça scripts de compilação com um clique
[2022.05.29 - v2.1.0 - Chunel]
- Forneça o método de escrita de parâmetros
element - Forneça suporte para C ++ 14 versão
- Atualize o conteúdo
tutorial
[2022.10.03 - v2.1.1 - chunel]
- Forneça mecanismo de prioridade da tarefa no pool de threads
- Otimizar a lógica de execução
group
[2022.11.03 - v2.2.0 - Chunel]
- Forneça a função
message (mensagem), usada principalmente para concluir a transmissão de dados entre diferentes pipeline - Atualize o conteúdo
tutorial
[2022.12.24 - v2.2.1 - Chunel]
- Fornece função
TemplateNode para otimizar o método de transferência de parâmetros - Atualize o conteúdo
tutorial
[2022.12.25 - v2.2.2 - Yeshenyong]
- Otimize a lógica de execução de gráficos
[2022.12.30 - v2.2.3 - Chunel]
- Fornecer função de publicação e assinatura
message - Fornece função de comutação do motor de execução
[2023.01.21 - v2.3.0 - Chunel]
- Fornecer função de
event (evento) - Forneça o arquivo
CGraph Intro.xmind , que introduz a lógica geral do CGRAPH através do diagrama cerebral.
[2023.01.25 - v2.3.1 - Chunel]
- Fornece suporte para a versão C ++ 11. Obrigado ao Mirroryuchen por fornecer soluções relevantes
[2023.02.10 - v2.3.2 - Chunel]
- Otimize estratégias de agendamento e forneça interface de configuração de parâmetros de agendamento
- Versão em inglês readme.md está disponível
[2023.02.12 - v2.3.3 - Yeshenyong, Chunel]
- Forneça a função de exibição de imagem visual graphviz
- Forneça função de rastreamento de link de parâmetro
[2023.02.22 - v2.3.4 - Chunel]
- Otimize o mecanismo de agendamento no sistema Windows
- Otimizar o mecanismo
param e o mecanismo event (evento)
[2023.03.25 - v2.4.0 - Woodx, Chunel]
- Forneça um ambiente de Docker Runnable e arquivos do Dockerfile para a criação de ambientes do Docker
- Fornecer mecanismo de gerenciamento de recursos de programação
pipeline - Otimize o desempenho da programação
[2023.05.05 - v2.4.1 - Chunel]
- Forneça função de execução de ligação a encadeamento
- Fornece
pipeline . Obrigado a Hanano-Yuuki por fornecer soluções relevantes - Fornece função de execução
pipeline e função de execução assíncrona durante a execução
[2023.06.17 - v2.4.2 - Chunel]
- Fornece função
MultiCondition (multi-condição) - Fornece funções de execução e retomar de execução de pausa
pipeline
[2023.07.12 - v2.4.3 - Chunel]
- Otimize a função
CStatus e adicione informações de posicionamento de exceção
[2023.09.05 - v2.5.0 - Chunel]
- Fornece função Perf para análise de desempenho
pipeline - Fornece mecanismo de tempo limite para
element - Forneça
some funções (parciais) para otimizar a execução assíncrona do pipeline
[2023.09.15 - v2.5.1 - Chunel]
- Fornece função
fence - Função
coordinator (Coordenador) fornece
[2023.11.06 - v2.5.2 - Chunel]
- Otimize a função
message (mensagem), que pode definir o método de processamento ao escrever bloqueio e reduzir o número de tempos de cópia da memória - Adicione conteúdo relacionado
example para fornecer algumas implementações simples para diferentes indústrias - Otimize o desempenho da programação
[2023.11.15 - v2.5.3 - Chunel]
- Forneça arquivo de definição de
proto - Adicione a função
mutable para fornecer açúcar de sintaxe de registro de dependência
[2024.01.05 - v2.5.4 - Chunel]
- Forneça conteúdo
test , incluindo casos de teste de desempenho e funcionalidade - Otimizar o mecanismo de
event (evento) e suporte da função de espera assíncrona
[2024.07.18 - v2.6.0 - Papapig -Melody, Chunel]
- Fornece a maneira de executar a topologia
pipeline - Forneça um método para determinar se existe uma dependência entre
element - Fornecer método de compilação Bazel
- Otimizar a função perf
[2024.09.17 - v2.6.1 - Chunel]
- Fornece um método de execução estática de
pipeline e fornece um mecanismo de micro-tarefa baseado na execução estática - Fornece função de corte de
pipeline para remover dependências duplicadas entre element - Fornece um método para excluir dependências
element - Otimizar o mecanismo de
event (evento), eventos assíncronos podem esperar o fim - Libere o projeto CGRAPH-LITE, fornecendo composição simples de DAG e funções de transferência de parâmetros. A interface é totalmente compatível e pode ser alterada para este projeto perfeitamente
[2024.11.16 - v2.6.2 - Chunel]
- Otimize o mecanismo de exclusão mútua do parâmetro e obtenha o desempenho
- Corrigido o problema de esperar pela exceção do encadeamento auxiliar
- Atualize o conteúdo
tutorial
Apêndice-2

- Graças à introdução e recomendação de "rankings chineses do GitHub": Github Chinese Rankings Total - C ++ Categoria

- Graças à recomendação do Awesome-CPP, todos sabemos, é a lista de recomendação mais autorizada para o projeto CPP no mundo
- Graças à recomendação do
Taskflow Group : Awesome-Parallelic Computing, e sempre tratamos o fluxo de tarefas como um modelo - Graças à recomendação de motores de trabalho impressionantes
- Obrigado a todos os desenvolvedores colaboradores por sua contribuição para o projeto
- Obrigado a todos os amigos que fizeram comentários e sugestões para
CGraph e não os mencionarão um por um. Todos são bem -vindos para se juntar e construir juntos
Apêndice-3
- WECHAT: Chuneldeng (Bem -vindo para digitalizar o código QR acima para adicionar o autor como amigo. Por favor, observe brevemente suas informações pessoais^_^)
- E -mail: [email protected]
- Código -fonte: https://github.com/chunefleng/cgraph
- Fórum: www.chunel.cn