该循环足够简单,但我似乎无法绕过我的头使用STL算法给下面相同的嵌套循环。如何使用C++ STL算法重写嵌套循环?
const int a_size = 5; // input
const int c_size = 2; // output
const int b_size = a_size * c_size; // multipliers
std::vector<float> a(a_size);
std::vector<float> b(b_size);
std::vector<float> c(c_size);
// fill a and b with data
// this nested loop
for(int i = 0; i<c_size; i++) {
c[i] = 0.0;
for(int k = 0; k<a_size; k++) {
c[i] += (a[k] * b[i*a_size+k]);
}
c[i] = sigmoid(c[i]);
}
为什么我想之所以这样做,是为Boost.Compute库,这将使用STL类算法做对GPU计算(标准::变换的std :: for_each的,等)。
似乎可以重写你的算法使用矩阵运算。 –
我认为让用户在'Boost.Compute'中编写任意内核更好 - 它会更有用。例如通过['TaskGraph'](http://ideone.com/qQ4Pvo)方法,我描述[这里](http://boost.2283326.n4.nabble.com/compute-GPGPU-Library-Request-For反馈系统开发与-tp4643691p4643927.html)。 –