вторник, 11 мая 2010 г.

Адрес приватной переменной

Напишем что0-нибудь типа

int lm;

#pragma omp parallel for private(lm)
for(i = 0; i < maxI; i++)
{
MyRead(&lm);
}

здесь функция MyRead читает в lm. Прототип MyRead(int *arg).

Так вот, возникает подозрение, что эта конструкция работать будет некорректно, т.к. адрес приватной переменной определяется неверно.


Т.е. лучше

int lm[N_];

#pragma omp parallel for
for(i = 0; i < maxI; i++)
{
s_ = omp_get_thread_num();
MyRead(lm+s_);
}

где N_ - число процессов

Комментариев нет: