Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sprawdzenie, czy prawidłowo zostało użyte OpenMP

Ostatnio zmodyfikowano 2014-03-18 17:10
Autor Wiadomość
przemeks91
Temat założony przez niniejszego użytkownika
Sprawdzenie, czy prawidłowo zostało użyte OpenMP
» 2014-03-18 17:10:22
Witam,
mam za zadanie napisać program, który będzie współbieżnie realizował dowolne złożone współbieżne zadanie obliczeniowe w OpenMP. Ponadto program musi posiadać prosty interfejs (trackbary, spinboxy, cokolwiek), w którym w czasie rzeczywistym będzie można modyfikować parametry zrównoleglenia (m.in. parametry w pragmach, liczbę sekcji, ziarnistość, cokolwiek) tego konkretnego algorytmu. Postanowiłem wykorzystać obliczanie interpolacji Newtona. Program został napisany w C++, w Visual Studio.
Niestety nie wiem, czy wybrałem dobry przykład do wykonania tego zadania. Może miałby ktoś inny pomysł co bardziej pasowałoby do wytycznych zadania i co w prosty sposób dałoby się wykonać.
Wiem jak wykonać prosty interfejs, ale niestety nie wiem jak zrobić aby odpowiedni kod z programu zgadzał się z odpowiednimi polami w interfejsie (np. wpisywanie w pole odpowiedniego współczynnika x0 lub okno w którym znajduj się wynik. Nie wiem w jaki sposób można zmodyfikować potrzebne parametry. Czy w podanym poniżej programie jest to w ogóle możliwe do wykonania?
Bardzo prosiłbym o pomoc i wyrozumiałość.
Oto kod:
C/C++
#include <cstdlib>
#include <math.h>
#include <iostream>
#include <omp.h>
using namespace std; int main( int argc, char * argv[] )
{
    int n;
    cout << "Podaj stopien wielomianu:\n";
    do {
        cin >> n;
    } while(( n < 1 ) ||( n > 10000 ) );
   
    double x[ n ]; double c[ n ];
    cout << "Podaj wezly i wartosci:\n"; for( int i = 0; i < n; i++ )
    {
        cout << " x" << i << ": "; cin >> x[ i ];
        cout << " y" << i << ": ";
        cin >> c[ i ]; }
   
    #pragma omp parallel
   
    for( int k = 1; k < n; k++ ) {
        for( int i = n; i > k; i-- )
        {
            c[ i ] =( c[ i ] - c[ i - 1 ] ) /( x[ i ] - x[ i - k ] ); //te 2 petle trzeba zamienic               }
        }
        cout << "W(x) = ";
        for( int i = 0; i < n; i++ ) {
            cout << c[ i ];
            for( int j = 0; j < i; j++ ) {
                cout << "(x"; if( x[ j ] > 0 ) cout << "-";
                else cout << "+";
               
                cout << fabs( x[ j ] ) << ")";
            } if( i != n - 1 ) cout << "+"; }
        cout << endl;
       
       
    }
    system( "PAUSE" );
    return 0;
}
}

P-106706
« 1 »
  Strona 1 z 1