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

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

Войти
Регистрация
Восстановить пароль
 
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
#1

Memcpy в OpenMP - C++

13.04.2014, 16:29. Просмотров 207. Ответов 0
Метки нет (Все метки)

Почему при копировании вектора в цикле через
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
vector<int> Mass(value);
value *= sizeof(int); //размер копируемой памяти
 
vector<vector<int>> t_Mass;
...
while (true) {
...
#pragma omp parallel for private(Mass, ...)
   for (...) {
      ...
      // Mass = Sets[level].Mass[i];
      memcpy(&Mass[0], &Sets[level].Mass[i][0], value);
      
      for (...) {
         ...  // обнуление некоторых элементов Mass
      }
      ...
      t_Mass.push_back(Mass);
      ...
   }
   ++level;
   Sets[level].Mass = move(t_Mass);
   ...
}
прога сыпется на memcpy?

Конечно можно через Mass = Sets[level].Mass[i], но у меня есть в критической секции временный вектор t_Mass, которые заполняются постепенно, по окончании цикла я их отправляю в Set через move. Но такой подход почему-то сильно тормозит обнуление элементов Mass (смотрел через профилировщика).

Что скажете?

Добавлено через 29 минут
аналогично, если использовать std::copy(...)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 16:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Memcpy в OpenMP (C++):

Memcpy, buffer overflow. Может ли возникнуть ошибка в функции memcpy - C++
Бывает ли на практике такое, что код #define size 1000; // some value int x, y; /* ... */ memcpy(y, x, (size + 1) * sizeof(int)); ...

OpenMP. Время выполнения программы больше чем без OpenMP - C++
Сегодня первый раз сел за OpenMP. Читаю на сайте майкрософта как работает этот API. Так вот там сказано:&quot;Директива #pragma omp for...

Не работает memcpy - C++
Нужно просто полностью скопировать первый массив, во второй, длина у них одинакова. Делаю так: BYTE in; // = {10, ...} типа заполнен...

2d ---> 1d array и memcpy - C++
Можно ли сконвертировать двумерный массив в одномерный с помощью memcpy? Если да, то будет ли быстрее, чем тупое перебирание в циклах?

memset, memcpy - C++
Использую MSVS 2008. Почему memcpy работает только с char? То есть, такой код работает: int main() { char a1 = &quot;123&quot;; ...

Memcpy и динамические массивы - C++
Почему значение массива A изменилось? Как этого избежать? int *a = new int ; A = 3; a = 5; int *b = new int ; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2014, 16:29
Привет! Вот еще темы с ответами:

Memcpy - вылетает исключение - C++
нужно добавлять в массив по одному элементу и при добавлении нового элемента динамически увеличивать память массива но при копировании...

Своя реализация memcpy - C++
Собственно одно из заданий Дейтела это требует. Но только я столкнулся с тем что void *memcpy(void *s1, const void *s2, size_t n) ...

Работа функции memcpy - C++
Подскажите пожалуйста: 1. Каким образом работает функция memcpy(&amp;buf1,&amp;genday,2) и какого типа данные окажутся в buf1? Заранее всем...

Strict aliasing и memcpy - C++
Что-то я никак не врублюсь, как согласуются между собой strict aliasing и функции жонглирующие void*? Возьмем для примера memcpy....


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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