O GDAL suporta processamento paralelo?

11

Gostaria de acelerar o processo correspondente a este comando:

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

Existe uma maneira de usar o processamento paralelo no GDAL? Semi-offtopic: Se não, você recomenda uma solução não GDAL para acelerar um processo semelhante ao gdalwarp?

Aqui estão as páginas da web que eu olhei:

Edit: Eu fiz esta pergunta porque pensei ter visto minha% de CPU ficar abaixo de 100% ao processar o gdalwarp. No entanto, em uma segunda análise, alcançou 555,5%.

Matt Kleinsmith
fonte
3
Você leu sobre -multi no documento gdal.org/gdalwarp.html ?
User30184
-multitornou ainda mais rápido. O% máximo de CPU que vi foi de 700% em vez de 555%. O processo levou 22 segundos em vez de 32 segundos.
quer

Respostas:

10

Sim , o GDAL suporta processamento paralelo, e esse suporte se aplica ao gdalwarp por padrão.

Use a opção -multi com gdalwarp para ativar o multithreading, em vez de apenas vários núcleos.

Detalhes:

Sem -multi: 33.849s, e a CPU atingiu 555%. (múltiplos núcleos)

Com -multi: 23.377s, e a CPU atingiu 700%. (vários núcleos e vários threads)

Tamanho da varredura: 34721 x 20453, SO: Ubuntu 16.04, # Cores: 6, # Tópicos: 12


Crédito: user30184 mencionou a -multiopção em um comentário.

Documentação: gdalwarp

Matt Kleinsmith
fonte
2
Veja a documentação aprimorada (por trac.osgeo.org/gdal/changeset/38196 ) do 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. Veja também gdal.org/…
user30184