Günümüzün büyük paralel işlem birimleri hücresel otomatları verimli bir şekilde çalıştırabilir mi?


20

Günümüzde grafik kartlarında sağlanan büyük ölçüde paralel hesaplama birimlerinin ( örneğin OpenCL'de programlanabilir olan ) 1D hücresel otomatları (veya belki de 2B hücresel otomatları?) Verimli bir şekilde simüle etmek için yeterince iyi olup olmadığını merak ediyorum .

Eğer çipin hafızasına uygun sonlu ızgarayı seçersek, bu ızgarada tanımlanan bir hücresel otomasyonun bir geçişinin (yarı) sabit zamanda hesaplanmasını bekleyebilir miyiz?

2D hücresel otomata, yongaların farklı kısımları arasındaki iletişim için 1D otomatadan daha fazla bant genişliği gerektireceğini varsayıyorum.

FPGA programlama veya özel yongalar için de aynı soruya ilgi duyarım.


Belki aynı hücresel otomatiği her zamanki gibi taklit eden bir "eşdeğer" çip ile karşılaştırmak daha uygun olacaktır . (hücreleri her zamanki Von
Newmann

İyi soru. GPU'larda ne tür algoritmaların iyi çalıştığı hakkında hiçbir fikrim yok, bu yüzden cevapları dört gözle bekliyorum.
Raphael

1
FPGA'lara rağmen exp probları exp problarıdır. Belki burada ve burada ilişkilidir .

Yanıtlar:


7

Mükemmel soru. Cevabın evet olduğuna inanıyorum.

Hücresel bir otomatı geliştirmek, esasen bir şablon hesaplaması yapmaya eşdeğerdir. Bazı 1D, 2D veya 3D ızgaralarda, noktaların (veya hücrelerin) ardışık değerleri, nokta komşusunun son değerine göre hesaplanır. Basit bir 1D CA'da, bu mahalle hücre ve sol ve sağdaki iki hücre olabilir. GPU'larda gerçekleştirilen şablon hesaplamaların birçok örneği vardır; ORNL'nin OpenCL / CUDA için SHOC karşılaştırma paketi, örneğin bir 2D şablon örneği içerir.

Temel fikir, her bir iş parçacığının mahallenin yerel bir kopyasını birkaç nokta için alması ve daha sonra o mahalle tarafından belirlenen puanlar için sonraki değerleri hesaplamasıdır. Hafıza hiyerarşisini, örneğin CUDA (kayıtlar, paylaşılan, sabit, doku ve global bellekler) ve SIMT işleme modelinde (örneğin, aşırı çözgü sapması olmadan uygun bir şekilde hesaplayarak) uygun şekilde kullanarak, iyi performans elde edilebilir.

Bir örnek verirsem bu cevap çok daha iyi olurdu, ama şu anda herhangi bir kod yazmak için çok meşgulüm ... Ama teorik olarak, GPU'larda CA'ları şablondan sonra modelleyerek verimli bir şekilde simüle etmenin mümkün olacağını düşünüyorum. hesaplamalar. Yine de GPU'lar için iyi bir şablon hesaplaması yazmak çok önemlidir.


5

Ne yaparsanız yapın, bir hücresel otomat için bir sonraki durumu hesaplamak, otomatta hücreler olduğundan daha fazla hesaplama ister. Böylece sabit bir zaman elde etmek için, hücreler kadar bilgi işlem çekirdeğine ihtiyacınız vardır.

GPU'da bunların sayısı şu anda en az birkaç bin iken, bir sonraki durumun hesaplanması o kadar basittir ki, sonucun IO'ya bağlı olmasını bekliyorum, yani sadece gerekli zamana çok iyi bir şekilde veri hareketi gerekli (ve iyi bir yaklaşım değilse, ya uygulamanın verimsiz olması ya da mimarinin uygun olmaması, ancak bu çok şaşırtıcı olacaktır).

FPGA için soru daha zordur ve muhtemelen mevcut bellek ve hesaplama birimlerinin karışımına bağlı olacaktır. Çok uzak değilsem, tüm birimleri meşgul etmek için yeterli belleğiniz olmayacak ve harici belleğe güveniyorsanız, GPU ile aynı koltuğunuzda, bellek bant genişliği sınırlayıcı faktör olacak ve ben Sonuç GPU'ya göre bir avantaj olmadığı için şaşıracaksınız. (FPGA ile çalışırken, yıllar önce, şimdi doğru bir karışımla FPGA modelleri olabileceğini unutmayın).

ASIC daha fazla esneklik sunar. Kolayca sistolik gibi bir uygulamaya sahip olabilirsiniz (ancak çift yönlü veri akışı ile, bazı sistolik genellikle tek yönlü veri akışı ile sınırlıdır), her fiziksel hücre bir mantıksaldır: bir miktar bellek ve bir sonraki durumunu hesaplamak için gerekli mantık ve düzenlenir böylece fiziksel komşusu mantıklıdır. Belli ki sabit zaman dilimindesiniz. Hangi sert makrolara sahip olduğunuza bağlı olarak, biraz daha az belirgin olmak ve birkaç mantıksal olanı yeniden gruplayan fiziksel hücrelere sahip olmak daha iyi olabilir. Amaç, bir çipte yapılanı en üst düzeye çıkarmak, diğer bir deyişle, iletişim ihtiyaçlarınız hücre sayısıyla orantılı olduğu anda çipin dışıyla iletişimi en aza indirgemek, bant genişliği sınırlı olacaktır. Evet, bu, her adım için tüm hücrelere bakmanız gerektiğinde, muhtemelen GPU'dan çok daha iyi değilsin. (Tam özel, yalnızca daha iyi entegrasyon, yani yonga başına daha fazla hücre sağlar).

Özet: - tüm ara durumlara bakmak istiyorsanız, GPU en etkili yaklaşımdır - eğer yapmazsanız, daha iyi bir şey elde etmek için ASIC'yi haklı çıkarmak için hacme ihtiyacınız vardır, FPGA muhtemelen eğer yeterli avantaj sunmazsa herhangi biri.


2

Günümüzde grafik kartlarında sağlanan büyük ölçüde paralel hesaplama birimlerinin 1D hücresel otomatları (veya belki de 2B hücresel otomatları?) Verimli bir şekilde simüle edecek kadar iyi olup olmadığını merak ediyorum.

çok genel olarak, evet GPU bilgi işlem, standart donanımda herkes için en iyi alternatiftir.

O(1)nPnPO(1)

FPGA ve ASIC tarafında, hepsi komşuları tarafından birbirine bağlanmış devletlerle bir mantık kapıları ızgarası olarak fiziksel bir CA oluşturmaya yönelik araştırmalar olduğunu biliyorum; yani sistolik diziler . Fikir artık küresel bir bellek kullanmak değil, bunun yerine ızgaradaki her düğümün durumlarına güvenmek olacaktır. O zamandan beri bu tür bir makine devrim yaratacaktır, o zamandan beri CA'yı simüle eden bir bilgisayar hakkında konuşmayı bırakabilir ve bilgisayar olarak çalışan bir CA hakkında konuşmaya başlayabiliriz (bazı CA'lar tamamlanıyor).

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.