0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

conway's game of lifeのアルゴリズムのメモ

Last updated at Posted at 2020-05-13

目的

conway's game of lifeのアルゴリズムを知り、並列分散処理を勉強するためのモデルとして適している理由を考える。

アルゴリズム

b3/s23というルールで動いている。
bはbornでsはsurvivesです。

1が生、0が死になってます。

b3/s23

b3

自分の周りのcellを見て、3つ生きてるやつがいると新しいやつが生まれる。

s23

自分の周りのcellを見て2つか3つ行きている場合、生き残ります。また、ここで2未満4以上の場合は死にます。

conway's game of lifeの以下のコードがこのルールに該当する。


// cell dies
  if(count < 2 || count > 3)
    M[threadId] = 0;

// cell stays the same
  if(count == 2)
    M[threadId] = C[threadId];

// cell either stays alive, or is born
  if(count == 3)
    M[threadId] = 1;

自分の周りの定義

自分の周りの定義が「conway's game of life」では以下のコードのようになっている。

このコードでは自分の周りの生きているcellを数えてカウントに入れている。
このカウントをb3/s23で示した、if文に投げる。


  count = C[j*n_x+i_left] + C[j_down*n_x+i]
    + C[j*n_x+i_right] + C[j_up*n_x+i] + C[j_up*n_x+i_left]
    + C[j_down*n_x+i_right] + C[j_down*n_x+i_left]
    + C[j_up*n_x+i_right];

各cellが独立して動いていて、周りのcellの状態を見るため各cellが同期している必要があるため並列分散処理の勉強のモデルとして適しているんだと感じました。

やること

自分の周りに関する部分のソースを読む。
pycudaがユーザのコードをどう処理しているか調べる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?