Russian Qt Forum
Ноябрь 22, 2024, 23:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 3 [4]   Вниз
  Печать  
Автор Тема: Как в Qt Creator включить поддержку OpenMP?  (Прочитано 63124 раз)
kdm
Гость
« Ответ #45 : Июнь 03, 2010, 23:59 »

Я вижу на сайте GCC есть новые выпуски, никто не знает, исправили ли они эту проблемму?
Нужен совет, скоро уже диплом а нужно OpenMP+Qt в QThread, что мне делать, на чем собирать? Скачал компилятор Intel, не представляю, как им пользоваться, доки нормальной не нашел Грустный И будет ли компилироваться проект на уже готовой скаченной Qt SDK 2009.03? Подсоветуйте пожалуйста.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #46 : Июнь 04, 2010, 15:42 »

Я вижу на сайте GCC есть новые выпуски, никто не знает, исправили ли они эту проблемму?
Нужен совет, скоро уже диплом а нужно OpenMP+Qt в QThread, что мне делать, на чем собирать? Скачал компилятор Intel, не представляю, как им пользоваться, доки нормальной не нашел Грустный И будет ли компилироваться проект на уже готовой скаченной Qt SDK 2009.03? Подсоветуйте пожалуйста.
Я на др. платформе (OSX) так что в общих чертах

а) Дока на Intel хорошая, но если не надо выжимать скорость - проще на gcc, т.к. несмотря на все достоинства, у Intel свои заморочки. Напр. если поставить линкеру "Dead strip code" - валится на exception. Разобраться можно, но это время.

б) Также я использовал старенький gcc 4.2 но взял libgomp.a от gcc 4.4 - работает нормально, комбинируется с QThread без проблем, приятно. Что будет на Вашей платформе - не знаю, но попробовать стоит
Записан
AlekseyK
Гость
« Ответ #47 : Октябрь 05, 2010, 02:46 »

Я вижу на сайте GCC есть новые выпуски, никто не знает, исправили ли они эту проблемму? Нужен совет, скоро уже диплом а нужно OpenMP+Qt в QThread, что мне делать, на чем собирать?
Собирай в Линуксе - там этой проблемы нет.
Записан
alexksv2010
Гость
« Ответ #48 : Октябрь 21, 2010, 18:48 »

ошибка -1073741515 в винде при работе в openmp связана с отсутствием в C:\Qt\2010.03\mingw\bin библиотеки pthreadGC2.dll (скачиваете с инета и все работает).
У меня получилось запустить openMP следующим образом:
1. ubuntu linux
   в make-файле добавил руками в поле CXXFLAGS  -fopenmp
   в файле .pro добавил поле QMAKE_LFLAGS += -fopenmp
2. windows xp
    скачал pthreadGC2.dll
    в файле .pro добавил поле QMAKE_LFLAGS += -fopenmp
Записан
AlekseyK
Гость
« Ответ #49 : Октябрь 26, 2010, 01:23 »

Благодарю, может пригодится когда.
Записан
holander
Гость
« Ответ #50 : Март 03, 2011, 20:50 »

Здраствуйте, столкнулса с подобной проблемой: нужно в Qt задейсвоватть openMP, для разпаралливания цикла for.
Итак
1. Создаю QtCreator новий консольний проект.
2. Добавляю строки в Проект\\ Настройки сборки\\ Етапи сборки\\ Кликаю напротив qmake "подробнее" и прописиваю в строке "Допольнительние параметри"
3. Пишу код в файле *.сpp, што нужно прописивать перед циклом фор которий нужно розпаралелить. Например

   t_start = omp_get_wtime();
   #pragma omp parallel default(none) shared(A, b, c, N) private(i, j, sum)
   for (i=0; i < N; i++) {
      sum = 0.0;
      for (j=0; j < N; j++)
         sum += A[j] * b[j];
      c = sum;
   }
   t_end = omp_get_wtime();
   printf("%10ld %20.15f\n", N, t_end - t_start);

4 Єсть аналог функций
   t_start = omp_get_wtime();
   t_end = omp_get_wtime();
они засекают время работи цикла.

а= (double *)malloc(n * sizeof(double));
резервируєт облать памяти.

Работаю на в Qt 2010.05? WinXP SP3

P.S. Извините за ошибки я толька учусь



Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #51 : Март 03, 2011, 21:42 »

Чего "прописивать"-то?  Улыбающийся
Если просто распараллелить цикл, то так
Код
C++ (Qt)
double sum = 0.0;
#pragma omp parallel for shared(sum)
for (int j = 0; j < N; j++)
 sum += а[j] * b[j];
 
А внешний цикл (по i) смысла не имеет, т.к. считает одно и то же. Наверное что-то напутали, задачу уточните
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #52 : Март 03, 2011, 22:59 »

кажется LIBS += -lgomp
и ключ компилеру -fomp
Это работало на маке/линупсе, думаю на вин тоже самое (если мингв)
Записан
holander
Гость
« Ответ #53 : Март 04, 2011, 00:52 »

Харащо а насчет
функций
   t_start = omp_get_wtime();
   t_end = omp_get_wtime();
они засекают время работи цикла.

а= (double *)malloc(n * sizeof(double));
резервируєт облать памяти.

Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #54 : Март 04, 2011, 12:07 »

warning: statement has no effect

это вопрос или что? есть ф-ии. надо подключить хедеры
Записан
Страниц: 1 2 3 [4]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.116 секунд. Запросов: 23.