【发布时间】:2015-04-28 06:28:42
【问题描述】:
我正在使用 TI 的 Keystone II,它具有 ARM 作为主机和 8 个加速器 DSP 内核。这些 DSP 内核不相互通信,因为它们没有任何共享内存。
我遇到了一个奇怪的问题,我无法将其重写到我正在计算累积频率的“cum”数组中。我只能阅读我第一次写给它的任何内容。之后的写入未注册。 有解决这个问题的办法吗?
该设备具有统一内存架构。 'cum' 和 'frequency' 也属于 'CL_MEM_READ_WRITE' 类型。
这段代码 sn-p 在 DSP 内核上运行
...
//upscan
for(i=0; i < 32; i++)
{
if(pid<4)
{
localvar1 = frequency[(i*8)+(2*pid)];
localvar2 = frequency[(i*8)+(2*pid)+1];
cum[(i*8)+(2*pid)+1] = localvar1 + localvar2;
}
}
for(i=0; i < 32; i++)
{
if(pid<2)
{
localvar1 = cum[(i*8)+(4*pid)+3];
localvar2 = cum[(i*8)+(4*pid)+1];
cum[(i*8)+(4*pid)+3] = localvar1 + localvar2;
}
}
for(i=0; i < 32; i++)
{
if(pid<1)
{
localvar1 = cum[(i*8)+(pid)+7];
localvar2 = cum[(i*8)+(pid)+3];
cum[(i*8)+(pid)+7] = localvar1 + localvar2;
}
}
...
【问题讨论】:
-
如果你写的是累积频率,它不应该看起来像
cum[(i*8)+(2*pid)+1] += localvar1 + localvar2; -
@Christian
localvar1是元素本身。所以我已经在阅读它以获得累积总和。
标签: opencl