2013-03-20 103 views
0

我已經使用opencv人臉檢測器編寫了一個多視圖人臉檢測代碼。我在圖像上運行五個檢測器(針對不同姿態角度進行訓練),並將其權重用於檢測圖像中的臉部。我已經使用TBB parallel_for將代碼並行化了,但它將性能提高了1.7倍。我想問問有沒有更好的方法可以同時運行五個探測器?TBB parallel_for線程數較少

我在16核心的集羣上運行我的代碼。我認爲線程數量(在我的情況下是5)對於利用完整的功耗來說太少了。

有什麼建議嗎?

感謝,

回答

1

一些可能出現的問題尋找到:

  • 一個探測器的時間比其他探測器運行較長時間。例如,如果一個探測器需要4個單位時間,而其他四個探測器每個需要1個單位時間,則最可能的加速是2倍。並行化慢速檢測器本身可能有助於這種情況。
  • 檢測器運行速度非常快,parallel_for沒有時間傳播工作。如果每個探測器至少需要0.1秒,這應該不成問題。
  • 內存帶寬可能是一個限制資源,特別是如果工作集不適合外層高速緩存。

諸如英特爾(R)VTune(TM)放大器之類的分析器有時可以幫助找出這些問題。放大器均有商用和non-commercial許可證。 [免責聲明:我爲英特爾工作]