0
並列プログラミングを使用して処理を高速化したいと考えています。並列呼び出しによる並列プログラミング
このクラスでは、メンバー関数mainFunにforループがあります。各反復で、subFunが呼び出されます。 parallel-invokeを使用して同時にCPUパワーを完全に利用するためにsubFunを呼び出す方法
ありがとうございます。次のように
コードは次のとおりです。
#include <vector>
#include <ppl.h>
using namespace std;
using namespace concurrency;
typedef vector<double> Vector;
typedef vector<Vector> Matrix;
class myClass {
private:
int num;
Matrix a;
public:
myClass(int n) :
num(n), a(num, Vector(2)) {}
Vector subFun(int n) {
Vector b(2, 0);
//body: to be implemented
return b;
}
void mainFun() {
for (int i = 0; i < num; i++) {
//parallel_invoke([&a[i]] { a[i] = subFun(i); });//<-- how to implement parallel_invoke?
}
}
};
int main() {
myClass A(1000);
return 0;
}
CPUの50%未満が使用されます。その結果、parallel_invokeを使用してより高速にしたいと考えています。 – Frankie
スレッド数がコア数と等しいスレッドプールがある場合は、 – dm03514
Iのようにコードを変更: parallel_invoke( \t \t \t \t \t \t \t [b] {[I] = subFun(I);} [I {\t \t \t \t \t \t \t、[b] + NUM/4] = subFun(NUM/4 + I);}、 \t \t \t \t \t \t \t [b] {[I + 2 * NUM/4] = subFun(NUM/4 + I);} 、 \t(i + 3 * num/4)= subFun(num/4 + i); } \t \t \t \t \t \t); forループを使用してコードをコンパクトにする方法はありますか? – Frankie