Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Iakov
0 / 0 / 0
Регистрация: 06.07.2015
Сообщений: 8
#1

Безопасная работа с памятью в OpenMP С++ - C++

13.07.2015, 17:39. Просмотров 157. Ответов 0
Метки нет (Все метки)

Добрый день.
Вопрос связан с тем как можно добавлять элементы к общему динамическому массиву в параллельных потоках.
По сути задачи приходится к созданному многомерному vector добавлять новые элементы.
Пусть есть, например, vector<vector<int>> A. Первая размерность уже проинициализрована полностью (например, 0-N-1). Есть гарантия, что внутри потоков происходит обращение к собственному набору индексов первой размерности. То есть, разные потоки не могут обращаться к одному и тому же первому индексу.
Однако заранее определить размерность второго индекса для каждого первого индекса невозможно (вычисляется внутри цикла по первому индексу).
Можно конечно взять максимально возможную оценку, но тогда никакой памяти не хватит (Сотни гигабайт). В результате пользуюсь операторами типа A[i].push_back(k) в каждый момент, когда необходимо добавить элемент (В реальности массив четырехмерный, причем основной добавляемый элемент - Structure)
Тем не менее необходимо распараллеливание (счет идет более суток).
Попробовал использовать простейшие варианты из OpenMP типа #pragma omp parallel for, однако во время работы выдает всякие ошибки так или иначе связанные с памятью.
Может ли кто-нибудь подсказать, как все-таки добавлять память внутри потоков, при этом получая выигрыш во времени счета при распараллеливании.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2015, 17:39     Безопасная работа с памятью в OpenMP С++
Посмотрите здесь:

Работа с OpenMP. Распараллеливание цикла for - C++
Доброго времени суток товарищи. При работе с OpenMP возник следующий вопрос Почему код int i; int Mass={0}; ...

работа с памятью - C++
Доброго времени суток! У меня возникло затруднение - нужно реализовать на языке Си программу,демонстрирующую распределение памяти таким...

Работа с памятью - C++
Всем привет! Не могу разобраться, как написать код программы, которая моделирует механизм виртуальной памяти. Кто сможет реализовать хотя...

Работа с памятью - C++
Нужно ривести пример использования операторов new и delete для выделения памяти под двумерный массив и освобождения памяти двумерного...

Работа с памятью - C++
Форумчане, доброго времени суток. Заранее извиняюсь за нубские вопросы, но должен разобраться в теме. Суть такова: написал class...

работа с памятью - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Работа с памятью в С++ - C++
Здравствуйте. Если я правильно понимаю, то при запуске программы, программе выделяется определенное кол-во памями, которое оно может...

Работа с памятью - C++
Всем доброго времени суток. Почитав данный форум и проч. пришёл к выводу, что мой проект на C# нереален в виду бестолковой работы с...

Работа с памятью - C++
Может кто хорошо понимает механизм выделения и освобождения памяти объяснить его, а то я в конец запутался с ним, вот помогал одному...

Работа с памятью - C++
Добрый день всем. Я только начал изучение C#(раньше работал c: C++ маленько -т.е. общее представление о нем имею) и у меня вопрос, можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru