ArcGIS Desktop 工具的並行處理

kikita發表於2020-04-05

開始下面正文之前,先說一箇舊聞,ArcGIS Desktop 10.1 SP1 之後的版本中, 出現了一個不明覺厲的 新特性 —— 並行處理(Parallel Processing)

現在機器硬體越來越優,多核CPU的機器比比皆是,ArcGIS Desktop 32位單程式的模式不能充分的利用這些硬體資源,不能滿足大資料量的處理要求。因此,Esri 改進了 ArcToolbox 中的部分工具,賦予了這部分工具並行處理的能力,確切地說是一小部分工具。


看到這裡,問題可能來了,哪些工具支援並行處理呢?遺憾的是官方沒有給出這個清單,這一點體驗上確實不是很佳。但是我們還是有辦法把它們找出來的,當我們在使用某個工具的時候,可以開啟工具的幫助,在環境變數題目下找找有沒有叫做 並行處理因子(Parallel Processing Factor)的專案。


  


也就是說,對於所有工具,只有其文件中環境變數下標明的環境變數引數才有效,而不是全部環境變數引數都有效!



下面我們來看看這個引數是如何設定和影響工具執行的。做一個簡單的小測試,先找到一個支援並行處理的工具,例如  Build Pyramids And Statistics 工具,用其為資料量較大的鑲嵌資料集的專案建立金字塔和統計值。在預設設定下,只要工具支援並行處理,工具會自動建立多個程式(ArcSOCP.exe)來執行任務。如下圖所示:





在工具支援並行處理的情況下,設定並行處理因子(Parallel Processing Factor)這個引數又能做什麼呢?


這個因子的數值,會決定工具執行使用的程式數量。一般,各工具在各個支援的環境中都有程式數量的內建預設值。我們可根據自己的資料情況、執行任務的型別和機器的可用資源對其進行更改。

一般是這四種設定方法:

引數

說明

留空

讓工具自動決定使用程式的數量,這是預設設定。*如上圖中,我是8核的機器,工具自動開啟了4個程式。

0

不跨多個程式進行操作。

n

使用指定的程式數量。

n%

使用百分比計算程式數量:程式數量 = 系統核數量 * (n / 100)。




在填寫的時候,是不是一定程式數越多越好呢?


    引用幫助文件的原文供讀者參考:

指定的程式數量大於計算機所具有的核數量,可能導致效能損失。這是因為多程式將在一個核上爭奪資源。為避免這樣的競爭,可以指定低於 100% 的百分數值或少於計算機核數量的程式數量。

    當然也有例外情況:

當所有程式均是對磁碟或企業級資料庫連線的 I/O bound 時,您可通過指定多於核數量的程式以提高效能。例如將鑲嵌資料集儲存到企業級資料庫時,新增柵格至鑲嵌資料集 工具是 I/O bound。同樣,構建概檢視工具對磁碟的主要的 I/O bound。您可通過指定大於 100% 的百分比或大於計算機所含核數量的程式數量,來使用更多程式。例如,如果您有一臺四核計算機,則指定 8 或 200%,這會跨八個程式展開操作。





我做個了小測試,來對比對相同的資料做相同操作的時間消費。


測試環境:

Windows 8.1 Enterprise 64bit ;ArcGIS for Desktop 10.3 

  


任務

為相同的一個鑲嵌資料集的柵格專案建立金字塔和統計值,使用工具 Build Pyramids And Statistics ,金字塔重取樣方法和壓縮方法等引數均相同。


結果

√ 並行處理因子設定為 0,即不跨多程式,用時 39 minutes 3 seconds

√ 並行處理因子設定為 8,即工具跨8個程式並行處理,用時 1 minutes 28 seconds

*時間是工具執行的訊息提供的時間。

時間相差懸殊,雖然只是一個小測試,我們卻能感受到並行處理相比單程式處理體驗好了很多。




相關文章