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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Engmor
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 7
#1

Вычисление функции с использованием OpenMP на нескольких ядрах - C++

09.02.2014, 22:57. Просмотров 497. Ответов 2
Метки нет (Все метки)

Дана функция http://www.cyberforum.ru/cgi-bin/latex.cgi?y=\frac{{x}^{2}-7x+10}{{x}^{2}-8x+12} на промежутке [1; 13]. Нужно вычислить её значения и записать время выполнения программы на 1, 2, 3, 4 ядрах. Я написал программу, которая вычисляет эту функцию, а также использовал omp_get_wtime() для нахождения времени. Но как именно заставить работать программу на определённом количестве ядер?

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
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <omp.h>
 
using namespace std;
 
void main() {
    int N = 12, z;
    double x, y, k, h, clockStart, clockStop, tick;
 
    cout << "N = 12" << endl;
    cout << "k = N * 10^z. Enter z: "; cin >> z;
 
    k = N * pow(10, z);
    h = (double)N / k; //Шаг
    clockStart = omp_get_wtime(); //Начальное время
 
 
    for (x = 1; x <= 13; x = x + h) {
        y = (pow(x, 2.0) - 7 * x + 10) / (pow(x, 2.0) - 8 * x + 12);
        cout << "x = " << x << "; " << "y = " << y << endl;
    }
 
    clockStop = omp_get_wtime(); //Конечное время
    tick = omp_get_wtick(); //Точность таймера
 
    cout << "\nSeconds: " << (clockStop - clockStart) << endl;
    cout << "Timer accuracy: " << tick << endl << endl;;
 
    system("PAUSE");
}
Миниатюры
Вычисление функции с использованием OpenMP на нескольких ядрах  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2014, 22:57     Вычисление функции с использованием OpenMP на нескольких ядрах
Посмотрите здесь:
Вычисление функции с использованием их разложения в ряд C++
Вычисление функции с использованием разложения в ряд C++
C++ Сортировка с использованием OpenMP
Умножение матриц с использованием OpenMP C++
Вычисление функции с заданной точностью с использованием разложения в ряд C++
C++ Вычисление заданной функции разложением ее в ряд с использованием рекурсии
C++ Вычисление интеграла с применением OpenMP
C++ Вычисление кубического корня с использованием функции с параметрами и возвращаемым значением
Написать программу с использованием функции и с использованием макроса C++
C++ Программирование задач с использованием нескольких функций
C++ Вычисление сопротивления цепи из нескольких проводников, соединенных последовательно

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Engmor
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 7
09.02.2014, 23:06  [ТС]     Вычисление функции с использованием OpenMP на нескольких ядрах #2
На сколько я понял, если допишу #pragma omp parallel num_threads(x), где x - количество потоков, то программа будет выполняться на каждом потоке, а вроде как нужно, чтобы она разделялась между потоками?
Миниатюры
Вычисление функции с использованием OpenMP на нескольких ядрах  
Engmor
0 / 0 / 0
Регистрация: 09.02.2014
Сообщений: 7
11.02.2014, 03:32  [ТС]     Вычисление функции с использованием OpenMP на нескольких ядрах #3
Всё, отбой. Оказалось, что при выполнении программы на кластере через PuTTY можно выбирать количество ядер.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru