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

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

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

Memcpy в OpenMP - C++

13.04.2014, 16:29. Просмотров 205. Ответов 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(...)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.04.2014, 16:29     Memcpy в OpenMP
Посмотрите здесь:

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

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

Объяснить работу Memcpy - C++
Доброго времени суток! Можете пояснить работу memcpy под C++? Что-то у меня определённо работает не так. Например такой код: ...

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

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

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

Насчёт функции memcpy() - C++
Начинаяю использовать эту функцию.Её синтаксис: void memcpy(void *to, const void *from, size_t count); Вопрос_1: Что такое...

Как работает memcpy? - C++
Небольшой вопрос по поводу memcpy. Какая из функций будет работать быстрее? typedef unsigned int WORD32; void wcpy(WORD32 * D,...

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

Подскажите функцию аналог memcpy() - C++
Функция memcpy() копирует из одного массива в другой первые size элементов. А есть аналогичная стандартная функция, но которая бы...


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

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

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