GDAL prend-il en charge le traitement parallèle?

11

Je souhaite accélérer le processus correspondant à cette commande:

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

Existe-t-il un moyen d'utiliser le traitement parallèle dans GDAL? Semi-offtopic: Sinon, recommandez-vous une solution non GDAL pour accélérer un processus de type gdalwarp?

Voici les pages Web que j'ai consultées:

Edit: J'ai posé cette question parce que je pensais avoir vu mon CPU% rester en dessous de 100% lors du traitement de gdalwarp. Cependant, à un deuxième regard, il a atteint 555,5%.

Matt Kleinsmith
la source
3
Avez-vous lu sur -multi dans le document gdal.org/gdalwarp.html ?
user30184
-multirendu encore plus rapide. Le% CPU maximum que j'ai vu était de 700% au lieu de 555%. Le processus a pris 22 secondes au lieu de 32 secondes.
Matt Kleinsmith

Réponses:

10

Oui , GDAL prend en charge le traitement parallèle, et cette prise en charge s'applique à gdalwarp par défaut.

Utilisez l'option -multi avec gdalwarp pour activer le multithreading, par opposition à seulement plusieurs cœurs.

Détails:

Sans -multi: 33,849s, et le CPU a atteint 555%. (plusieurs cœurs)

Avec -multi: 23,377s, et le CPU a atteint 700%. (plusieurs cœurs et plusieurs threads)

Taille de trame: 34721 x 20453, OS: Ubuntu 16.04, # Coeurs: 6, # Threads: 12


Crédit: user30184 a mentionné l' -multioption dans un commentaire.

Documentation: gdalwarp

Matt Kleinsmith
la source
2
Voir la documentation améliorée (par trac.osgeo.org/gdal/changeset/38196 ) de 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. Voir aussi gdal.org/…
user30184