0 / 0 / 1
Регистрация: 15.12.2012
Сообщений: 19
1

Программирование на OpenMP

08.04.2015, 19:20. Показов 2162. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Такой вопрос, у меня есть прога, которая работает ~сутки, не буду вдаваться что и как она делает, мне посоветовали для быстроты распоточить, начал гуглить, наткнулся на использование openMP(пример взят с msdn):

В качестве примера рассмотрим классическую программу «Hello World»:
C++
1
2
3
4
#pragma omp parallel
{
    printf("Hello World\n");
}
В двухпроцессорной системе вы, конечно же, рассчитывали бы получить следующее:
Hello World
Hello World
Тем не менее, результат мог бы оказаться и таким:
HellHell oo WorWlodrl
d


компилю этот код у себя и получаю в консоли только Hello World 1 раз, хотелось бы разобраться как работать с этой штукой(использую Visual studio2013).

Добавлено через 10 минут
разобрался, необходимо включить поддержку openMP:

Откройте диалоговое окно Страницы свойств проекта. Дополнительные сведения см. в разделе Открытие свойств страниц проекта.
Разверните узел Свойства конфигурации.
Разверните узел C/C++.
Выберите страницу свойств Язык.
Измените значение свойства Поддержка OpenMP.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2015, 19:20
Ответы с готовыми решениями:

Параллельное программирование openmp
Условия задачи: Написать программу, в которой объявить и присвоить начальные значения целочисленным...

OpenMP. Время выполнения программы больше чем без OpenMP
Сегодня первый раз сел за OpenMP. Читаю на сайте майкрософта как работает этот API. Так вот там...

Параллельное программирование openmp (Умножение матрицы на вектор)
Есть задание : написать программу умножения матрицы на вектор. Сравнить время выполнения...

Программирование с OpenMP и ошибка Cannot open file
Здравствуйте. Недавно начал изучать параллельные вычисления, написал прогу и вылезла ошибка: Cannot...

10
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
08.04.2015, 19:22 2
Цитата Сообщение от zorra1234 Посмотреть сообщение
хотелось бы разобраться как работать с этой штукой
Свойства проекта -> С/С++ -> Language -> Open MP Support -> Yes

Добавлено через 2 минуты
Цитата Сообщение от zorra1234 Посмотреть сообщение
Такой вопрос, у меня есть прога, которая работает ~сутки
Можно еще заняться поиском слабых мест, с целью увеличения их скорости работы.
Я, например, часто использую Inte VTune Amplifier для поиска самых трудоемких мест в проекте,
а также Intel Inspector для поиска утечек и ошибок работы с памятью.
0
0 / 0 / 1
Регистрация: 15.12.2012
Сообщений: 19
08.04.2015, 19:45  [ТС] 3
У меня возник вопрос следующего характера:
допустим есть код:

C++
1
2
3
4
5
6
7
8
9
10
11
#pragma omp parallel for
for(int i =0;i<1000;i++)
    for(int j =0;j<500;j++)
    {
        ......
       for(int i1 =0;i1<1000;i1++)
         for(int j1 =0;j1<500;j1++)
         {
            ......
          }
    }
каким будет поведение, я имею ввиду каждый for будет отправляться в свой поток?
мне нужно поведение следущего хар-ра
чтобы в каждый поток опрвлялся лишь внешний for
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
08.04.2015, 20:08 4
Цитата Сообщение от zorra1234 Посмотреть сообщение
каким будет поведение
Omp выберет оптимальное кол-во потоков (если ты их сам строго не указал),
далее твой первый for разобьется на куски и каждый кусок будет выполняться в отдельном потоке.
Параллелить вложенные циклы в дополнение к первому обычно бессмысленно.
0
mat_for_c
08.04.2015, 20:20
  #5

Не по теме:

nonedark2008, у тебя профилировщик какого года?

0
nonedark2008
08.04.2015, 20:23
  #6

Не по теме:

mat_for_c, 2015

0
mat_for_c
08.04.2015, 20:27
  #7

Не по теме:

а чтобы в нем отпрофилировать omp region нужен интелловский компилятор?

0
nonedark2008
08.04.2015, 20:33
  #8

Не по теме:

mat_for_c, нет. Но я считаю, что со своим компилятором анализ будет продуктивнее.

0
mat_for_c
08.04.2015, 20:41
  #9

Не по теме:

Цитата Сообщение от nonedark2008 Посмотреть сообщение
mat_for_c, нет
у меня например при построении компилятором VS 2010 говорит, что данных нет (это когда делаешь Basic hotspot), а при advanced hotspot вообще падает перед завершением профилировки. у тебя такого не было?

0
nonedark2008
08.04.2015, 20:50
  #10

Не по теме:

Цитата Сообщение от mat_for_c Посмотреть сообщение
у тебя такого не было?
Не было, но omp проекты я редко проверяю. Распараллеливание слабо влияет на критически места программы, так что проверять можно без него. А при включенном omp лучше следить за ошибками память, которые ты мог допустить.

0
0 / 0 / 1
Регистрация: 15.12.2012
Сообщений: 19
08.04.2015, 21:58  [ТС] 11
C++
1
2
3
4
5
6
7
8
9
10
#pragma omp parallel for
    for (int y1 = 0; y1 < height; y1++)
        for (int x1 = 0; x1 < width; x1++)
        {
            printf("%d\n", qt);
            int ytmp1 = y1 - ROI_Size, ytmp2 = y1 + ROI_Size, xtmp1 = x1 - ROI_Size, xtmp2 = x1 + ROI_Size;
            for (int i = 0; i < frame_count; i++)
            {
                unsigned short int * ptr_buffer = new unsigned short int[width*height];
                rdr->GetFrame(FrameType::FT_16_BPP_GRAY, i, ptr_buffer, width*height * 2);
выдает ошибку в строчке с rdr(там считывается с файла значения):
Unhandled exception at 0x0F912153 (xeneth-xvi.dll) in XVI_CONVERTER.EXE: 0xC0000005: Access violation writing location 0x03685000.
если не использовать
C++
1
#pragma omp parallel for
, то все норм работает.
я предполагаю, что не получается в один момент времени считать с файла значения 4мя потоками, как можно модернизировать код?
0
08.04.2015, 21:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2015, 21:58
Помогаю со студенческими работами здесь

OpenMP
Здравствуйте! Подскажите, что значит данная строчка: srand(time(0) + 1000 * omp_get_thread_num());

Qt и openMP
Здравствуйте. Хочется написать программу для решегия уравнения Бюргерса. Попытался распаралелить с...

Qt и OpenMp
Доброго времени суток Установил QT на мак. есть программа, в которой присутствует...

OpenMP
Задание 2. Исследовать влияние настроек параметра shedule (не менее 4 опций ) парадигмы #omp...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru