Cina |
Dokumentasi CGraph

Cgraph adalah cross-platform d mengireksi kerangka kerja siklik berdasarkan C ++ murni tanpa dependensi pihak ke-3.
Anda, dengan itu, dapat membangun operator Anda sendiri secara sederhana, dan menggambarkan setiap jadwal berjalan seperti yang Anda butuhkan, seperti ketergantungan, paralling, agregasi dan sebagainya.
Tutorial dan informasi kontak ditampilkan sebagai berikut.
1. Pendahuluan
CGraph disebut [warna, gambar] dalam bahasa Cina, dan merupakan kerangka eksekusi proses grafik lintas platform tanpa dependensi pihak ketiga. Melalui GPipeline (Pipeline) Penjadwalan yang mendasarinya, ia menyediakan fungsi eksekusi berurutan dari elemen dependen dan eksekusi bersamaan dari elemen yang tidak bergantung dalam penjadwalan EDAG.
Pengguna hanya perlu mewarisi kelas GNode (Node), mengimplementasikan metode run() dari subclass, dan menetapkan dependensi sesuai kebutuhan untuk mewujudkan eksekusi grafis atau eksekusi pipa tugas. Dimungkinkan juga untuk mengatur berbagai GGroup (grup) yang berisi informasi multi-node untuk mengontrol penilaian bersyarat, perulangan dan logika eksekusi bersamaan dari grafik.
Proyek ini menyediakan jenis Param (parameter) yang kaya untuk interoperabilitas data dalam skenario aplikasi yang berbeda. Selain itu GAdapter berbagai fungsi elemen GEvent diperluas secara horizontal dengan menambahkan GAspect ;

Proyek ini ditulis menggunakan perpustakaan standar C ++ 11 murni dan tidak memiliki dependensi pihak ketiga. Kompatibel dengan sistem MacOS , Linux , Windows dan Android , mendukung kompilasi lokal dan pengembangan sekunder melalui CLion , VSCode , Xcode , Visual Studio , Code::Blocks , Qt Creator dan IDE lainnya.
Untuk pengantar dan penggunaan fungsional terperinci, silakan merujuk ke konten artikel di yimianzhiyuan.com. Video terkait sedang diperbarui secara terus -menerus di B.com.
- [B Station Video] PENDAHULUAN CGRAPH
- [B Station Video] CGRAPH Bab Fungsional
- Pengantar komprehensif untuk semua kata benda dan modul fungsional dalam proyek CGRAPH
- Berdasarkan proses pengkodean aktual, skenario penggunaan spesifik, penggunaan, dan masalah yang diselesaikan dari setiap fungsi diperkenalkan secara rinci.
- Cocok untuk sepatu anak -anak yang ingin memiliki pemahaman penuh tentang fitur dan memulai dengan cepat dengan cgraph
- Cocok untuk sepatu anak-anak yang tertarik dengan pemrograman multi-threaded
- 【B Video Situs】 Artikel Aplikasi CGraph
- 【B Station Video】 CGRAPH Bagikan
2. Gunakan demo
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 ;
}
Seperti yang ditunjukkan pada gambar di atas, ketika struktur grafik dieksekusi, Node a pertama kali dieksekusi. Setelah simpul a dieksekusi, simpul b dan c dieksekusi secara paralel. Setelah semua node b dan c dieksekusi, Node d dieksekusi.
3. Bacaan yang disarankan
- Serialis murni memperkenalkan Anda pada implementasi sederhana dari logika kerangka kerja grafis
- Serialis murni memperkenalkan Anda pada implementasi sederhana logika kerangka kerangka kerja grafis
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana transfer kerangka kerja grafis
- Serialis murni memperkenalkan Anda pada implementasi sederhana dari kerangka kerja grafis - penilaian kontrak
- Sekuel murni memperkenalkan Anda pada implementasi sederhana kerangka kerja grafis —— Berorientasi Ruang
- Sequencer murni memperkenalkan Anda pada implementasi sederhana injeksi fungsi kerangka kerja grafis
- Serialis murni memperkenalkan Anda pada implementasi sederhana dari kerangka grafis-mekanisme pesan
- Serialis murni memperkenalkan Anda pada implementasi sederhana dari kerangka kerja grafis - pemicu acara
- Serialis murni memperkenalkan Anda pada implementasi sederhana dari mekanisme kerangka kerja grafis
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana optimasi kumpulan kerangka kerja grafis (i)
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana dari kerangka kerangka grafis-thread Pool Optimization (II)
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana dari kerangka kerangka grafis-thread Pool Optimization (III)
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana dari kerangka kerangka grafis-thread optimization (IV)
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana dari kerangka kerangka grafis-thread pool Optimization (V)
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana dari kerangka kerja grafis-thread pool Optimization (VI)
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana dari kerangka kerja grafis-kinerja optimasi (i)
- Pure Sequencer memperkenalkan Anda pada implementasi sederhana dari kerangka kerja grafis-kinerja optimasi (II)
- Sekuel murni memperkenalkan Anda pada implementasi sederhana perhitungan kerangka kerja grafis
- Lagu judul CGRAPH - "Dengarkan The Coder"
- Bicara tentang tahun ini saya menulis cgraph
- Bagaimana rasanya memimpin proyek yang termasuk dalam CPP yang luar biasa dari awal?
- Breaking! Setelah kinerja Cgraph melampaui flowlow dengan cara yang komprehensif, penulis mengatakan bahwa dia ingin ...
- Menggunakan optimasi peta: ringkasan ide untuk menghitung konkurensi maksimum DAG di cgraph
- Satu artikel akan membantu Anda belajar tentang Cgraph, yang berlangsung selama dua setengah tahun.
- Penulis CGRAPH ingin tahu jika Anda memerlukan kerangka penjadwalan EDAG
- Pengurangan tepi dan peningkatan efisiensi: Ringkasan ide pemotongan tepi yang berlebihan di CGRAPH
IV
- Graphanns: perkiraan berbasis grafik pencarian tetangga terdekat yang bekerja di luar cgraph
- CTHREADPOOL: Kumpulan utas C ++ Cross-Platform yang sederhana dan mudah digunakan, kuat, sangat baik
- CGRAPH-LITE: CGRAPH HEAD-ONLY, PERTANG
- Luar biasa-CPP: Daftar kerangka kerja C ++ (atau C) yang mengagumkan, perpustakaan, sumber daya, dan hal-hal yang mengkilap.
- ENGINES-WORKFLOW-ENCINES: Daftar mesin alur kerja open source yang mengagumkan
- Taskflow: Sistem Pemrograman Tugas Paralel dan Heterogen Umum
- [B Station Video] Tes aktual perbandingan kinerja antara CGRAPH dan TaskFlow
- Torchpipe: Melayani di dalam Pytorch
- [B Station Video] Open Source Project Torchpipe - AI Engine Online Pengalaman konkurensi tinggi dan pertempuran praktis
- nndeploy: nndeploy adalah model kerangka penyebaran end-to-end. Dengan penalaran multi-end dan penyebaran model grafik asiklik terarah sebagai inti, ia berkomitmen untuk memberikan pengguna dengan pengalaman penyebaran model lintas platform, sederhana, dan berkinerja tinggi.
- [B Station Video] nndeploy --- Kerangka kerja akhir untuk AI Model Penerapan End-to-End (1)
- [B Station Video] Nndeploy --- Kerangka Penyebaran Akhir-ke-End dari Model AI (2)
- KuiperInfer: Membawa Anda untuk mengimplementasikan perpustakaan inferensi pembelajaran dalam kinerja tinggi dari awal, pendukung inferensi model seperti LLAMA2, UNET, YOLOV5, dan ResNet. Menerapkan Perpustakaan Inferensi Pembelajaran Deep Kinerja Tinggi Langkah demi Langkah
- 【V Video Stasiun】 Kerangka Kesimpulan Kuiperinfer - Kerangka Penalaran Berorientasi Pengajaran
- Ograph: Cara sederhana untuk membangun pipa dengan Go.
- [B Station Video] Dengarkan Bigwig Alibaba Cloud: Ograph - Peta Streaming Berbasis GO menjadwalkan dua atau tiga hal
LAMPIRAN-1
[2021.05.04 - V1.0.0 - Chunel]
- Berikan fungsi eksekusi grafis dan dukungan komputasi paralel node yang tidak bergantung
[2021.05.09 - V1.1.0 - Chunel]
- Optimalkan konkurensi selama eksekusi grafik
[2021.05.18 - V1.1.1 - Chunel]
- Tambahkan
name Node dan Informasi session
[2021.05.23 - v1.2.0 - Chunel]
- Menyediakan fungsi eksekusi loop simpul tunggal
[2021.05.29 - v1.3.0 - Chunel]
- Menyediakan Fungsi
cluster (Wilayah) dan region (Wilayah) dan Loop Execution - Berikan konten
tutorial , termasuk beberapa contoh penggunaan
[2021.06.14 - V1.4.0 - Chunel]
- Memberikan mekanisme pengiriman
param (parameter) - Menyediakan fungsi
group (grup), modul multi-node diwarisi dari modul group secara seragam - Tambahkan dukungan untuk sistem Linux
[2021.06.20 - v1.4.1 - Chunel]
- Berikan fungsi
condition (kondisi) - Tambahkan dukungan untuk sistem Windows
[2021.06.24 - V1.5.0 - Chunel]
- Memberikan metode pembuatan pabrik
pipeline - Perbarui konten
tutorial
[2021.07.07 - v1.5.1 - Chunel]
- Mengoptimalkan fungsionalitas kumpulan utas. Menerapkan mekanisme pencurian tugas
[2021.07.11 - v1.5.2 - Chunel]
- Mengoptimalkan fungsionalitas kumpulan utas. Menerapkan mekanisme penyesuaian utas otomatis
[2021.07.31 - V1.5.3 - Chunel]
- Mengoptimalkan fungsionalitas kumpulan utas. Menerapkan fungsi akuisisi batch tugas dan mengoptimalkan mekanisme pencurian tugas
[2021.08.29 - V1.6.0 - Chunel]
- Menyediakan beberapa fungsi
pipeline untuk mengoptimalkan logika yang mendasarinya - Perbarui konten
tutorial
[2021.09.19 - V1.6.1 - Chunel]
- Menyediakan Operator
Lru , Operator Trie dan fungsi simpul template untuk mengoptimalkan logika yang mendasarinya - Perbarui konten
tutorial
[2021.09.29 - V1.7.0 - Chunel]
- Menyediakan fungsi
aspect untuk memperluas fungsi node atau group - Perbarui konten
tutorial
[2021.10.07 - V1.7.1 - Chunel]
- Logika Implementasi Optimalkan
aspect (Bagian), Menyediakan Fungsi Parameter Bagian, dan Fungsi Bagian Tambah Batch - Perbarui konten
tutorial
[2021.11.01 - V1.8.0 - Chunel]
- Berikan fungsi
adapter dan fungsi adaptor singleton - Mengoptimalkan logika eksekusi
pipeline - Perbarui konten
tutorial
[2021.12.18 - V1.8.1 - Chunel]
- Informasi
CStatus nilai pengembalian yang dioptimalkan
[2022.01.02 - V1.8.2 - Chunel]
- Menyediakan fungsi keluar otomatis dari batas waktu eksekusi simpul, dan menyediakan fungsi
task group - Menyediakan metode pengaturan parameter konfigurasi kumpulan utas
[2022.01.23 - V1.8.3 - Chunel]
- Menyediakan adaptor
function untuk mengimplementasikan fungsi pemrograman fungsional - Berikan fungsi penjadwalan prioritas utas, fungsi eksekusi CPU yang mengikat utas
- Perbarui konten
tutorial
[2022.01.31 - V1.8.4 - Chunel]
- Memberikan fungsi eksekusi
node (node) asinkron
[2022.02.03 - v1.8.5 - Chunel]
- Menyediakan fungsi
daemon untuk menjalankan tugas dalam grafik non-aliran secara teratur - Perbarui konten
tutorial
[2022.04.03 - V1.8.6 - Chunel]
- Berikan operator
DistanceCalculator untuk mengimplementasikan perhitungan jenis data apa pun dan jenis jarak apa pun - Perbarui konten
tutorial
[2022.04.05 - V2.0.0 - Chunel]
- Menyediakan fungsi
domain (domain), menyediakan model abstrak domain Ann , dan mulai mendukung arah profesional individu - Memberikan mekanisme eksekusi tahan
- Perbarui konten
tutorial
[2022.05.01 - v2.0.1 - Chunel]
- Mengoptimalkan mekanisme pendaftaran
pipeline dan mendukung pelaksanaan metode init pesanan kustom - Berikan skrip kompilasi satu klik
[2022.05.29 - V2.1.0 - Chunel]
- Memberikan metode penulisan parameter
element - Berikan dukungan untuk versi C ++ 14
- Perbarui konten
tutorial
[2022.10.03 - v2.1.1 - Chunel]
- Memberikan mekanisme prioritas tugas di kumpulan benang
- Optimalkan Logika Eksekusi
group
[2022.11.03 - v2.2.0 - Chunel]
- Berikan fungsi
message (pesan), terutama digunakan untuk menyelesaikan transmisi data di antara pipeline yang berbeda - Perbarui konten
tutorial
[2022.12.24 - v2.2.1 - Chunel]
- Menyediakan fungsi
TemplateNode (node template) untuk mengoptimalkan metode transfer parameter - Perbarui konten
tutorial
[2022.12.25 - v2.2.2 - yeshenyong]
- Mengoptimalkan logika eksekusi grafik
[2022.12.30 - v2.2.3 - Chunel]
- Berikan fungsi penerbitan dan berlangganan
message - Menyediakan fungsi switching mesin eksekusi
[2023.01.21 - v2.3.0 - Chunel]
- Berikan fungsi
event (acara) - Menyediakan file
CGraph Intro.xmind , yang memperkenalkan logika keseluruhan CGRAPH melalui diagram otak.
[2023.01.25 - v2.3.1 - Chunel]
- Memberikan dukungan untuk versi C ++ 11. Terima kasih kepada Mirroryuchen karena memberikan solusi yang relevan
[2023.02.10 - v2.3.2 - Chunel]
- Mengoptimalkan strategi penjadwalan dan menyediakan antarmuka konfigurasi parameter penjadwalan
- Versi bahasa Inggris readme.md tersedia
[2023.02.12 - v2.3.3 - Yeshenyong, Chunel]
- Berikan fungsi tampilan gambar visual graphviz
- Berikan fungsi pelacakan tautan parameter
[2023.02.22 - v2.3.4 - Chunel]
- Optimalkan mekanisme penjadwalan di bawah sistem Windows
- Mekanisme Mekanisme dan Mekanisme
param ( event )
[2023.03.25 - v2.4.0 - Woodx, Chunel]
- Menyediakan lingkungan Docker yang dapat dilalui dan file Dockerfile untuk membangun lingkungan Docker
- Memberikan mekanisme manajemen sumber daya penjadwalan
pipeline - Mengoptimalkan kinerja penjadwalan
[2023.05.05 - v2.4.1 - Chunel]
- Berikan fungsi eksekusi yang mengikat utas
- Memberikan metode akuisisi konkurensi maksimum
pipeline . Terima kasih kepada Hanano-yuuki yang telah memberikan solusi yang relevan - Menyediakan fungsi eksekusi asinkron
pipeline dan fungsi keluar selama eksekusi
[2023.06.17 - v2.4.2 - Chunel]
- Memberikan fungsi
MultiCondition (multi-kondisi) - Memberikan Eksekusi Jeda
pipeline dan Lanjutkan Fungsi Eksekusi
[2023.07.12 - v2.4.3 - Chunel]
- Optimalkan fungsi
CStatus dan tambahkan informasi penentuan posisi pengecualian
[2023.09.05 - v2.5.0 - Chunel]
- Memberikan fungsi perf untuk analisis kinerja
pipeline - Memberikan mekanisme batas waktu untuk
element - Berikan
some fungsi (sebagian) untuk mengoptimalkan eksekusi pipeline asinkron
[2023.09.15 - v2.5.1 - Chunel]
- Menyediakan fungsi
fence - Menyediakan fungsi
coordinator (koordinator)
[2023.11.06 - v2.5.2 - Chunel]
- Optimalkan fungsi
message (pesan), yang dapat mengatur metode pemrosesan saat menulis pemblokiran, dan mengurangi jumlah waktu penyalinan memori - Tambahkan
example Konten Terkait untuk memberikan beberapa implementasi sederhana untuk berbagai industri - Mengoptimalkan kinerja penjadwalan
[2023.11.15 - v2.5.3 - Chunel]
- Berikan file definisi
proto - Tambahkan fungsi
mutable untuk memberikan gula sintaks pendaftaran ketergantungan
[2024.01.05 - v2.5.4 - Chunel]
- Berikan konten
test , termasuk kasus uji kinerja dan fungsionalitas - Optimalkan Mekanisme
event (Acara) dan Dukung Fungsi Tunggu Asinkron
[2024.07.18 - v2.6.0 - papapig -melody, chunel]
- Menyediakan cara untuk menjalankan topologi
pipeline - Memberikan metode untuk menentukan apakah ada ketergantungan antar
element - Memberikan metode kompilasi Bazel
- Optimalkan fungsi perf
[2024.09.17 - v2.6.1 - Chunel]
- Memberikan metode eksekusi statis
pipeline dan memberikan mekanisme tugas mikro berdasarkan eksekusi statis - Memberikan fungsi kliping
pipeline untuk menghilangkan deplikat dependensi antar element - Memberikan metode untuk menghapus dependensi
element - Mekanisme
event (Acara) Optimalkan, Acara Asynchronous Dapat Menunggu Akhir - Lepaskan proyek CGRAPH-LITE, memberikan komposisi DAG sederhana dan fungsi transfer parameter. Antarmuka sepenuhnya kompatibel dan dapat dialihkan ke proyek ini dengan mulus
[2024.11.16 - v2.6.2 - Chunel]
- Optimalkan Parameter Mekanisme Eksklusi Reksa dan Dapatkan Kinerja
- Memperbaiki masalah menunggu pengecualian utas tambahan
- Perbarui konten
tutorial
Lampiran-2

- Berkat pengenalan dan rekomendasi "Github Chinese Rankings": Github Chinese Rankings Total - C ++ Category

- Berkat rekomendasi dari Awesome-CPP, kita semua tahu, ini adalah daftar rekomendasi paling otoritatif untuk proyek CPP di dunia
- Berkat rekomendasi dari
Taskflow Group : Komputasi Paralel Luar Biasa, dan kami selalu memperlakukan TaskFlow sebagai panutan - Berkat rekomendasi dari mesin-workflow-mesin yang luar biasa
- Terima kasih kepada semua kontributor pengembang atas kontribusinya terhadap proyek
- Terima kasih kepada semua teman yang telah membuat komentar dan saran untuk proyek
CGraph , dan tidak akan menyebutkannya satu per satu. Setiap orang dipersilakan untuk bergabung dan membangun bersama
Lampiran-3
- WeChat: Chunelfeng (Selamat datang untuk memindai kode QR di atas untuk menambahkan penulis sebagai teman. Harap perhatikan secara singkat informasi pribadi Anda^_^)
- Email: [email protected]
- Kode Sumber: https://github.com/chunelfeng/cgraph
- Forum: www.chunel.cn