Сегфолт кода при парреллинге BFS с использованием OMPC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Сегфолт кода при парреллинге BFS с использованием OMP

Сообщение Anonymous »

Я пытаюсь распараллелить модифицированную BFS, но получается ошибка. Моя идея состоит в том, что это ошибка из-за раздела else if, поскольку некоторые потоки могут нежелательно обращаться к нему. Я не могу придумать другого способа это исправить. Может ли кто-нибудь предложить какие-либо изменения?
Это источник оригинального BFS:
https://p.ip.fi/LTLr
Это еще одна ссылка:
https://github.com/cmu15418/assignment3 ... fs/bfs.cpp

void make_bfs_step(int u, int n, vector &frontier, vector &new_frontier, vector &distances, vvi &backedge, vvi &adj, vvi &tree)
{
// vector frontier, new_frontier;
int local_count = 0;
int count = frontier.size();
#pragma omp parallel num_threads(NUM_THREADS)
// shared(new_frontier, par, vis, tree, frontier)
{
vector local_frontier;
int id = omp_get_thread_num();
int nthrds = omp_get_num_threads();
for (int i = id; i < frontier.size(); i += nthrds)
{
int node = frontier;
// std::cout

Подробнее здесь: https://stackoverflow.com/questions/784 ... -using-omp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»