ループは簡単ですが、私はちょうど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]);
}
私はこれをやりたい理由、STLのようなアルゴリズムを使用して、GPU上での計算を行うだろうBoost.Computeライブラリ、ためている(STD ::変換、のstd :: for_eachなど)。
行列演算を使用してアルゴリズムを書き直すことができるようです。 –
私は、ユーザーが 'Boost.Compute'に任意のカーネルを書くことを許可するほうが良いと思います。例えば、私がここに記述した['TaskGraph'](http://ideone.com/qQ4Pvo)メソッド(http://boost.2283326.n4.nabble.com/compute-GPGPU-Library-Request-For -Feedback-tp4643691p4643927.html)。 –