18/07/30 07:03:40.68 wOzVCFyH.net BE:138871639-2BP(0)
URLリンク(img.5ch.net)
Page 26
寄り道:CPUエミュレート
? このようにカーネルの中でループさせることは別のメリットもある。
? CPUで1スレッドでの動作として、この関数を同じように動作させることができる
→ソースを共有したデバッグに有効
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();
}
CPUでは
get_tid() … 常に0
get_pid() … 常に0
get_maxtid() … 1
get_maxpid() … 1