170 похожих чатов

Всем сяп! Подскажите пж, не понимаю, что за бред. Есть функция

умножения матрицы (вектор векторов) на вектор, в котором при паралельном выполнении ловлю сегфолт. Если запускаю последовательно - все ок. В чем проблема? Выход из индексов не вижу

vector<double> matrix_vec_mul(vector<vector<double>> m, vector<double> b) {
vector<double> res;
res.reserve(b.size());

#pragma omp parallel for shared(b, m, res) default(none)
for (int i = 0; i < b.size(); ++i) {
double row_res = 0;
for (int j = 0; j < b.size(); ++j) {
row_res += m.at(i).at(j) * b.at(j);
}
res.insert(res.begin() + i, row_res);
}

return res;
}

13 ответов

21 просмотр

А ты точно хочешь копировать матрицы при вызове фукнции ?

Max-Azatian Автор вопроса

У тебя с постановкой задачи нет тут проблем ?

Так а сегфолт же поймал - можно сразу в дебагере глянуть, что там и как...

Max-Azatian Автор вопроса
Ilya Zviagin
Так а сегфолт же поймал - можно сразу в дебагере ...

В дебаг версии CLion запускаю - только out of bounds, а где - хрен пойми

res тут не может быть shared никак...

Ты тут будешь параллельно вставлять в res. Это недопустимо.

Max-Azatian Автор вопроса
Max-Azatian Автор вопроса
Ilya Zviagin
Где ?

Res, в конце Мы ж I-loop параллелим

res.insert(res.begin() + i, row_res); эту операцию нельзя делать параллельно

Max Azatian
Res, в конце Мы ж I-loop параллелим

#pragma omp parallel for shared(b, m, res) default(none) for (int i = 0; i < b.size(); ++i) { double row_res = 0; for (int j = 0; j < b.size(); ++j) { row_res += m.at(i).at(j) * b.at(j); } res.insert(res.begin() + i, row_res); } Вот это параллелицо

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта