CV-CUDA adalah proyek open-source yang memungkinkan membangun aplikasi pencitraan dan pencitraan komputer (CV) yang efisien. Ia menggunakan akselerasi unit pemrosesan grafis (GPU) untuk membantu pengembang membangun jalur pipa sebelum dan sesudah pemrosesan yang sangat efisien. CV-Cuda berasal sebagai upaya kolaboratif antara Nvidia dan Bytedance.
Lihat Panduan Pengembang kami untuk informasi lebih lanjut tentang operator yang tersedia.
Untuk mendapatkan salinan lokal dan berjalan ikuti langkah -langkah ini.
| CV-CUDA BUILD | Platform | Versi CUDA | Kemampuan menghitung CUDA | Arsitektur perangkat keras | Pengemudi nvidia | Versi Python | Kompiler yang Didukung (Build From Source) | Kompatibilitas API dengan binari prebuilt | Distribusi OS/Linux diuji dengan paket prebuilt |
|---|---|---|---|---|---|---|---|---|---|
| x86_64_cu11 | x86_64 | 11.7 atau lebih baru | SM7 dan yang lebih baru | Volta, Turing, Ampere, Hopper, Ada Lovelace | r525 atau lebih lambat *** | 3.8, 3.9, 3.10, 3.11 | GCC> = 9* gcc> = 11 ** | GCC> = 9 | Ubuntu> = 20.04 Wsl2/ubuntu> = 20.04 |
| x86_64_cu12 | x86_64 | 12.2 atau lebih baru | SM7 dan yang lebih baru | Volta, Turing, Ampere, Hopper, Ada Lovelace | r525 atau lebih lambat *** | 3.8, 3.9, 3.10, 3.11 | GCC> = 9* gcc> = 11 ** | GCC> = 9 | Ubuntu> = 20.04 Wsl2/ubuntu> = 20.04 |
| aarch64_cu11 | aarch64 | 11.4 | SM7 dan yang lebih baru | Jetson Agx Orin | Jetpack 5.1 | 3.8 | GCC> = 9* gcc> = 11 ** | GCC> = 9 | Jetson Linux 35.x |
| aarch64_cu12 | aarch64 | 12.2 | SM7 dan yang lebih baru | Jetson Agx Orin, IGX ORIN + Ampere RTX6000, IGX ORIN + ADA RTX6000 | JetPack 6.0 DP, R535 (IGX OS V0.6) | 3.10 | GCC> = 9* gcc> = 11 ** | GCC> = 9 | Jetson Linux 36.2 IGX OS V0.6 |
* Build parsial, tidak ada modul uji (lihat batasan yang diketahui)
** Bangunan penuh, termasuk modul uji
*** Sampel memerlukan pengemudi R535 atau lebih baru untuk berlari dan hanya secara resmi didukung dengan CUDA 12.
-DBUILD_TESTS=0pip install --upgrade sphinx ) serta secara eksplisit parsing versi python default sistem ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>" .Untuk kenyamanan, kami menyediakan paket yang sudah dibangun untuk berbagai kombinasi versi CUDA, versi Python dan arsitektur di sini. Langkah-langkah berikut menjelaskan cara menginstal CV-Cuda dari paket yang sudah dibangun tersebut.
Kami mendukung dua jalur alternatif utama:
Pilih metode instalasi yang memenuhi kebutuhan lingkungan Anda.
Unduh file .whl yang sesuai untuk arsitektur komputer Anda, Python dan versi CUDA dari aset rilis rilis CV-CUDA saat ini. Informasi rilis semua rilis CV-CUDA dapat ditemukan di sini. Setelah diunduh, jalankan perintah pip install untuk menginstal roda python. Misalnya:
pip install cvcuda_ < cu_ver > - < x.x.x > -cp < py_ver > -cp < py_ver > -linux_ < arch > .whl Di mana <cu_ver> adalah versi CUDA yang diinginkan, <xxx> adalah versi rilis CV-CUDA, <py_ver> adalah versi python yang diinginkan dan <arch> adalah arsitektur yang diinginkan.
Harap dicatat bahwa roda Python mandiri, mereka termasuk perpustakaan C ++/CUDA dan binding Python.
Instal C ++/CUDA Libraries (cvCuda-lib*) dan header pengembangan (cvCuda-dev*) menggunakan apt :
sudo apt install -y ./cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.deb ./cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.deb Instal Python Bindings (CVCUDA-PYTHON*) Menggunakan apt :
sudo apt install -y ./cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.deb Di mana <cu_ver> adalah versi CUDA yang diinginkan, <py_ver> adalah versi Python yang diinginkan dan <arch> adalah arsitektur yang diinginkan.
Instal C ++/CUDA Libraries (cvCuda-lib*) dan header pengembangan (cvCuda-dev*):
tar -xvf cvcuda-lib- < x.x.x > - < cu_ver > - < arch > -linux.tar.xz
tar -xvf cvcuda-dev- < x.x.x > - < cu_ver > - < arch > -linux.tar.xzInstal Python Bindings (CVCUDA-PYTHON*)
tar -xvf cvcuda-python < py_ver > - < x.x.x > - < cu_ver > - < arch > -linux.tar.xz Di mana <cu_ver> adalah versi CUDA yang diinginkan, <py_ver> adalah versi Python yang diinginkan dan <arch> adalah arsitektur yang diinginkan.
Ikuti instruksi ini untuk membangun CV-cuda dari sumber:
Instal dependensi yang diperlukan untuk mengatur repositori:
Di ubuntu> = 20.04, instal paket berikut menggunakan apt :
sudo apt install -y git git-lfsKlon Repositori
git clone https://github.com/CVCUDA/CV-CUDA.git Dengan asumsi repositori dikloning di ~/cvcuda , perlu dikonfigurasi dengan benar dengan menjalankan skrip init_repo.sh hanya sekali.
cd ~ /cvcuda
./init_repo.shInstal dependensi yang diperlukan untuk membangun CV-Cuda:
Di ubuntu> = 20.04, instal paket berikut menggunakan apt :
sudo apt install -y g++-11 cmake ninja-build python3-dev libssl-dev patchelfVersi setiap toolkit CUDA 11.x atau 12.x harus berfungsi. CV-CUDA diuji dengan 11,7 dan 12,2, versi ini direkomendasikan.
sudo apt install -y cuda-11-7
# or
sudo apt install -y cuda-12-2Bangun proyek:
ci/build.sh [release | debug] [output build tree path] [-DBUILD_TESTS = 1 | 0] [-DPYTHON_VERSIONS = ' 3.8;3.9;3.10;3.11 ' ] [-DPUBLIC_API_COMPILERS = ' gcc-9;gcc-11;clang-11;clang-14 ' ]build-rel untuk pembuatan rilis, dan build-deb untuk debug.build-rel/lib dan executable (tes, dll ...) ada di build-rel/bin .-DBUILD_TESTS dapat digunakan untuk menonaktifkan/mengaktifkan membangun tes (diaktifkan secara default, lihat batasan yang diketahui).-DPYTHON_VERSIONS dapat digunakan untuk memilih versi Python untuk membangun binding dan roda. Secara default, hanya versi sistem default Python3 yang akan dipilih.-DPUBLIC_API_COMPILERS dapat digunakan untuk memilih kompiler yang digunakan untuk memeriksa kompatibilitas API publik. Secara default, GCC-11, GCC-9, Clang-11, dan Clang-14 dicoba dipilih dan diperiksa. Batasan yang Diketahui: Dokumentasi Dibangun di Ubuntu 20.04 membutuhkan versi terbaru dari sphinx ( pip install --upgrade sphinx ) serta secara eksplisit parsing versi python default sistem ./ci/build_docs path/to/build -DPYTHON_VERSIONS="<py_ver>" .
Instal dependensi yang diperlukan untuk membangun dokumentasi:
Di Ubuntu, instal paket berikut menggunakan apt dan pip :
sudo apt install -y doxygen graphviz python3 python3-pip sphinx
python3 -m pip install breathe recommonmark graphviz sphinx-rtd-themeBangun dokumentasi:
ci/build_docs.sh [build folder]Folder Bangun Default 'Build'.
Untuk instruksi tentang cara membangun sampel dari sumber dan menjalankannya, lihat dokumentasi sampel.
Instal dependensi yang diperlukan untuk menjalankan tes:
Di ubuntu> = 20.04, instal paket berikut menggunakan apt dan pip :
sudo apt install -y python3 python3-pip
python3 -m pip install pytest torch numpy==1.26 Tes berada di <buildtree>/bin . Anda dapat menjalankan skrip di bawah ini untuk menjalankan semua tes sekaligus. Berikut adalah contoh ketika pohon build dibuat di build-rel :
build-rel/bin/run_tests.shPemasang paket
Installer dapat dihasilkan menggunakan perintah cpack berikut setelah Anda berhasil membangun proyek:
cd build-rel
cpack .Ini akan menghasilkan di Direktori Build, baik installer dan tarball Debian (*.tar.xz), yang diperlukan untuk integrasi di distro lain.
Untuk pilihan yang dihasilkan oleh installer yang halus, sintaksis lengkapnya adalah:
cpack . -G [DEB | TXZ]Roda Python
Secara default, selama pembuatan release , binding dan roda Python dibuat untuk versi CUDA yang tersedia dan versi Python yang ditentukan. Roda sekarang output ke folder build-rel/python3/repaired_wheels (setelah diproses oleh perintah auditwheel repair dalam kasus Manylinux). Roda Python tunggal yang dihasilkan kompatibel dengan semua versi Python yang ditentukan selama langkah build CMake. Di sini, build-rel adalah direktori build yang digunakan untuk membangun rilis build.
Roda Python baru untuk kepatuhan PYPI harus dibangun dalam lingkungan Docker Manylinux 2014. Gambar Docker dapat dihasilkan menggunakan skrip docker/manylinux/docker_buildx.sh . Gambar -gambar ini memastikan roda memenuhi standar Manylinux 2014 dan PYPI.
Roda yang dibangun masih dapat dipasang menggunakan pip . Misalnya, untuk memasang roda python yang dibangun untuk CUDA 12.X, Python 3.10 dan 3.11 pada sistem Linux x86_64:
pip install cvcuda_cu12- < x.x.x > -cp310.cp311-cp310.cp311-linux_x86_64.whlCV-CUDA adalah proyek open source. Sebagai bagian dari komunitas open source, kami berkomitmen pada siklus pembelajaran, peningkatan, dan pembaruan yang membuat komunitas ini berkembang. Namun, CV-Cuda belum siap untuk kontribusi eksternal.
Untuk memahami proses untuk berkontribusi CV-Cuda, lihat halaman Kontribusi kami. Untuk memahami komitmen kami kepada komunitas open source, dan menyediakan lingkungan yang mendukung dan menghormati upaya semua kontributor, silakan baca kode perilaku kami.
Skrip mkop.sh adalah alat yang ampuh untuk membuat perancah untuk operator baru di perpustakaan CV-Cuda. Ini mengotomatiskan beberapa tugas, memastikan konsistensi dan menghemat waktu.
mkop.sh :Operator Stub Creation : Menghasilkan template operator tanpa op (tanpa operasi), yang berfungsi sebagai titik awal untuk mengimplementasikan fungsionalitas baru.
Kustomisasi File : Memodifikasi file templat untuk memasukkan nama operator baru, memastikan konvensi penamaan yang konsisten di seluruh basis kode.
Integrasi CMake : Menambahkan file operator baru ke CMakelists yang sesuai, memfasilitasi kompilasi dan integrasi yang mulus ke dalam sistem build.
Binding Python : Membuat rintisan Python Wrapper untuk operator baru, yang memungkinkannya digunakan dalam lingkungan Python.
Pengaturan Tes : Menghasilkan file uji untuk C ++ dan Python, memungkinkan pengembangan segera tes unit untuk operator baru.
mkop.sh : Jalankan skrip dengan nama operator yang diinginkan. Skrip ini mengasumsikan itu terletak di ~/cvcuda/tools/mkop .
./mkop.sh [Operator Name]Jika skrip dijalankan dari lokasi yang berbeda, berikan jalur ke direktori root CV-Cuda.
./mkop.sh [Operator Name] [CV-CUDA root]Catatan : Surat pertama dari nama operator baru dikapitisasi jika diperlukan untuk mencocokkan sisa struktur file.
Pengaturan Awal : Skrip dimulai dengan memvalidasi input dan mengatur variabel yang diperlukan. Kemudian memanfaatkan huruf pertama dari nama operator untuk mematuhi konvensi penamaan.
Modifikasi Template : Ini memproses berbagai file template ( Public.h , PrivateImpl.cpp , dll.), Mengganti placeholder dengan nama operator baru. Ini termasuk penyesuaian header file, ruang nama, dan tanda tangan fungsi.
Integrasi CMake dan Python : Script memperbarui file CMakeLists.txt dan file modul Python untuk memasukkan operator baru, memastikannya diakui oleh sistem build dan antarmuka Python.
Kerangka Pengujian : Akhirnya, ia mengatur file tes untuk C ++ dan Python, yang memungkinkan pengembang untuk segera mulai menulis tes untuk operator baru.
CV-CUDA beroperasi di bawah lisensi APACHE-2.0.
CV-Cuda, sebagai program NVIDIA, berkomitmen untuk mengamankan praktik pembangunan. Silakan baca halaman keamanan kami untuk mempelajari lebih lanjut.
CV-Cuda dikembangkan bersama oleh Nvidia dan Bytedance.