18/07/30 07:05:33.12 wOzVCFyH.net BE:138871639-2BP(0)
URLリンク(img.5ch.net)
Page 28
スレッドの切り替え (2/3)
? 以下の実装では、ループの中にスレッドが切り替わる命令が無いので
現在実行中の各スレッドが flushにたどり着くまで裏スレッドは処理されない。
? アクセスのアドレスが不連続になり、キャッシュ効率が悪い
? メモリアクセスのレイテンシーを隠蔽できない
void pzc_Add(float* a, float* b, float* c, int count)
{
int tid = get_tid(); // thread ID (0 - 7)
int pid = get_pid(); // PE ID
int offset = pid * get_maxtid() + tid;
int step = get_maxtid() * get_maxpid();
for(int pos = offset; pos < count; pos += step) {
c[pos] = a[pos] + b[pos];
}
flush();
}
memory
↑ request ↓
t0 stall flush
t4