Basit cevap, bir GPU'nun çok sayıda öğenin her biri üzerinde oldukça küçük, oldukça basit bir hesaplama yapmanız gerektiğinde en iyi şekilde çalışmasıdır. Bu şekilde çok şey başarmak için, her kalem için hesaplama diğer kalem için hesaplamadan bağımsız olmalıdır. Bir öğe ile diğeri arasında (normalde) bir miktar bağımlılık varsa, genellikle GPU'da bu kodu yürütmeden çok fazla şey elde etmeden önce onu kırmanın bir yolunu bulmanız gerekir. Bağımlılık tamamen kırılamıyorsa veya kırılması için çok fazla iş gerekiyorsa, kod CPU'da daha hızlı çalışabilir.
Mevcut CPU'ların çoğu, mevcut GPU'ların desteklemeye çalışmadığı birkaç işlemi de destekler (örn. Çoklu görev için bellek koruması).
Biraz farklı bir yönden baktığımızda, CPU'lar (büyük ölçüde) programcılar için makul derecede uygun olacak şekilde tasarlandı ve donanım kullanıcıları, ancak yine de mümkün olduğunca çabuk çalışır.
GPU'lar oldukça ters yönden şeylere gelir: büyük ölçüde donanım tasarımcısı için uygun olacak şekilde tasarlanmıştır ve OpenCL gibi şeyler, donanımın kısıtlamaları göz önüne alındığında, mümkün olduğunca makul bir programlama modeli sağlamaya çalışmıştır.
GPU'da çalıştırmak için kod yazmak genellikle CPU'da aynı işlemi yapmaktan daha fazla zaman ve çaba gerektirir (bu yüzden daha pahalıya mal olur). Bu nedenle, bunu yapmak öncelikle /
- Sorun o kadar paralel ki minimum çabadan büyük bir kazanç bekleyebilirsiniz, ya da
- Hız kazancı o kadar önemlidir ki, bir sürü ekstra işi haklı çıkarır.
Her biri için bazı belirgin olasılıklar vardır - ancak çok sayıda uygulama açıkça her ikisine de yakın değildir. Yakın zamanda bir GPU'da çalışan bir CRUD uygulamasını görmekten oldukça şaşırırım (ve eğer yaparsa, muhtemelen birileri en iyi yaklaşan herhangi bir şeye değil, tam olarak bu hedefe dikkat ederek yola çıkacaktır. maliyet / fayda oranı).
Gerçek şu ki, bir çok ("çoğu" demeye cazipim) uygulamalar için tipik bir CPU yeterince hızlı değildir ve programlama kolaylığı (yeni özelliklerin daha kolay geliştirilmesi gibi şeylere yol açmak) çok daha önemlidir. yürütme hızı.