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

Проблемы с распараллеливанием(omp) простой программы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Упаковка и распаковка даты. http://www.cyberforum.ru/cpp-beginners/thread545551.html
Добрый день. Помогите найти ошибку. А она заключается в том, что число в битовом представлении в сдвиге, получаеться совсем другое, нежели в битовых полях. Также это влечёт за собой не правильную распаковку даты. Заранее спасибо!:good: Код рабочий, можно вставить и проверить у себя. #include <iostream> #include <iomanip> #include <conio.h> using namespace std; void DisplayBits(...
C++ Массив: В массиве из 20 элементов расставить по возрастанию только четные В массиве из 20 элементов целого типа расставить по возрастанию только четные. Обязательное использование хотя бы одного указателя. Заранее спасибо. http://www.cyberforum.ru/cpp-beginners/thread545525.html
C++ OpenGL ошибка при компиляции
Добрый вечер! Пользуюсь CodeBlocks. Есть вот такая вот программка, которая должна нарисовать точку. int main(int argc, char **argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(240,240);
C++ Массив: Получить новую матрицу следующим способом: умножением Min каждой строки первой матрицы на Max соответствующего столбца второй
Пусть даны две вещественные матрицы порядка N. Получить новую матрицу следующим способом: умножением минимального элемента каждой строки первой матрицы на наибольший элемент соответствующего столбца второй матрицы.
C++ Обработка ошибок http://www.cyberforum.ru/cpp-beginners/thread545514.html
Где почитать обработку ошибок при работе с текстовыми и бинарными файлами(считывание и запись),не в теории а конкретно на примерах желательно с комментариями. Когда файл возвращает нуль при открытии(его не сущевствует) не нужно Проверить пустоту,там на корректность данных например и т.д Ответы хочу увидеть в коде(обязательно) Можете скинуть конкретно со своих исходников на СИ...
C++ Помогите решить задачу на структуры Десять учеников проходили тестирование по пяти темам какого-либо предмета. Вычислить суммарный (по всем темам) средний балл, полученный учениками. Сколько учеников имеют суммарный бал ниже среднего? Заранее спасибо) подробнее

Показать сообщение отдельно
Den4ik
0 / 0 / 0
Регистрация: 24.08.2011
Сообщений: 42
11.04.2012, 21:41     Проблемы с распараллеливанием(omp) простой программы
Нужно реализовать и распараллелить простенький алгоритм: Найти минимальное число, большее заданного N, которое делится нацело на все заданные числа n1, n2, ... nk.

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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <ctime>
#include <omp.h>
#include <vector>
#include <list>
using namespace std;
 
void main(){
    setlocale(LC_ALL,"Russian");
 
    int N, M;
    int k = 0;
    
    cout << "Введите N >> ";
    cin >> N;
    cout << "Введите колличиество чисел k >> ";
    cin >> k;
    vector<int> Vector(0);// вектор в котором будут храниться n1, n2, ... nk
    list<int> Suit; // список с числами > N делящиеся нацело на n1, n2, ... nk
 
    for(int i = 0; i < k; i++){
        int n;
        cout << "Введите "<<i+1<<"е число >>";
        cin >> n;
        Vector.push_back(n);
    }
 
    long c = 0;
    c = clock();
        
    #pragma omp parallel 
    cout <<omp_get_thread_num()<<endl;
    #pragma omp parallel for default(none) shared(N, k, Vector, Suit) 
    for(int i = 0 ; i < 1000000; i++){
        N++;
        bool t = true;
        for(int j = 0; j < k; j++){
            if( N%Vector[j]!=0 ){
                t=t&&false;
            }
        }
        if(t){ 
#pragma omp critical
            
            Suit.push_back(N);
        }   
    }
        
    list<int>::iterator it = Suit.begin();
    
        // ищем наименьшее из подходящих
        M = *it;
    for(; it != Suit.end(); it++){
        if(*it < M){
            M = *it; 
        }
    }
    
    cout<<"Наименьшее число >>> "<< M <<endl;
    cout << "Время выполнения: " << clock() - c << "\n";
 
    system("pause");
 
}
Все работает, но с распараллеливанием никак. Мои идеи закончились на #pragma omp critical...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru