2011-08-29 23 views
7

Şu anda OpenCL çekirdeğimde işlediğim geniş bir dizi float var. Bu diziyi bölüp ayırma ve işlemi hızlandıracak bir OpenCL vektör tipi dizisi kullanıp kullanmayacağımı merak ediyorum. Temelde, bir dizi 4.800 float olsaydı, 300 float16 vektöründen oluşan bir diziye bölerdim. Bu, SIMD'den yararlanır mı?OpenCL vektör türlerini kullanın SIMD

+2

OpenCL, temeldeki donanımın SIMD özelliklerinden faydalanmalı veya GPU programlama için oldukça kullanışsız olacaktır. Her ne kadar CPU OpenCL'nin güçlü yönlerini oynamak için mükemmel bir alan olmasa da, CPU'da ne yaptığından emin değilim. –

cevap

7

Intel aslında kendi OpenCL SDK'sinin ne yaptığını açıklar: bkz. Writing Optimal OpenCL™ Code with Intel® OpenCL SDK. Kıyaslama için bir ek olarak, bunu kontrol etmek isteyebilirsiniz. İlginç bölüm bölüm 2.3'ten başlıyor.

Sorunuzu cevaplamak için: evet, SIMD'den faydalanacaktır. Ancak "vektör veri tiplerini kullanarak CPU vektör ünitelerinin kullanımını en üst düzeye çıkarmak" için bu belgeyi gerçekten okumalısınız.

0

Bu olabilir veya olmayabilir. OpenCL'nin uygulanmasına ve programınızın yürütüldüğü donanıma bağlıdır.

Bir iyileştirme sağlayıp sağlamadığını görmenin tek yolu, vektör boyutlarının aralığı için (örneğin, karşılaştırma 1 (skaler), 2, 4, 8 ve 16) ilgili platformlar ve uygulamalar üzerinde kıyaslama yapmaktır.