Czy GDAL obsługuje przetwarzanie równoległe?

11

Chciałbym przyspieszyć proces odpowiadający temu poleceniu:

gdalwarp -t_srs EPSG:4326 -overwrite input.ntf output.tif

Czy istnieje sposób korzystania z równoległego przetwarzania w GDAL? Semi-offtopic: Jeśli nie, czy polecasz rozwiązanie inne niż GDAL, aby przyspieszyć proces podobny do gdalwarpa?

Oto strony, na które patrzyłem:

Edycja: Zadałem to pytanie, ponieważ wydawało mi się, że mój procesor% pozostaje poniżej 100% podczas przetwarzania gdalwarp. Jednak po drugim spojrzeniu osiągnął 555,5%.

Matt Kleinsmith
źródło
3
Czy czytałeś o -multi w dokumencie gdal.org/gdalwarp.html ?
user30184
-multiuczyniło to jeszcze szybszym. Maksymalny procent CPU jaki widziałem to 700% zamiast 555%. Proces ten zajął 22 sekundy zamiast 32 sekund.
Matt Kleinsmith

Odpowiedzi:

10

Tak , GDAL obsługuje przetwarzanie równoległe, a ta obsługa domyślnie dotyczy gdalwarp.

Użyj opcji -multi z gdalwarp, aby włączyć wielowątkowość, w przeciwieństwie do wielu rdzeni.

Detale:

Bez -multi: 33,849s, a procesor osiągnął 555%. (wiele rdzeni)

Przy -multi: 23,377s, a procesor osiągnął 700%. (wiele rdzeni i wiele wątków)

Rozmiar rastra: 34721 x 20453, System operacyjny: Ubuntu 16.04, # Rdzenie: 6, # Wątki: 12


Źródło : user30184 wspomniał o -multiopcji w komentarzu.

Dokumentacja: gdalwarp

Matt Kleinsmith
źródło
2
Zobacz ulepszoną dokumentację gdalwarp ( trac.osgeo.org/gdal/changeset/38196 ) -multi: Use multithreaded warping implementation. Two threads will be used to process chunks of image and perform input/output operation simultaneously. Note that computation is not multithreaded itself. To do that, you can use the -wo NUM_THREADS=val/ALL_CPUS option, which can be combined with -multi. Zobacz także gdal.org/…
user30184