Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2011, 15:39   #1
NastyaV
Пользователь
 
Регистрация: 29.09.2010
Сообщений: 30
Печаль Как переробить код в OpenMP???

Дано такой код програмы

Цитата:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <pthread.h>
#define MAX_s 2048*1024*16
short *a, *b, *c;
void *task_1();
void *task_2();
int main(){
pthread_t Thread_1, Thread_2;
clock_t t[2];
int i;
t[0]=clock();
a=(short *)malloc(2*MAX_s);
b=(short*)malloc(2*MAX_s);
c=(short *)malloc(2*MAX_s);
srand(1);
pthread_create(&Thread_1,NULL,task_ 1,NULL);
pthread_create(&Thread_1,NULL,task_ 2,NULL);
t[1]=clock();
printf("%g sec\r\n",(double) (t[1]-t[0])/(double)CLOCKS_PER_SEC);
pthread_join(Thread_1,NULL);
pthread_join(Thread_2,NULL);
t[1]=clock();
printf("%g sec\r\n",(double) (t[1]-t[0])/(double)CLOCKS_PER_SEC);
for(i=0; i<MAX_s; i++)
c[i]=a[i]+b[i];
t[1]=clock();
printf("Hi: %d-",c[230]);
printf("%g sec\r\n",(double) (t[1]-t[0])/(double)CLOCKS_PER_SEC);
free(a);
free(b);
free(c);
return 0;
}
void *task_1()
{
int i;
clock_t t[2];
t[0]=clock();
for(i=0; i<MAX_s; i++)
a[i]=(short)rand()/2;
t[1]=clock();
printf("%d: %g sec\r\n",(int)pthread_self(),(doubl e)(t[1]-t[0])/(double)CLOCKS_PER_SEC);
}

void *task_2()
{
int i;
clock_t t[2];
t[0]=clock();
for(i=0; i<MAX_s; i++)
a[i]=(short)rand()/2;
t[1]=clock();
printf("%d: %g sec\r\n",(int)pthread_self(),(doubl e)(t[1]-t[0])/(double)CLOCKS_PER_SEC);
}
Нужно переделать ево в OpenMP,чтоб он расспаралеливал цыклы.
И пожалуйста обясните каждую строчку программы!!!
NastyaV вне форума Ответить с цитированием
Старый 24.03.2011, 19:22   #2
NastyaV
Пользователь
 
Регистрация: 29.09.2010
Сообщений: 30
По умолчанию

ХЕЛЛП НАДА НА ЗАВТРА!!!
NastyaV вне форума Ответить с цитированием
Старый 24.03.2011, 20:11   #3
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

а в чём проблема?
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 24.03.2011, 20:14   #4
NastyaV
Пользователь
 
Регистрация: 29.09.2010
Сообщений: 30
По умолчанию

Препод сказал что етот код нужно переделать чтоб он работал в OpenMP
представления не имею как ето сделать(
NastyaV вне форума Ответить с цитированием
Старый 24.03.2011, 20:51   #5
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Достаточно добавить директивы #pragma omp for перед темы for, которые можно распараллелить
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переробить процедуру, спасибо заранее!!!! mix_vasja Паскаль, Turbo Pascal, PascalABC.NET 0 11.03.2011 19:52
переробить всплывающее меню в раскрывающееся на JavaScript netweb JavaScript, Ajax 3 14.01.2010 14:20
переробить всплывающее меню в раскрывающееся на JavaScript netweb Помощь студентам 5 13.01.2010 21:12
Параллельная программа для метода холецкого с помощью openMp и mpi игоревна Помощь студентам 0 06.06.2009 20:47
Код игры на Паскале и на Делфи сильно отличается? Как переписать код с Паскаля в Делфи? Mclaren Помощь студентам 2 27.04.2009 22:37