Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 9

Задача на распараллеливание с подпрограммой

01.04.2021, 10:26. Показов 716. Ответов 3

Студворк — интернет-сервис помощи студентам
Добрый день. Было дано задание с черновиком. Необходимо вставить в имеющуюся задачу представленный черновик.
Можно ли объяснить это, если совсем непонятно. Искал на форуме подобные вопросы, но ничего не нашёл. Буду благодарен за ответ.
Имеющаяся задача:
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
65
66
67
68
69
70
71
72
#include <iostream>
#include <clocale>
#include <cstdlib>
using namespace std;
void Input(int* M, int n);  
void Print(int* M, int n);   
void RandomFill(int* M, int n);   
void Work(int* M1, int* M2, int* res, int n);   
 
 
int main()
{
    setlocale(LC_ALL, "Rus");
    int n;
    cout << "Размер векторов?";
    cin >> n;
    int* A = new int[n];
    int* B = new int[n];
    int* C = new int[n];
 
    //Input(A,n);
    RandomFill(A, n);
    cout << "Первый массив\n";
    Print(A, n);
 
    RandomFill(B, n);
    cout << "Второй массив\n";
    Print(A, n);
 
    Work(A, B, C, n);
    cout << "Сумма\n";
    Print(C, n);
    delete[] A;
    delete[] B;
    delete[] C;
    system("pause");
    return 0;
}
 
void Input(int* M, int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << "M[" << i << "]=?";
        cin >> M[i];
    }
}
 
void RandomFill(int* M, int n)
{
    for (int i = 0; i < n; i++)
    {
        M[i] = rand() % 100;
    }
}
 
void Print(int* M, int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << M[i] << " ";
    }
    cout << endl;
}
 
void Work(int* M1, int* M2, int* res, int n) 
{
    for (int i = 0; i < n; i++)
    {
        res[i] = M1[i] + M2[i];
    }
}
Черновик задачи, который необходимо использовать.
И само задание, которое нужно реализовать
1) Обязательно замерить время работы.
2) Не нужно выводить промежуточные результаты, только один ответ в конце вне параллельной области.
3) Желательно подогнать размеры матриц и векторов (константой VECLEN) под время работы от 5 до 20 сек.

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
#define VECLEN 100
float a[VECLEN], b[VECLEN];
float s;
 
float dotprod ()
{
int i;
 
s = 0;
#pragma omp for reduction(+:s)  reduction используется только если нужна общая сумма
  for (i=0; i < VECLEN; i++)
    {
    s = s + (a[i]*b[i]);    здесь формулы согласно задаче
    }
return(s);  если ответ: массив, то передавайте через ссылку или указатель
}
 
void main()
{
double t1, t2, sum;
for (i=0; i < VECLEN; i++)  заполнение массивов
 
t1 = omp_get_wtime();   начальный замер времени
#pragma omp parallel
sum = dotprod();
t2 = omp_get_wtime();
 
cout<<"Sum = "<<sum<<endl;
cout<<"time: "<<t2 - t1<<endl;
 
system("pause");
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2021, 10:26
Ответы с готовыми решениями:

Задача с подпрограммой
Даны действительные числа S и t. Рассчитать f(t,4*s,2.5*t)+f( 5,2*t,s+t), где подпрограмма

Задача с использованием рекурсивной подпрограммой
Описать рекурсивную функцию Root(a, b, ), которая методом деления отрезка пополам находит с точностью  корень уравнения f(x) = 0...

Задача с подпрограммой, наиболее удаленные точки
Здравствуйте, помогите пожалуйста с данной задачей: Координаты n точек на плоскости заданы в виде двумерного массива К. Найти номера двух...

3
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
01.04.2021, 10:37
Цитата Сообщение от ora_ora Посмотреть сообщение
s = s + (a[i]*b[i]);    здесь формулы согласно задаче
C++
1
s += a[i] * b[i]; 
Цитата Сообщение от ora_ora Посмотреть сообщение
#pragma omp parallel
sum = dotprod();
Убери отсюда #pragma omp parallel

Цитата Сообщение от ora_ora Посмотреть сообщение
for (i=0; i < VECLEN; i++)  заполнение массивов
А где заполнение-то?
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 9
01.04.2021, 11:40  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А где заполнение-то?
Я не знаю, весь код второй задачи это черновик преподавателя, который нам скинули для решения. Код выслан как образец. Фактически, в него нужно вставить вычисления первой задачи и довести до рабочей версии.
Это объяснение преподавателя, я понял суть, но не до конца понимаю принцип реализации.
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 9
03.04.2021, 12:35  [ТС]
Бамп. Проблема до сих пор актуальна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2021, 12:35
Помогаю со студенческими работами здесь

Задача в паскале. Задачу надо с подпрограммой
Пусть задан одномерный массив порядка N, состоящий из натуральных чисел, больших единицы. N - заданное натуральное число. Назовем...

Задача в паскале. Задачу надо с подпрограммой
Heelpp! Задача: найти натуральные числа из диапазона от n до k, количество делителей у которых является произведением двух простых...

Задача GPSS распараллеливание
В системе конвейерных вычислений выполняется распараллеливание и исполнение задач, поступающих через 5-15 мин. Распараллеливание...

Найти сумму максимальных элементов каждого столбца( задача на двумерный массив написать подпрограммой)
Найти сумму максимальных элементов каждого столбца( задача на двумерный массив написать подпрограммой)

Сделать с Подпрограммой
uses crt; var A:array of integer; B:array of integer; x,y:array of integer; i, j,n,m, mn, mx,k,f: integer; c:boolean; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru