[OpenMP] я тупой или как?
> строго по порядку. Как так происходит?
Вообще говоря, ввод-вывод подразумевает наличие порядка, поэтому
ничего распараллеливаться не должно.
---
...Я работаю антинаучным аферистом...
хмм, а если я хочу таки сыпать на консоль рандомными потоками?
ты не должен этого хотеть
ты не должен этого хотетьg++ точно не эпплом написан?)
ты гляди, сейчас тебя пи^Wяббловоды какашками закидают
#include <iostream>
#include <omp.h>
using namespace std;
int main(int argc, char **argv)
{
int arr[1000][1000];
int i, j;
omp_set_num_threads(10);
#pragma omp parallel for shared(arr) private(i,j)
for (i = 0; i < 1000; i++)
{
for (j = 0; j < 1000; j++)
{
arr[i][j] = i * j - i - j;
cout << i << " " << j << endl;
}
}
return 0;
}
Учите свои любимые компиляторы, товарищи.
Используй -fopenmp, будет тебе счастье (от gcc-4.2 и выше особенно, RTF changelogs, иначе собирай компилер руками).
Почему не параллелится вложенный цикл - задачка на сообразительность .
Сейчас оказалось всё прозаичнее - в ебунте g++ скомпилен только с posix-многопоточностью
Кстати по поводу вложенного цикла - я так понимаю, ему просто потоков не хватит, я прав?)
ты гляди, сейчас тебя пи^Wяббловоды какашками закидаютне не не, его закидают адепты GNU =)
и лично RMS
./gcc/libgomp/libgomp.map: omp_set_num_threads;
А про вложенный цикл я не понял откуда вообще вопрос возник...
Оставить комментарий
doublemother
Пишу простенький код просто для сравнения OpenMP с однопоточностью:И, точно такой же, только без прагмы. Компилирую, получаю в одном случае
Во втором:
Всё вроде бы нормально, но при этом числа сыплются в консоль строго по порядку. Как так происходит?