Mengaktifkan pemrosesan multithreaded di QGIS?

11

Saya telah menemukan banyak tautan yang tampaknya mengatakan bahwa ini sekarang ada di QGIS 2.2, tetapi tampaknya itu hanya menggunakan satu inti untuk kapasitas penuh.

Ini berjalan di Ubuntu 14.04

Proses saat ini menciptakan sejumlah besar poin reguler. Bagaimana saya bisa membuat proses itu menggunakan lebih dari satu inti?

Penggunaan CPU

jpmaniac87
sumber
1
Saya pikir ini akan di 2.4, rilis berikutnya. Namun, jika Anda ingin mencobanya unduhlah bangunan malam.
Matt
Mungkin patut berkomentar bahwa karena "multithreading" GIL tidak akan menjalankan core bersamaan. Lihat stackoverflow.com/questions/1294382/... Apa yang Anda inginkan adalah "multiprocessing".
Tuan Ungu

Jawaban:

6

Tidak ada rendering multithreaded QGIS 2.2, ini adalah fitur yang akan tersedia di QGIS 2.4.

Anda dapat mencoba QGIS Master (setiap malam) untuk pengujian, dan kemudian QGIS 2.4 dijadwalkan untuk rilis pada 20 Juni 2014 .


Aduh, salah baca pertanyaan Anda, dan dari komentar, sepertinya Pemrosesan multithreaded adalah sesuatu yang terjadi pada tingkat pengembang QGIS atau tingkat kontributor Plugin Python.

Jika ada alat QGIS tertentu yang Anda gunakan dari menu yang dibangun ke dalam QGIS selain untuk mendapatkan pemrosesan multithread, mungkin perlu dikodekan oleh pengembang untuk QGIS atau bahkan ke akar alat (GDAL, SAGA, Orfeo, GRASS, pengembang R, dll ...).

Jika ada plugin tertentu daripada yang kemungkinan dikodekan di sekitar Python dan kontributor atau pengelola plugin itu dapat melihat apakah mungkin untuk menyertakan modul multiprocessingatau threadinguntuk meningkatkan kinerjanya.

Either way, mengirimkan permintaan fitur, atau melihat apakah sudah ada biasanya merupakan cara terbaik untuk memulai. Ini akan memberi tahu Anda jika seseorang sudah menangani peningkatan atau sumber daya apa yang diperlukan untuk memulai peningkatan tersebut.

SaultDon
sumber
Itu memalukan ... Saya punya masalah membangun dari sumber di masa lalu. Jika saya hanya menambahkan ppa untuk nightlies dan menginstal semua yang sama dengan apt, apakah itu akan memberi saya nightly terbaru? Ada ide tentang stabilitas?
jpmaniac87
@ jpmaniac87 Saya sudah lama tidak menggunakan Ubuntu dan melakukan pekerjaan SIG di Arch Linux, jadi saya mengkompilasi semuanya dari sumber. Jadi saya tidak akan tahu bagaimana PPA untuk Ubuntu dan jika Anda dapat menginstal QGIS (stabil) dengan QGIS (master) pada saat yang sama.
SaultDon
@ jpmaniac87 Sepertinya dari dari jawaban ini dalam pertanyaan lain bahwa itu tidak mungkin mengingat bagaimana versi QGIS dikemas di Ubuntu. Sepertinya itu salah satunya.
SaultDon
PPA berfungsi. Saya baru saja berkomentar garis stabil dan menginstal nightly. Itu cepat! Tapi ... itu hanya menggunakan beberapa utas secara harfiah untuk rendering ... Saya berharap lebih dari proses plugin. Saya kira itu akan berarti bahwa pembuat plugin perlu mengizinkan pemrosesan multithreaded dalam kode mereka?
jpmaniac87
1
@ jpmaniac87 Ya, karena plugin dibangun dengan Python, dan ada multiprocessingatau threading ( threadingbiasanya digunakan dengan queue) modul untuk Python yang harus mereka tambahkan ke skrip mereka secara khusus.
SaultDon
3

Tergantung apa yang Anda kejar. Ketika pemrosesan porting ke kerangka kerja task manager baru maka algoritma akan dapat berjalan secara paralel (jika memungkinkan). Misalnya buffer untuk satu layer dapat berjalan sementara transformasi terjadi pada layer lain. Jika Anda setelah paralelisasi dalam satu algoritma (misalnya fitur buffering menggunakan beberapa utas) maka saya tidak mengetahui adanya rencana untuk menangani hal ini.

Sumber: http://osgeo-org.1560.x6.nabble.com/Will-Processing-in-QGIS-3-support-parallelization-td5301809.html


Jawaban lama: Selama Google Summer of Code 2015, dukungan multi-threading telah dikembangkan untuk Pemrosesan QGIS. Kode saat ini sedang dalam peninjauan dan diharapkan untuk mendarat di versi pengembang pada 2016. (Sumber: http://boundlessgeo.com/2015/12/latest-developments-in-qgis-processing/ )

... Solusi ini sayangnya tidak dapat digabungkan.

underdark
sumber
Adakah pembaruan tentang hal ini @underdark?
Ricardo Barros Lourenço
Paralelisasi masih terbatas di sebagian besar aplikasi, sayangnya. Pemahaman saya adalah bahwa memanfaatkan infrastruktur basis data, seperti PostGIS / postgres memungkinkan pengelolaan kueri yang lebih terintegrasi dan memiliki kemampuan multithreading yang lebih baik.
CrystallineEntity
2

Beberapa threading sedang dimasukkan dalam fungsionalitas inti QGIS (rendering misalnya seperti yang dijelaskan dalam jawaban SaultDons) tetapi banyak fungsi atau algoritme mungkin atau tidaknya threading dimasukkan tergantung pada pengembangannya.

Bagi para pembuat plugin pyQGIS (mungkin termasuk OP) yang ingin memasukkan threading dalam plugin / skrip mereka, beberapa bantuan tersedia di blog snorfalorpagus. Semoga semakin banyak pengembang yang menggunakan threading - khususnya untuk algoritma yang lebih rumit.

Sebagai pengganti sementara Anda mungkin dapat membuat skrip proses Anda dan menggunakan skema proses paralel miskin-mans dengan panggilan ke skrip shell asychronous seperti yang dijelaskan dalam jawaban alexis di sini

Jika ada orang lain yang memiliki sumber daya yang baik untuk memparalelkan pekerjaan QGIS, silakan mengedit dan menambahkannya ke jawaban ini :)

Tuan Ungu
sumber