私は各ポイントと他のすべてのポイント間の距離を計算し、私は100000ポイントを持っているので、私のマトリックスサイズは100000×100000になる距離行列を実装しています。私はvector<vector<double> > dist
を使って実装しました。しかし、この大きなデータサイズの場合、メモリエラーが発生します。以下は私のコードです、そして、どんな助けも本当に感謝されるでしょう。ベクトルのベクトルとベクトルの
vector<vector<double> > dist(dat.size()) vector<double>(dat.size()));
size_t p,j;
ptrdiff_t i;
#pragma omp parallel for private(p,j,i) default(shared)
for(p=0;p<dat.size();++p)
{
// #pragma omp parallel for private(j,i) default(shared)
for (j = p + 1; j < dat.size(); ++j)
{
double ecl = 0.0;
for (i = 0; i < c; ++i)
{
ecl += (dat[p][i] - dat[j][i]) * (dat[p][i] - dat[j][i]);
}
ecl = sqrt(ecl);
dist[p][j] = ecl;
dist[j][p] = ecl;
}
}
8バイトの100億エントリは、このデータ構造に80GBのメモリが必要であることを意味します。 –