GDAL поддерживает параллельную обработку?

11

Я хотел бы ускорить процесс, соответствующий этой команде:

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

Есть ли способ использовать параллельную обработку в GDAL? Полу-оффтоп: Если нет, вы рекомендуете решение без GDAL для ускорения процесса, подобного gdalwarp?

Вот веб-страницы, на которые я смотрел:

Изменить: я задал этот вопрос, потому что я думал, что мой процессор% остается ниже 100% при обработке gdalwarp. Однако, с другой стороны, он достиг 555,5%.

Мэтт Кляйнсмит
источник
3
Вы читали о -multi в документе gdal.org/gdalwarp.html ?
user30184
-multiсделал это еще быстрее. Максимальный CPU%, который я видел, составлял 700% вместо 555%. Процесс занял 22 секунды вместо 32 секунд.
Мэтт

Ответы:

10

Да , GDAL поддерживает параллельную обработку, и эта поддержка по умолчанию применяется к gdalwarp.

Используйте параметр -multi с gdalwarp, чтобы включить многопоточность, в отличие от нескольких ядер.

Подробности:

Без -multi: 33,849 с, а процессор достиг 555%. (несколько ядер)

С -multi: 23,377 с, а процессор достиг 700%. (несколько ядер и несколько потоков)

Размер растра: 34721 x 20453, ОС: Ubuntu 16.04, # ядер: 6, # потоков: 12


Кредит: пользователь30184 упомянул эту -multiопцию в комментарии.

Документация: gdalwarp

Мэтт Кляйнсмит
источник
2
Смотрите улучшенную документацию (by trac.osgeo.org/gdal/changeset/38196 ) 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. Смотрите также gdal.org/...
user30184