18/07/30 07:07:24.21 wOzVCFyH.net BE:138871639-2BP(0)
URLリンク(img.5ch.net)
Page 31
メモリアクセスの同期(2/2)
? 以下のようにメモリアクセス前に同期を入れることにより、メモリアクセス性能が向上する場合がある
ただし同期自体のペナルティがあるため、利用する/しない、あるいは同期レベルの選択に注意が必要
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) {
sync_L2();
float a_ = a[pos];
float b_ = b[pos];
chgthread();
c[pos] = a_ + b_;
}
flush();
}
memory request
t0 → ↑
t1 → ↑
… sync
t7 → ↑