Unterstützt GDAL die Parallelverarbeitung?

11

Ich möchte den diesem Befehl entsprechenden Vorgang beschleunigen:

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

Gibt es eine Möglichkeit, die Parallelverarbeitung in GDAL zu verwenden? Semi-offtopic: Wenn nicht, empfehlen Sie eine Nicht-GDAL-Lösung, um einen gdalwarp-ähnlichen Prozess zu beschleunigen?

Hier sind die Webseiten, die ich mir angesehen habe:

Bearbeiten: Ich habe diese Frage gestellt, weil ich dachte, dass meine CPU% bei der Verarbeitung von gdalwarp unter 100% bleibt. Auf den zweiten Blick erreichte es jedoch 555,5%.

Matt Kleinsmith
quelle
3
Haben Sie im Dokument gdal.org/gdalwarp.html über -multi gelesen ?
user30184
-multimachte es noch schneller. Die maximale CPU%, die ich sah, war 700% statt 555%. Der Vorgang dauerte 22 statt 32 Sekunden.
Matt Kleinsmith

Antworten:

10

Ja , GDAL unterstützt die parallele Verarbeitung. Diese Unterstützung gilt standardmäßig für gdalwarp.

Verwenden Sie die Option -multi mit gdalwarp, um Multithreading zu aktivieren, im Gegensatz zu nur mehreren Kernen.

Einzelheiten:

Ohne -multi: 33,849s und die CPU erreichte 555%. (mehrere Kerne)

Mit -multi: 23.377s erreichte die CPU 700%. (mehrere Kerne und mehrere Threads)

Rastergröße: 34721 x 20453, Betriebssystem: Ubuntu 16.04, # Kerne: 6, # Threads: 12


Bildnachweis : user30184 erwähnte die -multiOption in einem Kommentar.

Dokumentation: gdalwarp

Matt Kleinsmith
quelle
2
Siehe die verbesserte Dokumentation (von trac.osgeo.org/gdal/changeset/38196 ) von gdalwarp -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. Siehe auch gdal.org/…
user30184