OpenMP并行函数调用对象迭代

时间:2018-11-08 11:13:42

标签: c++ boost parallel-processing openmp

我在并行处理for循环中的成员函数调用时遇到问题。我只想并行化对象的迭代,而不是调用的函数中向量的迭代。

这就是我所说的并行部分,其中particle_vector是对象的向量,而build_state_pylist()是成员函数。 state_vecstate_pylist都是对象成员。

#pragma omp parallel for
for (int i=0; i < n_sims; ++i) {
    particle_vector[i].build_state_pylist();
}

build_state_pylist()遍历state_vec的值,void Particle::build_state_pylist() { for (auto sim_iter = state_vec.begin(); sim_iter != state_vec.end(); ++sim_iter) { auto sim_vec = *sim_iter; for (auto vec_iter= sim_vec.begin(); vec_iter!= sim_vec.end(); ++vec_iter) { this->state_pylist.append(*vec_iter); } } 是向量的std :: vector。包含的值,并将它们附加到state_pylist,这是对象的成员boost :: python :: list。

double free or corruption (!prev)

}

由于每个循环迭代仅访问每个对象中包含的内存,因此我认为并行化此部分不会有问题。但是我得到这个错误:

(core dumped)

SENTRY_ENVIRONMENT

循环无需并行化即可工作。任何帮助将不胜感激!

0 个答案:

没有答案