Tingkatkan Grafik Perpustakaan dan LEMON
Seperti yang disebutkan Daniel dalam jawaban komprehensifnya , perpustakaan C ++ umum berfitur lengkap adalah Boost Graph Library . Ada ekstensi memori terdistribusi baru yang mampu melakukan beberapa algoritma dasar seperti pencarian luas-pertama dan kedalaman-pertama, minimum spanning tree, dan pencarian komponen yang terhubung, tetapi saya tidak terlalu akrab dengan proyek baru. Boost Graph Library sendiri terkenal dan digunakan di banyak proyek di seluruh dunia.
Jika Anda melakukan pekerjaan grafik HPC dasar, Anda mungkin ingin memulai dengan Perpustakaan Grafik Peningkatan, tetapi perlu diketahui bahwa banyak kompiler HPC C ++ mengalami kesulitan dengan Peningkatan (meskipun kepatuhannya cukup ketat pada standar C ++), dan Anda mungkin perlu menggunakan versi lama Boost atau kompiler non-vendor seperti GCC untuk membuatnya bekerja pada sistem HPC.
Penelusuran cepat repositori LEMON menunjukkan bahwa ada keterlibatan dari tim superkomputer IBM BlueGene, tetapi saya tidak melihat dependensi atau konfigurasi untuk MPI, jadi ini kemungkinan hanya menjadi perpustakaan grafik seri saat ini.
Load-balancing dan Dynamic graph (re) -partitioning
Jika Anda tertarik pada penyeimbangan muatan dan partisi grafik dinamis, Anda memiliki beberapa opsi lagi. Mungkin perpustakaan yang paling terkenal adalah ParMETIS , yang diperbarui ke versi 4 tahun lalu. ParMETIS memiliki fitur pembobotan berbasis simpul, yang penting untuk simulasi multi-fisika.
Pesaing Eropa ParMETIS adalah PT-Scotch , yang memiliki kinerja lebih baik untuk jenis masalah tertentu, tetapi, mirip dengan ParMETIS, tidak sering diperbarui.
Anda juga mungkin tertarik pada Zoltan , yang merupakan bagian dari paket meta-paket Trilinos National Laboratories Sandia untuk komputasi ilmiah dalam C ++. Zoltan menampilkan partisi dan antarmuka hierarkisnya sendiri ke ParMETIS dan PT-Scotch.
Grafik500
Jika Anda sedang mengerjakan tepi pendarahan pencarian serentak, optimisasi (jalur sumber tunggal terpendek), dan berorientasi tepi (set independen maksimal), Anda juga akan tertarik pada benchmark Graph500 yang tersedia secara bebas .
Mungkin, Perpustakaan Grafik Peningkatan adalah apa yang Anda cari. Ini memiliki parser untuk membaca grafik yang ditentukan dalam format DOT GraphViz. Meskipun saya tidak benar-benar tahu tentang overhead memori, itu memang memberikan varian untuk paralelisasi .
Pustaka grafik lain adalah LEMON tetapi saya tidak benar-benar mengetahuinya dan jika memiliki dukungan untuk paralelisasi, itu tidak diiklankan. Situs webnya membuat kesan yang bagus;)
sumber
Saya juga ingin menyebutkan STINGER , struktur data grafik dinamis yang dirancang untuk paralelisme. Menurut situs web, ini dirancang untuk tujuan berikut:
Ini tidak generik seperti LEMON atau Boost Graph Library dan pada tahap awal pengembangan. Jika Anda memeriksanya, saya akan tertarik dengan komentar Anda.
sumber