오늘날의 대규모 병렬 처리 장치가 셀룰러 오토마타를 효율적으로 실행할 수 있습니까?


20

요즘 그래픽 카드에서 제공되는 대규모 병렬 계산 단위 ( 예 : OpenCL 에서 프로그래밍 가능한 것 )가 1D 셀룰러 오토마타 (또는 2D 셀룰러 오토마타?)를 효율적으로 시뮬레이션하기에 충분한 지 궁금합니다.

우리가 칩의 메모리에 맞는 유한 그리드를 선택한다면,이 그리드에 정의 된 셀룰러 오토 마톤의 한 번의 전이가 (일시) 일정한 시간 안에 계산 될 것으로 기대할 수 있습니까?

나는 2D 셀룰러 오토마타가 1D 오토마타보다 칩의 다른 부분들 사이의 통신을 위해 더 많은 대역폭을 필요로한다고 가정한다.

FPGA 프로그래밍이나 커스텀 칩의 경우에도 같은 질문에 관심이 있습니다.


아마도 같은 방식으로 같은 셀룰러 오토마타 를 시뮬레이션 하는 "동등한"칩과 비교하는 것이 더 적절할 것입니다. (보통 Von Newmann 모델에서 메모리에 셀 저장)
jmad

좋은 질문. GPU에서 어떤 종류의 알고리즘이 잘 작동하는지 전혀 모르므로 답을 기대하고 있습니다.
Raphael

1
FPGA에도 불구하고 exp probs는 exp probs입니다. 아마도 여기여기에 관련 되어있을 입니다.

답변:


7

훌륭한 질문입니다. 나는 대답이 그렇다고 믿는다.

셀룰러 오토 마톤을 진화시키는 것은 스텐실 계산을 수행하는 것과 본질적으로 동일합니다. 일부 1D, 2D 또는 3D 그리드에서 점 (또는 셀)의 연속적인 값은 점 부근의 마지막 값을 기준으로 계산됩니다. 간단한 1D CA에서이 이웃은 셀이고 왼쪽과 오른쪽의 두 셀일 수 있습니다. GPU에서 수행되는 스텐실 계산에는 많은 예가 있습니다. 예를 들어 OpenCL / CUDA를위한 ORNL의 SHOC 벤치 마크 제품군에는 2D 스텐실 예제가 포함되어 있습니다.

기본 아이디어는 각 스레드가 여러 점에 대한 이웃의 로컬 사본을 얻은 다음 해당 이웃에 의해 결정된 점의 다음 값을 계산하는 것입니다. CUDA (레지스터, 공유, 상수, 텍스처 및 글로벌 메모리)의 메모리 계층과 SIMT 처리 모델 (예를 들어, 과도한 워프 발산을 유발하지 않고 전이 함수를 적절하게 계산함으로써)의 메모리 계층을 적절하게 사용함으로써, 우수한 성능이 달성 될 수있다.

이 대답은 예제를 제시하면 훨씬 나을 것이지만 지금은 코드를 작성하기에는 너무 바쁩니다 ... 그러나 이론적으로는 스텐실 후에 모델링하여 GPU에서 CA를 효율적으로 시뮬레이션하는 것이 가능해야한다고 생각합니다 계산. GPU에 대한 좋은 스텐실 계산을 작성하는 데 많은 고려 사항이 있습니다.


5

무엇을 하든지, 셀룰러 오토 마톤의 다음 상태를 계산하려면 오토 마톤에 셀이있는 것보다 많은 계산이 필요합니다. 따라서 일정한 시간을 얻으려면 셀 수만큼 많은 컴퓨팅 코어가 필요합니다.

GPU에서 이들의 수는 현재 최대 수천입니다. 다음 상태의 계산은 너무 간단하여 결과가 IO 바운드 될 것으로 기대합니다. 즉, 데이터 이동이 필요합니다 (근사치가 좋지 않으면 구현에 비 효율성이 있거나 아키텍처가 적합하지 않지만 매우 놀라운 것입니다).

FPGA의 경우 문제는 더 어려우며 사용 가능한 메모리와 계산 단위의 혼합에 따라 달라질 수 있습니다. 너무 멀지 않은 경우 모든 장치를 바쁘게 유지할 메모리가 충분하지 않으며 외부 메모리에 의존하는 경우 GPU와 같은 자리에 있고 메모리 대역폭이 제한 요소가되며 그렇지 않습니다. GPU보다 이점이 없다는 결론에 놀라십시오. (저는 FPGA로 작업했지만 몇 년 전에는 올바른 혼합을 갖춘 FPGA 모델이있을 수 있습니다).

ASIC은 더 많은 유연성을 제공합니다. 당신은 쉽게 같은 수축기 같은 구현을 가질 수 있습니다 (그러나 양방향 데이터 흐름, 일부 수축기는 일반적으로 단방향 데이터 흐름으로 제한됩니다), 각 물리적 셀은 하나의 논리적 인 것입니다 : 메모리의 비트와 다음 상태를 계산하는 데 필요한 논리는 다음 상태로 배치됩니다 물리적 인 이웃이되도록 논리적입니다. 당신은 분명히 일정한 시간 영역에 있습니다. 어떤 하드 매크로가 있는지에 따라 약간 덜 명확하고 여러 개의 논리적 인 매크로를 다시 그룹화하는 물리적 셀을 갖는 것이 좋습니다. 목표는 한 칩에서 수행되는 작업을 최대화하는 것, 즉 통신 요구가 셀 수에 비례하자마자 칩 외부와의 통신을 최소화하는 것이므로 대역폭이 제한됩니다. 예, 즉, 각 단계의 모든 셀을 봐야하는 경우, GPU보다 훨씬 나을 수도 있습니다. (풀 커스텀은 더 나은 통합, 즉 칩당 더 많은 셀을 제공 할 것입니다).

요약 :-모든 중간 상태를보고 싶다면 GPU가 가장 효과적인 접근 방법입니다. 그렇지 않으면 ASIC을 더 나은 것으로 정당화하기 위해 볼륨이 필요합니다. 아마도 FPGA는 충분한 이점을 제공하지 않을 것입니다 가지고있다.


2

요즘 그래픽 카드에 제공되는 대규모 병렬 계산 단위가 1D 셀룰러 오토마타 (또는 2D 셀룰러 오토마타)를 효율적으로 시뮬레이션하기에 충분한 지 궁금합니다.

예, GPU 컴퓨팅은 모든 사람이 이용할 수있는 표준 하드웨어의 최상의 대안입니다.

영형(1)영형(1)

FPGA와 ASIC 측면에서, 나는 물리적 CA를 상태에 따라 논리 게이트 그리드로 구축하는 것에 대한 연구가 있다는 것을 알고 있습니다. 즉 수축기 배열 . 아이디어는 더 이상 전역 메모리를 사용하지 않고 그리드의 각 노드 상태에 의존하는 것입니다. 이 유형의 머신은 혁신적인데, 그 이후 우리는 CA를 시뮬레이션하는 컴퓨터에 대한 이야기를 중단하고 컴퓨터로 실행되는 CA에 대해 이야기하기 시작할 수 있습니다 (일부 CA는 튜링 완료).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.