Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > OpenMP


Автор: крылья 13.4.2015, 16:08
Ребят  хочу распараллелить   перемножение матриц  с помощью технологии OpenMP

перед циклами я добавил директиву "#pragma omp paralell   private (j, k) " чтобы параллельно выполнялся.....пытаюсь запустить , пишет "требуется имя директивы"  не могу понять что он хочет........ если я уберу дерективу то матрицы будут последовательно перемножаться, а если оставлю и будет работать то они перемножаться параллельно , и в дальнейшем я могу посмотреть время выполнения и оценить разницу))))) буду благодарен за помощь!!!

[CPP]
void MatricA::basic_parallel_algorithm(double  *a, double  *b, double  *c)
 {
long t1 = clock();
int Size = N;
#pragma omp paralell  for private (j, k) 
{
    for (i = 0; i < Size; i++)
    {
        for (j = 0; j < Size; j++)
        {
            for (k = 0; k < Size; k++)
            {
                c[i*Size + j] += a[i*Size + k] * b[k*Size + j];
            }
        }
    }
}
long t2 = clock();
    cout << "time--> " << t2 - t1 << endl; // вывод  времени в миллисекундах
 }
[/CPP]

Автор: rudolfninja 14.4.2015, 12:32
Прочтите http://habrahabr.ru/company/intel/blog/85273/ по этому поводу.
В частности раздел "Директива for". Должно помочь...надеюсь =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)