3
C++でスレッドを作成しようとしています。 forループ内にスレッドを作成しても並列性を意味するわけではありません。しかし、私は以下のロジックのコード部分を並列化したい。C++でのパフォーマンスの向上
for(int i = 0; i < 100000; i++) // for each instance in the dataset
{
for(int j = 0; j < 100000; j++) // target each other instance
{
if(i == j) continue;
float distance = 0;
for(int k = 0; k < 2000; k++)
{
float a = dataset->get_instance(i)->get(k)->operator float();
float b = dataset->get_instance(j)->get(k)->operator float();
float diff = a - b
distance += diff * diff;
}
distance = distance + 10;
}
}
上記のコードには並列性がありますか?あるいは、スレッドの類似した並列化を理解するためのコード例を私に提供する人もいます。
まず、ハードウェアコアの数を調べる必要があります。次に、最も効果的な方法で作業を測定し、分割する必要があります。だから、基本的に成功するまで試してみてください。 – Incomputable
このコードは何もしていません。 'distance'は' for(j) 'ループの中で宣言されるので、その値は外部では不明です。 – kfsone
@kfsone:私は距離の使い方を更新しました。あなたは親切にポインタを提供したり、結果としてコードロジックを教えてくれますか? –