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

Распараллеливание с помощью OpenMP - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обращение к вложенными структурами http://www.cyberforum.ru/cpp-beginners/thread565954.html
Описал структуру struct personal{ char firstname,lastname,middlename,nationality; struct date{ int day,month,year; }; }; Пишу следующее: personal pbuf; А потом в цикле:
C++ Скорректировать циклы под задачу Задача. Любимое занятие котенка Мурхика - прыгать по лесенке вверх, перепрыгивая через ступеньки. Лестница имеет определенное количество ступенек N. Котенок может одним прыжком преодолеть не более К ступенек. Для разнообразия Мурзик пытается каждый раз найти новый путь к вершине лестницы. Студентам второго курса факультета экономической информатики стало интересно, сколько различных способов есть... http://www.cyberforum.ru/cpp-beginners/thread565951.html
LNK 2001 C++
Error 6 error LNK2001: unresolved external symbol "private: static char * myText::szText" (?szText@myText@@0PADA) test.obj OOPCursEx Error 7 error LNK2001: unresolved external symbol "public: virtual bool __thiscall myRect::Draw(struct HDC__ *)" (?Draw@myRect@@UAE_NPAUHDC__@@@Z) test.obj OOPCursEx Ув. господа. Что означают эти ошибки и как их можно исправить?
C++ Пример из книги Лафоре
Здравствуйте! Не могли бы подсказать, по какой причине в листинге ниже переменные должны быть обязательно быть изначально изначально с определенным значением( например int chCount=0;int wdCount=0;char ch='a'; )? Почему если их оставить пустыми, то программа не будет выполняться, и компилятор ответит, что переменные не инициализированны вообще? Заранее спасибо. char ch='a'; #include...
C++ поиск и сравнения числа в строке http://www.cyberforum.ru/cpp-beginners/thread565933.html
даны строки:30...50,40...60,50...120.Надо выделить эти числа из строк и использовать для сравнения с условием в алгоритме.Как их выделить???помогите пожалуйста.
C++ Алгоритм Брона-Кербоша или помогите с Java перевести на С++ В общем Алгоритм Брона-Кербоша представляет из себя поиск наибольшего независимого множества вершин в графе... Мне надо написать эту программку на С++. Но у меня имеется алгоритм на Java, если кто умеет можете помочь перевести его на C++, но желательно без всяких классов и тд... Ну или может быть у кого-нибудь просто есть этот алгоритм. Алгоритм на Java: import java.util.*; // Search for... подробнее

Показать сообщение отдельно
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
10.05.2012, 20:50     Распараллеливание с помощью OpenMP
Разное выдаёт. Например
01
30
1
2
2

3

0
0
Но это правильный результат: четыре нуля и по 2 остальных, в десяти строчках. Просто, во-первых, неизвестно в каком порядке будут выполняться нити, а во-вторых, когда 2 нити одновременно выводят что-то на экран, то тут тоже неизвестно сколько символов какая нить успеет вывести перед другой. Поэтому всё перемешивается. Убедиться в этом можно если вынести вывод за параллельную секцию, например так:
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
25
#include <iostream>
#include <omp.h>
 
int main (int argc, char* argv[])
{
    int i, k;
    const int N = 10;
    int a[N];
    omp_set_num_threads(4);
#pragma omp parallel private(i)
    {
#pragma omp for schedule (static, 2)
 
        for (i = 0; i<N; i++)
        {
            a[i] = omp_get_thread_num();
        }
    }
 
    for (i = 0; i < N; i++)
        std::cout<<a[i]<<std::endl;
 
 
    return 0;
}
Но этот пример имеет одну неприятность, которую надо учитывать в реальных программах. Неприятность эта называется false sharing. Разные нити пишут, казалось бы, в разные ячейки памяти и не должны мешать друг другу. Но проблема в том, что эти ячейки расположены рядом друг с другом и, скорее всего, попадут в одну линию кэша. И когда меняется одно значение в кэше вся линия объявляется устаревшей, что вызывает необходимость синхронизации между кэшами разных ядер и приводит к серьёзному уменьшению производительности.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru