2012-06-29 46 views
0

我目前正在優化OpenCL內核,並一直在嘗試爲工作組大小和向量寬度查找最佳值。
目前我正在使用帶有Intel i7-3930k(6核@ 3.5 GHz,HT禁用)和AMD HD6870的ubuntu系統。英特爾和AMD OpenCL實施都已安裝,以便進行比較。 (AMD APP SDK v2.7 Linux 64b & Catalyst 12.4,Intel OpenCL SDK 1.5)。AMD OpenCL編譯器忽略內核屬性「work_group_size_hint」

運行CPU(英特爾平臺)上,我發現:

  • 通過選擇256的WG大小,我可以比較獲得約13.5%的性能wgsize = 1。
  • 通過指定__attribute__((vec_type_hint(float4)))我可以獲得30%的提升。
  • 通過指定__attribute__((work_group_size_hint(WG_SIZE, 1, 1)))我再弄〜90%(!)

所以,在總,論文的選擇可能會導致接近3倍的性能提升。不幸的是,當使用AMD OpenCL平臺在CPU上運行這個案例時,我發現可選屬性被忽略。

內核聲明:

kernel __attribute__((work_group_size_hint(WG_SIZE, 1, 1))) 
     __attribute__((vec_type_hint(VEC_SIZE))) 
void solveEikonalEq( global  env_packed_t* env_packed_in, 
         global  float*   packedEnvData_in, 
         private  float   ds, 
         private  float   freq, 
         global  ray_t*   ray, 
         global  rayMembers_t* rayMembers){ 

和編譯器的輸出是:

"/tmp/OCLVAvDqR.cl", line 2637: warning: unknown attribute "work_group_size_hint" 
    kernel __attribute__((work_group_size_hint(WG_SIZE, 1, 1))) 
         ^

"/tmp/OCLVAvDqR.cl", line 2638: warning: unknown attribute "vec_type_hint" 
      __attribute__((vec_type_hint(VEC_SIZE))) 
         ^

是否有人知道AMD總是忽略這些提示嗎?還是有什麼我必須做的在AMD平臺上啓用這些屬性?

回答

2

從AMD論壇(http://devgurus.amd.com/message/1282250)報價回答:

支持工作組大小暗示已內部添加,並應在下一版本中。 vec_type_hint是可選的並且不受支持,但是我會提出一個請求來爲解析器添加支持。

彌Villmow
高級微設備公司

因此,簡而言之,根據AMD代表:

  • AMD的APP SDK V2.7既不知道work_group_size_hint也不vec_type_hint
  • work_group_size_hint即將發佈版本APP SDK v2.8
  • vec_type_hint可能會提供在未來的版本中墮落。
+1

我建議你詢問OP並指出當前的版本號,以便稍後登陸這裏的人知道「下一個」版本是什麼。 – Ani

+0

@ananthonline好點!相應地更新問題和答案。 –