Czy włączyć przetwarzanie wielowątkowe w QGIS?

11

Znalazłem wiele linków, które wydają się mówić, że to już istnieje w QGIS 2.2, ale wygląda na to, że używa tylko jednego rdzenia do pełnej pojemności.

To działa na Ubuntu 14.04

Obecny proces tworzy dużą liczbę regularnych punktów. Jak sprawić, aby ten proces wykorzystywał więcej niż jeden rdzeń?

Użycie procesora

jpmaniac87
źródło
1
Myślę, że będzie to następna wersja 2.4. Jeśli jednak chcesz go wypróbować, pobierz wersję nocną.
Matt
Prawdopodobnie warto skomentować, że ze względu na GIL „wielowątkowość” nie uruchomi współbieżnych rdzeni. Sprawdź stackoverflow.com/questions/1294382/... To, czego chcesz, to „wieloprocesowe”.
Mr Purple,

Odpowiedzi:

6

QGIS 2.2 nie obsługuje renderowania wielowątkowego, jest to funkcja, która będzie dostępna w QGIS 2.4.

Możesz wypróbować QGIS Master (co noc) do testowania, a następnie QGIS 2.4 ma zostać wydany 20 czerwca 2014 r .


Ups, źle odczytałem twoje pytanie i z komentarzy, wygląda na to, że przetwarzanie wielowątkowe jest czymś, co dzieje się na poziomie programisty QGIS lub na poziomie autora wtyczki Python.

Jeśli istnieje specjalne narzędzie QGIS, którego używasz z menu wbudowanego w QGIS, niż w celu uzyskania przetwarzania wielowątkowego, prawdopodobnie musiałoby zostać zakodowane przez programistę dla QGIS lub nawet w katalogu głównym narzędzia (GDAL, SAGA, Orfeo, Deweloperzy GRASS, R itp.).

Jeśli istnieje pewna wtyczka, która najprawdopodobniej jest zakodowana wokół Pythona, autor lub opiekun tej wtyczki może sprawdzić, czy możliwe jest włączenie modułów multiprocessinglub w threadingcelu zwiększenia wydajności.

Tak czy inaczej, przesłanie żądania funkcji lub sprawdzenie, czy już istnieje, jest zwykle najlepszym sposobem na rozpoczęcie pracy. Informuje o tym, czy ktoś już zajmuje się ulepszeniem lub jakie zasoby będą potrzebne, aby go uruchomić.

SaultDon
źródło
Szkoda ... W przeszłości miałem problemy z budowaniem ze źródła. Jeśli po prostu dodam ppa dla nightlies i zainstaluję to samo z apt, czy to da mi najnowszą noc? Masz pomysł na stabilność?
jpmaniac87
@ jpmaniac87 Dawno nie używałem Ubuntu i pracuję w GIS na Arch Linux, więc kompiluję wszystko ze źródła. Nie wiedziałbym więc, jakie są PPA dla Ubuntu i czy możesz zainstalować QGIS (stabilny) z QGIS (master) w tym samym czasie.
SaultDon
@ jpmaniac87 Wygląda na to, że z tej odpowiedzi w innym pytaniu jest to niemożliwe, biorąc pod uwagę sposób, w jaki wersje QGIS są pakowane na Ubuntu. Wygląda na to, że to jedno lub drugie.
SaultDon
Umowy PPA działają. Właśnie skomentowałem stabilne linie i zainstalowałem co noc. To jest szybkie! Ale ... używa wielu wątków dosłownie do renderowania ... Miałem nadzieję, że więcej procesów wtyczek. Myślę, że to oznaczałoby, że twórcy wtyczek musieliby zezwolić na wielowątkowe przetwarzanie w swoim kodzie?
jpmaniac87
1
@ jpmaniac87 Tak, ponieważ wtyczki są zbudowane w Pythonie, a dla Pythona istnieje moduł multiprocessinglub threading ( threadingzwykle jest używany queue) , który musieliby specjalnie dodać do swoich skryptów.
SaultDon
3

Zależy, o co ci chodzi. Gdy przetwarzanie zostanie przeniesione do nowej struktury menedżera zadań, algorytmy będą mogły działać równolegle (tam, gdzie to możliwe). Na przykład bufor dla jednej warstwy może działać, podczas gdy transformacja zachodzi na innej warstwie. Jeśli masz do czynienia z równoległością w ramach jednego algorytmu (np. Buforowanie funkcji za pomocą wielu wątków), to nie jestem świadomy żadnych planów, aby sobie z tym poradzić.

Źródło: http://osgeo-org.1560.x6.nabble.com/Will-Processing-in-QGIS-3-support-parallelization-td5301809.html


Stara odpowiedź: podczas Google Summer of Code 2015 opracowano obsługę wielowątkowości dla QGIS Processing. Kod jest obecnie sprawdzany i powinien zostać udostępniony w wersji dla programistów w 2016 roku. (Źródło: http://boundlessgeo.com/2015/12/latest-developments-in-qgis-processing/ )

... To rozwiązanie niestety nie mogło zostać połączone.

podmrok
źródło
Wszelkie aktualizacje w tej sprawie @underdark?
Ricardo Barros Lourenço
Niestety, równoległość jest wciąż ograniczona w większości aplikacji. Rozumiem, że wykorzystanie infrastruktury bazy danych, takiej jak PostGIS / postgres, umożliwia bardziej zintegrowane zarządzanie zapytaniami i lepsze możliwości wielowątkowości.
CrystallineEntity
2

Niektóre wątki są włączane w podstawową funkcjonalność QGIS (renderowanie na przykład jak opisano w odpowiedzi SaultDons), ale wiele funkcji lub algorytmów może, ale nie musi mieć włączonych wątków w zależności od ich rozwoju.

Dla autorów wtyczek pyQGIS (być może włączając OP), którzy chcą włączyć wątki w swoich wtyczkach / skrypcie, pomoc jest dostępna na blogu snorfalorpagus. Mam nadzieję, że coraz więcej deweloperów będzie używać wątków - szczególnie w przypadku bardziej podatnych algorytmów.

Jako stopgap możesz być w stanie napisać skrypt do swojego procesu i użyć słabego schematu równoległego procesu z wywołaniami do asychronicznych skryptów powłoki, jak opisano w odpowiedzi Alexa tutaj

Jeśli ktoś ma jakieś dobre zasoby do równoległego wykonywania zadań QGIS, możesz je edytować i dodawać do tej odpowiedzi :)

Mr Purple
źródło