【发布时间】:2017-04-27 16:19:41
【问题描述】:
我正在更新一个直方图,该直方图使用一个简单的整数数组表示,其中包含 16 个 bin,如下所示。
const int binSize = 4096;
int histogram[16];
unsigned short inData[1024]; // This is my input data. Short is 16 bits
for(int i = 0; i < 1024; ++i)
{
++histogram[inData[i] / binSize];
}
我非常频繁地运行这个操作,所以这成为了一个瓶颈,因为这个循环没有被 DSP 并行化,因为多个 bin 不能同时更新。我该如何优化它?
我在 TI DSP C6000 系列上运行此代码。
【问题讨论】:
-
它是C++,我也可以用纯c实现这个
-
如果你阅读的频率远低于你的写作频率,你可以为每个线程创建一个数组。
-
有 C,还有 C++。没有 C++ 就没有 C 之类的东西。悬而未决的问题是您是使用 C(
.c文件)还是 C++(.cpp文件)编写。 -
那么我所说的就成立了。您可以通过为每个 whatever 设置一个数组来并行写入数组。如果您的写作频率远高于阅读频率,这将有所帮助。
-
@Beginner 不需要“由不同线程创建”
标签: c++ optimization signal-processing