PDA

View Full Version : سوال: الگوریتم مرتب سازی با openmp



samanff2000
جمعه 05 دی 1393, 22:59 عصر
سلام دوستان یه برنامه باید بنویسم که یک الگوریتم مرتب سازی رو با openmp به صورت موازی اجرا کنم هرچی دنبال یه کد یا یه پستی که بتونه در این مورد کمکی بهم کنه گشتم چیزی پیدا نکردم خواهش میکنم اگه کسی اطلاعاتی یا کدی که در این مورد کمکم کنه داره ، یک لطفی کنه و کمکی بهم کنه ممن.ن میشم .
سوال دیگمم اینه که آیا میشه openmp رو در #C اجرا کرد ؟ و اگه میشه چجوری ؟
ممنون

farbehar1
جمعه 05 دی 1393, 23:59 عصر
سلام دوستان یه برنامه باید بنویسم که یک الگوریتم مرتب سازی رو با openmp به صورت موازی اجرا کنم هرچی دنبال یه کد یا یه پستی که بتونه در این مورد کمکی بهم کنه گشتم چیزی پیدا نکردم خواهش میکنم اگه کسی اطلاعاتی یا کدی که در این مورد کمکم کنه داره ، یک لطفی کنه و کمکی بهم کنه ممن.ن میشم .
سوال دیگمم اینه که آیا میشه openmp رو در #C اجرا کرد ؟ و اگه میشه چجوری ؟
ممنون
سلام
ببین این بدردت میخوره ؟ زحمت ترجمه به ++C رو فقط باید بکشی
:لبخندساده:



#include <omp.h>
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main()
{
int i, n, tmp, *x, changes;
int chunk;
scanf("%d ", &n);
chunk = n / 4;
x = (int*) malloc(n * sizeof(int));
for(i = 0; i < n; ++i)
scanf("%d ", &x[i]);
changes = 1;
int nr = 0;
while(changes)
{
#pragma omp parallel private(tmp)
{
nr++;
changes = 0;
#pragma omp for \
reduction(+:changes)
for(i = 0; i < n - 1; i = i + 2)
{
if(x[i] > x[i+1] )
{
tmp = x[i];
x[i] = x[i+1];
x[i+1] = tmp;
++changes;
}
}
#pragma omp for \
reduction(+:changes)
for(i = 1; i < n - 1; i = i + 2)
{
if( x[i] > x[i+1] )
{
tmp = x[i];
x[i] = x[i+1];
x[i+1] = tmp;
++changes;
}
}
}
}

return 0;