İnsanlar neden daha uzmanlaşmış bir yonga yerine yüksek performanslı hesaplama için GPU kullanıyor?


105

Anladığım kadarıyla insanlar GPU'ları genel bilgi işlem için kullanmaya başladılar çünkü ekstra bir bilgi işlem gücü kaynağı oldular. Her işlem için bir CPU kadar hızlı olmasalar da, pek çok çekirdeğe sahipler, bu yüzden bir işlemciden daha çok paralel işleme adapte edilebilirler. Grafik işleme için bir GPU'ya sahip olan bir bilgisayara zaten sahipseniz, ancak grafiklere ihtiyacınız olmaz ve biraz daha fazla hesaplama gücü almak istiyorsanız, bu mantıklı olur. Ancak, insanların grafik işlemlerinde bunları kullanma niyetinde olmadan, özellikle bilgi işlem gücü eklemek için GPU'lar satın aldığını da biliyorum . Bana göre bu, aşağıdaki analojiye benziyor:

Çimlerimi kesmem gerekiyor, ama çim biçme makinem çok zayıf. Böylece kafesimi yatak odamda tuttuğum fandan çıkardım ve bıçakları keskinleştirdim. Bunu çim biçme makinesime yapıştırıyorum ve oldukça iyi çalıştığını görüyorum. Yıllar sonra, büyük bir çim bakımı işi için satın alma görevlisiyim. Çim biçme aletleri için harcayacağım oldukça büyük bir bütçem var. Çim biçme makinesi almak yerine, bir sürü kutu hayranı satın alırım. Yine iyi çalışıyorlar, ancak kullanmayacağım ekstra parçalar için (kafes gibi) para ödemem gerekiyor. (Bu benzetmenin amaçları için, çim biçme makinelerinin ve kutu fanların aynı maliyeti gösterdiğini varsaymalıyız)

Öyleyse neden bir yonga ya da GPU’nun işlem gücüne sahip olan bir cihaz için bir piyasa yok, ama genel gider grafikleri yok? Birkaç olası açıklama düşünebilirim. Varsa, hangileri doğrudur?

  • Böyle bir alternatif, GPU zaten iyi bir seçenek olduğunda geliştirilemeyecek kadar pahalı olurdu (çim biçme makineleri mevcut değil, neden bu mükemmel kutu fanını kullanmıyorsunuz?).
  • “G” nin grafik anlamına geldiği gerçeği, yalnızca kullanım amacını belirtir ve çipin grafik işlemeye diğer türden çalışmalara göre daha iyi adapte edilmesi için herhangi bir çaba harcanması anlamına gelmez (çim biçme makineleri ve kutu fanları aynı olduğunda doğrudan aşağıya inersiniz, birinin diğeri gibi çalışmasını sağlamak için herhangi bir değişiklik yapmanız gerekmez).
  • Modern GPU'lar eski öncekilerle aynı adı taşıyorlar, ancak bugünlerde üst düzey olanlar grafikleri özel olarak işlemek için tasarlanmamıştır (modern kutu fanlar, daha yaşlı olmasa bile çoğunlukla çim biçme makinesi olarak işlev görecek şekilde tasarlanmıştır).
  • Hemen hemen herhangi bir sorunu grafik işleme diline çevirmek kolaydır (çim üzerinde hızlı bir şekilde hava üfleyerek kesilebilir).

DÜZENLE:

Sorum cevaplandı, ancak bazı yorum ve cevaplara dayanarak sorumu açıklığa kavuşturmam gerektiğini düşünüyorum. Neden herkesin kendi hesaplarını almadığını sormuyorum. Açıkçası bu çoğu zaman çok pahalı olurdu.

Basitçe, hızlı bir şekilde paralel hesaplamaları yapabilen cihazlara yönelik bir talep olduğunu gördüm. Bu amaç için tasarlanan bir cihazın aksine neden böyle bir cihazın en uygun Grafik İşlem Birimi olduğunu merak ediyordum.


66
Onlar Çünkü olan şey bu tür için özelleşmiş; temelde aynı matematik türüdür. Ve nVidia, insanların bu tür kitlesel paralel sayıdaki kırma işlemlerini yapması için sadece GPU'lu panolar üretti ve sattı.
Heptit,

7
Çiplere eklenen "birimler" konusunda uzman olduğumuzu unutmayın. AES işlemcilerde donanımda (bence) yapılır. AVX de donanımda uygulanmaktadır. Ancak, nerede duruyorsunuz? Chipmaker neye ihtiyacınız olduğunu bilmiyor ve çoğu insan çok özel görevler için tasarlanmış kendi fişlerine sahip olacak kapasiteye (teknolojik veya finansal) sahip değil. Grafik kartları - diğerlerinin de dediği gibi - belirli görevlere kendini iyi veren bir tür özel mimarlıktır. Her şey için iyi değillerdir - ancak belirli belirli görevler için orada kullanılmaktalar.
DetlevCM

4
Daha doğru bir benzetme, kutu fanlarını 100 metre genişliğindeki çiftçilik kombinasyonlarıyla değiştirir.
MooseBoys

6
Bilgisayarım zaten GPU'yu kullanmaya hazır, özel bir yonga tasarlamak ve üretmek beni birkaç milyona geri getirecekti.
PlasmaHH

19
Başka bir benzetme dene. Diyelim ki kutu hayranlarımız ve helikopter rotorlarımız var. Varsayımsal dünyamızda, kutu hayranları için uygulamaların, 20 m karbon fiber kanatlı kutu fanları ile bitene kadar daha yüksek hızlarda çalışan daha büyük fanlara ihtiyacı vardı ve seri üretim onları ucuza getirdi. Sonra birisi 20 m'lik bir fanın esasen etrafında bir kafesi olan bir helikopter rotoru olduğunu fark etti. Gerçekten de öyle.
Graham

Yanıtlar:


109

Gerçekten tüm açıklamaların bir birleşimi. Daha ucuz ve daha kolay, zaten var ve tasarım saf grafiklerden uzaklaştı.


Modern bir GPU, bazı ek grafik donanımlarına (örneğin, video kodlama ve kod çözme için bazı sabit işlevli hızlandırıcılara) sahip akış işlemcileri olarak görülebilir . Günümüzde GPGPU programlama, bu amaç için özel olarak tasarlanmış API'leri (OpenCL, Nvidia CUDA, AMD APP) kullanır.

Son on yılda veya iki yıl boyunca, GPU'lar sabit işlevli bir boru hattından (yalnızca hemen hemen grafikler) programlanabilir bir boru hattına ( gölgelendiriciler özel talimatlar yazmanıza izin verir), OpenCL gibi daha modern API'lere, gölgelendirici çekirdeklerine doğrudan erişim sağlamadı beraberindeki grafik boru hattı.

Kalan grafik bitleri küçük. Kartın maliyetinin o kadar küçük bir kısmı, onları dışarıda bırakmanın daha ucuz olması ve ek bir tasarımın maliyeti ile karşı karşıya kalmanız. Yani bu genellikle yapılmaz - çoğu GPU’nun bilgisayar tabanlı eşdeğeri yoktur - en yüksek katmanlar dışında ve bunlar oldukça pahalıdır.

Normal "oyun" GPU'ları çok yaygın olarak kullanılır, çünkü ölçek ekonomileri ve göreceli basitlik, onları ucuz ve başlangıçta kolay hale getirir. Grafik programlamadan GPGPU ile diğer programları hızlandırmaya kadar oldukça kolay bir yol. Diğer seçeneklerden farklı olarak daha yeni ve daha hızlı ürünler bulunduğundan donanımı yükseltmek de kolaydır.


Temel olarak, seçenekler aşağı doğru gelir:

  • Genel amaçlı CPU, dallanma ve sıralı kod için mükemmel
  • Normal "oyun" GPU
  • Hesaplamaya yönelik GPU, örneğin Nvidia Tesla ve Radeon Instinct Bunlar genellikle grafik çıktısını desteklemez, bu nedenle GPU biraz yanlış bir işlemdir. Bununla birlikte, normal GPU'lara benzer GPU çekirdeği kullanıyorlar ve OpenCL / CUDA / APP kodu doğrudan ya da az taşınabilir.
  • Çok farklı bir programlama modeli kullanan ve çok pahalı olma eğilimi gösteren FPGA'lar. Burası giriş için önemli bir engelin olduğu yer. Ayrıca iş yüküne bağlı olarak bir GPU'dan daha hızlı olmaları gerekmez.
  • ASIC'ler, özel tasarım devreler (donanım). Bu çok çok pahalıdır ve sadece aşırı ölçekte değer kazanmaktadır (en azından binlerce birim konuşuyoruz) ve programın asla değişmesi gerekmeyeceğinden emin olduğunuz yer. Gerçek dünyada nadiren mümkün olurlar. Ayrıca, teknolojinin her ilerleyişinde her şeyi yeniden tasarlamanız ve test etmeniz gerekecektir - işlemciler ve GPU'lar gibi yeni bir işlemcide takas yapamazsınız.

16
ASIC'ler aynı zamanda bilgisayar kelimenin kendisi için para ödediği zaman da anlam ifade ediyor (kripto madenciliği)
cırcır ucube

4
Aslında, FPGA’lar genellikle GPU’lardan daha kötü. Sorun, FPGA'ların çok esnek olmasıdır; birçok farklı işlemi gerçekleştirebilirler. Bununla birlikte, hesaplama genellikle bir matematik şeklidir ve aslında kütle sadece iki işlemdir: toplama ve çarpma (çıkarma ve bölme yukarıdakilerin varyantlarıdır). GPU'lar bu iki işlemde çok, çok iyi, FPGA'dan çok daha fazla.
MSalters

19
FPGA hakkında daha fazla netleştirmek gerekir. Bir "adım" olduğu fikri biraz yanıltıcıdır. Onlar daha çok yanlara doğru bir adım.
Yakk

6
Sonuncunun bir örneği olarak, Google'ın makine öğrenmesi için kendi "Tensör işleme birimleri" vardır. Ne ölçüde özelleştirildikleri belli değil, ancak ASIC olarak tanımlanıyor.
mbrig

4
@ MSalters GPGA'lara göre FPGA'ların ana satış noktalarından biri, veri merkezleri güç duvarını vurmaya başladığından (FPGA'lar genellikle daha verimlidir) performans / Watt'tır. Matematiğe kadar, FPGA'lar sabit nokta ve tamsayılı aritmetikteki GPU'larla karşılaştırılabilir ve yalnızca kayan nokta matematiği içinde kalıyor.
wilcroft

32

Favori analojim:

  • CPU : Bir Polymath dehası. Bir seferde bir veya iki şey yapabilir, ancak bu şeyler çok karmaşık olabilir.
  • GPU : Bir ton düşük vasıflı işçi. Her biri çok büyük problemler yapamıyor, ancak kitlesel olarak çok şey yapabilirsiniz. Sorunuz için evet, bazı ek yükler var ama bunun marjinal olduğuna inanıyorum.
  • ASIC / FPGA : Bir şirket. Bir ton düşük vasıflı işçi ya da bir çift deha ya da düşük vasıflı işçi ve dehaların bir kombinasyonunu kiralayabilirsiniz.

Kullandığınız şey maliyet duyarlılığına, bir görevin ne kadar paralelleştirilebileceğine ve diğer faktörlere bağlıdır. Piyasanın nasıl oynadığı nedeniyle, GPU'lar en çok paralel uygulamalar için en iyi seçimdir ve CPU ve güç ve birim maliyet birincil öncelikli olduğunda CPU'lar en iyi seçimdir.

Doğrudan sorunuza: neden bir ASIC / FPGA üzerinden bir GPU? Genellikle maliyet. Günümüzün şişirilmiş GPU fiyatları ile bile, (genellikle) ihtiyaçlarınızı karşılamak için bir ASIC tasarlamaktan daha GPU kullanmak daha ucuz. @ User912264'in işaret ettiği gibi, ASIC'ler / FPGA'lar için faydalı olabilecek özel görevler vardır. Eşsiz bir işiniz varsa ve ölçekden faydalanırsanız, ASIC / FPGA tasarlamaya değersiniz. Aslında FPGA tasarımlarını özellikle bu amaç için tasarlayabilir / satın alabilir / lisanslayabilirsiniz. Bu, örneğin yüksek tanımlı televizyonlardaki pikselleri güçlendirmek için yapılır.


7
Yorumlar zaten cevap vermek için değildir ve bu bana makul bir cevap gibi görünüyor.
Raimund Krämer

1
@BobtheMogicMoose Ancak, genomik analiz için tasarlanmış özel bir FPGA kullanmak, GPU’da eşdeğer bir koda sahip olmaktan daha hızlıdır. Bilim insanlarına sonuçları beklerken oturup oturup para ödüyorsanız, hızlı FPGA çok hızlı bir şekilde para ödüyor.
doneal24

FPGA'lar ortak geliştirici için de daha erişilebilir hale geliyor - örneğin Microsoft, FPGA'ları (Project BrainWave) kullanan bir bulut AI çözümüne sahiptir . AWS'nin de bazı teklifleri var. Herkes, birkaç yıl önce bile birçok kullanım durumuna uygun olmayan, kendileri oluşturmak zorunda kalmadan özel görevler için bazı özel FPGA'lar kiralayabilir.
brichins

Evet, sanırım bir arduino ahududu pi ile karşılaştırılabilir FPGA hobi kitleri bile var. FPGA'leri programlamanın daha gelişmiş mimarilere göre çok daha maliyetli olduğunu düşünüyorum.
BobtheMagicMoose

10

Analojiniz kötü. Analojide, büyük bir çim bakımı işletmesi için ekipman satın aldığınızda , iyi çim biçme makineleri olduğunu varsayıyorsunuz . Bilgisayar dünyasında durum böyle değil - GPU'lar hazırda bulunabilecek en iyi araç.

Özel bir çip için Ar-Ge maliyetleri ve olası performans kazanımları, birini haklı çıkarmak için çok yüksek.

Bununla birlikte, Nvidia'nın özellikle genel amaçlı hesaplama için bazı GPU'ları ortaya koyduğunun farkındayım - video çıkışları yoktu - biraz daha önce kafesleri çıkarılmış kutu hayranları satmak gibi.


9

Elbette, enerji verimliliği veya hesaplama hızı için özel cipsler kullanabilirsiniz. Size Bitcoin madenciliğinin tarihini anlatayım:

  • Bitcoin yeni, işlemcileriyle birlikte benimkini merak ediyor.
  • Bitcoin biraz yeni, akıllı meraklılar GPU'ları ile birlikte madenler.
  • Bitcoin şimdi (tür) ünlü, insanlar FPGA'lar alıyor.
  • Bitcoin şimdi ünlü (2013), hatta yeni başlayanlar bile verimli bir şekilde ASIC'leri ("Uygulamaya Özel Entegre Devreler" satın alıyorlar).
  • Ödül damlalarını bloke et (periyodik olarak), eski ASIC'ler bile artık karlı değil.

Yani hayır, özel bir "dev hesap makinesi" yerine GPU kullanmak için hiçbir neden yoktur. Ekonomik teşvikler büyüdükçe, donanım daha fazla uzmanlaşır. Bununla birlikte, bir kerede binlerce üretim yapmıyorsanız, tasarlamaları oldukça zor ve üretilemezler. O cips tasarlamak için geçerli değilse, sen birini satın alabilirsiniz olanlar en yakın Walmart.

TL; DR Elbette daha fazla özel cips kullanabilirsiniz.


1
"Elbette daha fazla özel cips kullanabilirsiniz" - ancak bitcoin (SHA-256), daha sonra litecoin (scrypt) için özel cipsler var ve hepsi bu kadar. Diğer problemler için yüksek performanslı bilgi işlem donanımı mevcut değil. (Bu, mevcut üst seviye GPU’lardan daha yüksek performansla)
Agent_L

8

Analojinizde tanımladığınız şey tam olarak olan şeydir. Tıpkı fanınızı tutup biçme makinesi olarak kullanmaya çalışmak için bıçakları keskinleştirdiğiniz gibi, bir grup araştırma gerçekleştirdi "Hey, burada oldukça hoş çok çekirdekli işlem ünitemiz var, bunu genel amaçlı hesaplamalar için kullanmaya çalışalım! ".

Sonuç iyiydi ve top yuvarlanmaya başladı. GPU, en zorlu durumlara yardımcı olmak için genel amaçlı hesaplamayı desteklemek için yalnızca grafik aygıttan alındı.

Zaten bilgisayarlardan beklediğimiz en fazla hesaplama gerektiren işlem bilgisayarlardan grafikler. Oyunların bugün nasıl göründüğüne dair çarpıcı ilerlemelere, birkaç yıl önce yaptıklarına göre bakmak yeterli. Bu, GPU'ların gelişimine çok fazla çaba ve para harcandığı ve popülerliklerine yeni eklenmiş belirli bir genel amaçlı hesaplama sınıfını hızlandırmak için de kullanılabileceği anlamına gelir.

Sonuç olarak, sunduğunuz ilk açıklama en doğru olanıdır:

  • Böyle bir alternatif, GPU zaten iyi bir seçenek olduğunda geliştirilemeyecek kadar pahalı olacaktır.

Zaten orada bulunan GPU'lar, herkes tarafından kolayca kullanılabilir ve çalıştılar.


5
Tabii ki "biz" in ne olduğuna bağlı olarak, grafik olarak "en zorlu işlem gerektiren işlem" konusunda hemfikir olmam gerekiyor. Genel kullanıcılar için, evet, fakat bilim ve mühendislik topluluğunda, grafiklerden daha çok şey talep ediyorlar. Sonuçta, kabul edilebilir grafikler (oyunlar için olduğu gibi), tek bir orta sınıf PC ve GPU combo ile yapılabilir. Önemli sorunlar genellikle petaflop aralığında performans elde etmek için bu tür yüzlerce veya binlerce birimi birleştirir ve bu nedenle problemler hesaplama günlerinde günler veya haftalar sürebilir.
jamesqf

Bilgisayarımdan beklediğim en hesaplama gerektiren işlem, teknik olarak grafiklerdir, ancak hareketten yapılan hesaplamalar çoğu insanın (veya GPU tasarımcının) "grafikler" kelimesini duyduklarında düşündükleri şey değildir.
Mark

5

Spesifik olarak, GPU'lar "görev paralelliği" anlamında "çekirdek" değildir. Çoğunlukla, "veri paralelliği" şeklindedir. SIMD "tek komut çoklu veridir". Bunun anlamı, bunu yapmayacağınızdır:

for parallel i in range(0,1024): c[i] = a[i] * b[i]

Bu, farklı oranlarda ilerleyen ayrı görevler gerçekleştiren 1024 talimat işaretçisine sahip olduğunuz anlamına gelir. SIMD veya "vector computing" tüm dizilerde aynı anda talimatlar verecek, daha fazlası şöyle:

c = a * b

"Döngüler", talimatların dışında değil "*" ve "=" talimatlarındadır. Yukarıdakiler, aynı 1024 elementin tümü için aynı anda, hepsi için AYNI talimat göstergesinde yapacaktır. A, b ve c için üç büyük yazmacın olması gibi. SIMD kodu son derece kısıtlıdır ve yalnızca "dalsız" olmayan sorunlar için iyi çalışır.

Gerçekçi durumlarda, bu SIMD değerleri 1024 öğe kadar büyük değildir. Birbirine bağlı int32 çetesi olan bir değişken düşünün. Çarpmayı düşünebilir ve gerçek bir makine talimatı olarak atayabilirsiniz.

int32_x64 c; int32_x64 b; int32_x64 a; c = b * a;

Gerçek GPU'lar SIMD'den daha karmaşık, ancak bu onların özü. Bu yüzden sadece GPU'ya rastgele bir CPU algoritması atamaz ve hızlanmayı bekleyemezsiniz. Algoritmayı dallandıran komut ne kadar çok olursa GPU için o kadar az uygun olur.


5

Buradaki diğer cevaplar oldukça iyi. Ben de 2 kuruş atacağım.

İşlemcilerin bu kadar yaygın olmasının bir nedeni de esnek olmaları. Onları sınırsız çeşitlilikte görevler için yeniden programlayabilirsiniz. Bugünlerde küçük bir CPU veya mikrodenetleyiciye birşeyler sokacak ürünler üreten şirketler için aynı işi yapmak için özel devre geliştirmek yerine işlevselliğini programlamak daha ucuz ve daha hızlı.

Aynı cihazı diğerleriyle birlikte kullanarak, aynı cihazı (veya benzerini) kullanan sorunlara bilinen çözümlerden yararlanabilirsiniz. Platform geliştikçe, çözümleriniz de gelişir ve çok olgunlaşır ve optimize edilir. Bu cihazlara kodlayan insanlar da uzmanlık kazanıyor ve zanaatlarında çok başarılı oluyorlar.

Sıfırdan yeni bir cihaz türü, bir GPU'ya alternatif oluşturacak olsanız, en eski evlatçıların bile, onu nasıl kullanacaklarını bilmekte başarılı olmaları yıllar alacaktır. İşlemcinize bir ASIC eklerseniz, bu cihaza boşaltma hesaplamasını nasıl optimize edersiniz?

Bilgisayar mimarlığı topluluğu bu fikirde yıllardır bolca var (belli ki daha önce popülerdi, ancak yakın zamanda bir rönesans gördü). Bu 'hızlandırıcılar' (terimleri) farklı derecelerde yeniden programlanabilirliğe sahiptir. Sorun şu, hızlandırıcınızın çözebileceği sorunun kapsamını ne kadar dar tanımlıyorsunuz? Diferansiyel denklemleri hesaplamak için op-amp'li analog devreler kullanarak bir hızlandırıcı oluşturmak için çalışan bazı insanlarla bile konuştum. Harika bir fikir, ama son derece dar kapsam.

Çalışan bir hızlandırıcıya sahip olduktan sonra, ekonomik güçler kaderinize karar verecek. Piyasa ataleti inanılmaz bir güçtür. Bir şey harika bir fikir olsa bile, bu yeni cihazı kullanmak için çalışma çözümlerinizi yeniden canlandırmak ekonomik olarak mümkün mü? Belki, belki değil.

GPU'lar aslında bazı problemler için korkunçtur, bu yüzden birçok insan / şirket başka tür cihazlarda çalışmaktadır. Ancak GPU'lar zaten çok iç içe geçmiş durumda, cihazları hiç ekonomik olarak uygun olacak mı? Sanırım göreceğiz.

Düzenleme: Cevabımı biraz genişleterek, şimdi otobüsten uzak olduğumu.

Dikkatli bir vaka çalışması Intel Larrabee projesidir. Yazılımda grafik yapabilen paralel bir işlem aracı olarak başladı; özel bir grafik donanımı yoktu. Projede çalışan biriyle konuştum ve başarısız olmasının ve iptal edilmesinin (korkunç iç politikaların yanı sıra) söylemesinin önemli bir nedeni derleyicinin bunun için iyi bir kod üretememesiydi. Elbette çalışma kodu üretti, ancak ürününüzün tüm noktası maksimum performanssa, en uygun kodu üreten bir derleyiciniz olsa iyi olur. Bu, yeni cihazınızın büyük bir sorun olması için hem donanımda hem de yazılımda derin bir uzmanlık eksikliği olduğu konusundaki önceki yorumuma geri dönüyor.

Larrabee tasarımının bazı unsurları onu Xeon Phi / Intel MIC'e dönüştürdü. Bu ürün aslında piyasaya sürdü. Tamamen bilimsel ve diğer HPC tipi hesaplamaları paralelleştirmeye odaklandı. Şimdi ticari bir başarısızlık gibi görünüyor. Intel'de konuştuğum başka bir kişi, GPU'larla rekabetçi fiyat / performans olmadıklarını ima etti.

İnsanlar FPGA'ların mantık sentezini derleyicilere entegre etmeye çalıştığından FPGA hızlandırıcılarınız için otomatik olarak kod oluşturabilirsiniz. O kadar iyi çalışmıyorlar.

Hızlandırıcılar için gerçekten verimli topraklar gibi görünen bir yer veya GPU'lara diğer alternatifler buluttur. Google, Amazon ve Microsoft gibi bu büyük şirketlerde var olan ölçek ekonomisi, alternatif hesaplama programlarına yatırım yapmaya değer. Birisi zaten Google'ın tensör işleme birimlerinden bahsetti. Microsoft, Bing ve Azure altyapısı boyunca FPGA'lara ve diğer özelliklere sahiptir. Amazon ile aynı hikaye. Ölçeğin zamana, paraya ve mühendis gözyaşlarına yatırım yapıp yapamayacağı kesinlikle anlamlıdır.

Özetle, uzmanlık birçok başka şeye benzerdir (ekonomi, platformun olgunluğu, mühendislik uzmanlığı, vb.). Uzmanlık performansınızı önemli ölçüde artırabilir, ancak cihazınızın uygulanabilirliğini daraltır. Cevabım birçok olumsuzluğa odaklandı, ancak uzmanlaşmanın da bir çok faydası var. Kesinlikle takip edilmeli ve araştırılmalıdır ve birçok grubun dediği gibi oldukça agresif bir şekilde takip ettiğini belirtmiştim.

Üzgünüz, tekrar düzenleyin: İlk öncülünüzün yanlış olduğunu düşünüyorum. Daha az bilgi işlem gücü kaynağı aramak için bir durum ve daha fazla bir fırsat tanıyan bir insan vakası olduğuna inanıyorum. Grafik programlama çok lineer cebir ağırdır ve GPU, matris-çarpma, vektör işlemleri vb. Gibi ortak işlemleri etkin bir şekilde gerçekleştirmek üzere tasarlanmıştır. Bilimsel hesaplamada da çok yaygın olan işlemler.

GPU'lara olan ilgi, insanların Intel / HP EPIC projesi tarafından verilen sözlerin çok fazla abartıldığının farkına varmaya başladığı gibi başladı (90'lı yılların başında). Derleyici paralelleştirmesi için genel bir çözüm yoktu. Yani "nerede daha fazla işlem gücü buluruz, oh GPU'yu deneyebiliriz" demek yerine, "daha fazla olduğunu düşünüyorum" paralel hesaplamalarda iyi olan bir şeyimiz var, bunu daha genel programlanabilir yapabiliriz ". Katılan kişilerin çoğu, Cray veya Tera makinelerinde kullanabilecekleri Fortran koduna paralel olan zaten zaten olan bir bilgisayar uzmanı topluluğuydu (Tera MTA'da 128 donanım ipliği vardı). Belki her iki yönden de hareket vardı, ancak GPGPU'nun kökenlerinden yalnızca bu yönden bahsetmiştim.


"Hızlandırıcılar" ile özel yapım donanıma mı yoksa düşük güçlü bilgi işlem düğümlerinin süper kümelerine mi bakıyorsunuz? Bazı örnek hızlandırıcı donanımlarına referans vererek detaylandırabilir misiniz.
manav mn

Üzgünüm, bağlamdan açıkça anladığımı sanıyordum. Hızlandırıcı, bir işlemci veya boşaltma kartı için sadece bir şemsiye terimdir. Kayan nokta başlangıçta bir işlemciydi, ana CPU değil, bir hızlandırıcı olarak düşünülecekti. GPU'lar, DSP'ler, Xeon Phi, FPGA'lar PCIe karttayken veya benzer bir şey yaparken, bahsettiğim analog diferansiyel denklem meselesi, sanallaştırmaya yardımcı olan cihazlar var, sinir ağı hızlandırıcılarında güncel araştırmalar var. Bunların hepsi hızlandırıcı örnekleri.
NerdPirate

4

görüntü tanımını buraya girin

Bir ASIC (özel silikon) çok hızlıdır, ancak tasarımı ve üretimi çok pahalıdır. ASIC'in amaca özel olduğu ve CPU'nun bilgisayarların "programlanabilmesine" izin veren bir yaklaşım olduğu için hesaplama görevleri yazılım tarafından gerçekleştirilebilirdi. İlk CPU'lar, alandaki yongayı programlayarak insanlara ASIC'in gücünden büyük maliyet olmadan yararlanabilme olanağı sağladı. Bu yaklaşım, şu anda kullanmakta olduğunuz (çok) hızlı bilgisayara yol açtığı için çok başarılı oldu.

Peki neden GPU'lar?

90'lı yılların ortalarında, 3DFX, 3B oluşturma görevlerinin özel bir ASIC'in bir CPU'dan daha iyi performans göstereceği şekilde özel olduğunu fark etti. 3B oluşturma görevlerini CPU'dan bu "GPU" olarak adlandırdıkları bu işlemciye yükleyen bir bilgisayar işlemcisi yarattılar. Rekabet ve pazar talebi, bu alandaki yenilikçiliği GPU'ların CPU'lardan çok daha hızlı hesaplamaları gerçekleştirdiği bir noktaya getirdi; bu nedenle, "GPU'yu neden CPU'larımı sıkıştırmak için kullanamıyorum?" Sorusu ortaya çıktı. GPU üreticileri bir talep ve daha fazla para kazanmanın bir yolunu gördüler, bu nedenle geliştiricilerin donanımlarını kullanmasına izin vermek için platformlarını değiştirmeye başladılar. Ancak donanım donanımı o kadar özeldi ki, GPU'dan ne yapmasını isteyebileceğiniz konusunda kısıtlamalar vardı. Neden burada olduğuna dair spesifikasyonlara girmeyeceğim.

Peki neden daha fazla amaca özgü silikon yoktu? Neden SADECE grafikler?

İki sebep: 1) Fiyat. GPU'lar iyi bir piyasaya sahipti ve haklı çıkartabiliyorlardı, ancak o zaman bile çok büyük bir riskti. 3DFX'in kar elde edip edemeyeceğini kimse bilmiyordu (ortaya çıktı, gerçekte yapamadılar ve geri çekildiler). Şimdi bile, GPU pazarının büyüklüğüyle, gerçekten sadece 3 rakip var. 2) CPU'lar aslında talimat uzantılarıyla “özel silikon” ihtiyacını karşılıyorlardı. MMX'i tekrar düşünün - bu aslında Intel'in 3DFX hız kazanırken CPU'daki grafikleri hızlandırma çabasıydı. O zamandan beri, x86 komut seti, tüm bu özel uzantılarla oldukça büyüktü. Bu uzantıların birçoğu o zamanlar anlamlıydı (MMX gibi), ancak şu anda işlemcide büyük ölçüde sadece ağırlık kaldı. Onları kaldıramazsınız, çünkü o zaman varolan yazılımı bozar. O' s aslında ARM - ARM için satış noktalarından biri soyulmuş bir talimat setidir. Çok fazla komut uzantısı yoktur, ancak bu silikonu daha küçük ve daha ucuz hale getirir.

Özel silikon maliyetini düşürebilirseniz, çok para kazanabileceğiniz gibi görünüyor. Bunun üzerinde çalışan kimse yok mu?

Bilgisayarın ilk günlerinden bu yana FPGA - alan programlanabilir kapı dizisi adı verilen bir teknoloji var. Temelde yazılımı kullanarak "sahada" tasarlayabileceğiniz bir mikroçip. Çok havalı bir teknolojidir, ancak çipin programlanabilir hale getirilmesi için gereken tüm yapı LOT'a kadar bir silikon alıyor ve yongaların çok daha düşük saat hızlarında çalışmasına neden oluyor. Çip üzerinde yeterince silikon varsa VE görevi etkili bir şekilde paralelleştirebiliyorsa FPGA'lar CPU'lardan daha hızlı CAN'lar. Fakat onlara ne kadar mantık koyabileceğiniz konusunda sınırlılar. En pahalı FPGA'lar dışındakilerin tümü erken bitcoin madenciliği için GPU'lardan daha yavaştı, ancak ASIC emsalleri GPU madenciliğinin karlılığını etkili bir şekilde sonlandırdı. Diğer kripto para birimleri, paralelleştirilemeyen özel algoritmalar kullanmıştır, bu yüzden FPGA ve ASIC '

FPGA'nın ana sınırlayıcısı silikon ölçüsüdür - çipe ne kadar mantık sığdırabilirim? İkincisi saat hızıdır, çünkü bir FPGA'da sıcak noktalar, sızıntı ve çapraz konuşma gibi şeyleri optimize etmek zordur. Daha yeni üretim yöntemleri bu sorunları en aza indirdi ve Intel, bir sunucudaki ortak işlemci olarak "özel silikon" un faydalarından yararlanmak için mühendislerin kullanabileceği bir FPGA sağlamak için Altera ile birlikte çalıştı . Yani bir anlamda geliyor.

FPGA'lar CPU ve GPU'ların yerine geçecek mi?

Muhtemelen yakında hiçbir zaman değil. En yeni CPU'lar ve GPU'lar MASSIVE ve termal ve elektriksel performans için yüksek oranda ayarlanmış silikon. FPGA'ları özel bir ASIC'le aynı şekilde optimize edemezsiniz. Çığır açan bir teknolojiyi engelleyen CPU, muhtemelen FPGA ve GPU işlemcileri ile bilgisayarınızın özü olarak kalacaktır.


1
Bu uzantıların birçoğu o zamanlar anlamlıydı (MMX gibi), ancak şu anda işlemcide büyük ölçüde sadece ağırlık kaldı. 3B oluşturma, SIMD için tek kullanım durumundan uzaktır . MMX'in "ağırlığının" çoğu, yürütme birimleridir ve bunlar SSE2, AVX2 ve AVX512 gibi daha geniş vektörlerle paylaşılabilir. Bunlar, CPU'larda yüksek kaliteli video kodlama ve yüksek performanslı bilgi işlem dahil olmak üzere pek çok başka görev için yoğun olarak kullanılmaktadır. Ama aynı zamanda memchr, strlen ve daha pek çok şey için kütüphane uygulamaları. örneğin , bir seferde 1'den fazla eleman dizisini filtrelemek
Peter Cordes

3

Yüksek hızlı bilgisayar kullanımı için Nitekim orada uzman tahta, örneğin Xilinx bir sahip listesi kendi FPGA kullanılarak 178 PCI-E kurullarının ve bu kurulların yaklaşık üçte bir veya birkaç güçlü FPGA yongaları ve içi dolu "sayı crunchers" dir kart DDR hafızası. Yüksek performanslı bilgi işlem görevlerini hedefleyen yüksek performanslı DSP panoları ( örnek ) vardır.

GPU kurullarının popülaritesi, daha geniş bir müşteri grubundaki amaçlarından kaynaklanıyor sanırım. Nvidia CUDA ile oynamak için özel bir donanıma yatırım yapmak zorunda değilsiniz, bu yüzden özel bir donanım gerektiren bir işiniz olduğunda, Nvidia GPU'ların bunları nasıl programlayacağınızı bilmeniz konusunda rekabetçi bir üstünlüğü olacak.


2

Yüksek performanslı hesaplamanın nasıl tanımlanacağına bağlı olarak sorunuzun cevabını düşünüyorum.

Genel olarak, yüksek performanslı hesaplama, hesaplama süresiyle ilgilidir. Bu durumda, yüksek performanslı bilgi işlem kümesi bağlantısını paylaşmayı seviyorum .

Bağlantı GPU’nun kullanım nedeni belirtildi; Grafik hesaplamaların (veya onların GPU'larının) ızgara hesaplamaları için hesaplamaları yapmak, CPU'ları kullanmaktan daha az kesin olmasına rağmen çok daha ekonomiktir.


2
Üst düzey GPGPU'lar double, yalnızca tek bitlik 32 bitlik değil 64 bitlik hassasiyet için iyi verime sahiptir float. (Bazı düzenli GPU'lar için HW eksik double). Ana satıcıların tümü IEEE FP matematiğini destekliyor (sanırım yurtdışında bile). Bu nedenle , performans için hassas işlem yapmak istemiyorsanız , örneğin, bazı donanımlarda (ve bellek bant genişliğinin yarısı kadar) daha iyi verime sahip olan 16-bit yarı-hassas FP ile işlem yapmak istemiyorsanız , kesin bir kayıp yoktur . CPU'lardaki yüksek performanslı kod, floatSIMD vektörü başına iki kat daha fazla öğe ve bellek bant genişliğinin yarısını almak için genellikle 32 bit kullanır .
Peter Cordes,

1
@PeterCordes Yaklaşık hesaplamada, sekiz bitlik kayan noktaya bile inen bir çalışma gördüm, ancak çoğu GPU donanımda bunu desteklediğini sanmıyorum.
JAB
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.