Rozmowy na temat tworzenia stron www oraz programowania.
Wyślij odpowiedź

Poprawność użycia OpenMP przy złożonym zadaniu obliczeniowym

13 Mar 2014, 18:09

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ć 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ć sprawdzanie, czy liczba jest pierwsza, czy złożona. Niestety pojawia się problem podczas użycia OpenMP.
Oto kod:
Kod:
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <omp.h>

using namespace std;

int TestPierwsza(long long p)

{
   
  long long r = sqrt(p);
  long long i = 2;

#pragma omp parallel
{


  while (i<=r) if(!(p%i++)) return 0;
  return 1;
 
}
}


int main(void)
{
  long long p;

  cout << "Test pierwszosci liczby naturalnej." << endl;
  cout << "Podaj liczbe: ";
  cin >> p;
  cout << endl;

  if (TestPierwsza(p))
    cout << p << " to liczba pierwsza" << endl;
  else
    cout << p << " to liczba zlozona" << endl;

system("PAUSE");
return 0;
}


Pojawiają mi się następujące błędy:
- w. 19 k. 36 [Error] invalid exit from OpenMP structured block
- w. 20 k. 10 [Error] invalid exit from OpenMP structured block

Nie wiem, czy wybrałem dobry przykład do wykonania zadania.
Niestety nie wiem jak wykonać interfejs do programu zgodnie z podanymi wytycznymi, oraz w jaki sposób można zmodyfikować parametry?
Wyślij odpowiedź