Идеальная структура данных с OpenMP - PullRequest
0 голосов
/ 15 ноября 2010

Что такое идеальная структура данных в параллельном программировании, в моем случае OpenMP.

#pragma omp parallel for
for(int i = 0; i < N; i++)
{
    if(table[i] == true)
        container.insert(i); // ?? what kind
}

В этом примере это может быть просто, если мы используем таблицу аналогичного размера. Какова более общая структура данных для параллельного программирования с разделяемой памятью в C ++?

Ответы [ 2 ]

1 голос
/ 15 ноября 2010

Массив является идеальной структурой данных для параллельного программирования.

Я не разделяю нежелание @Oli Charlesworth полагаться на общие структуры данных - в конце концов OpenMP касается параллелизации совместно используемой памяти и обеспечиваетинструменты, необходимые программисту для обеспечения безопасности данных.

1 голос
/ 15 ноября 2010

Лучше вообще не полагаться на общие структуры данных (потому что в какой-то момент вам придется полагаться на блокировки, что приведет к замедлению работы). Вместо этого пусть каждый поток записывает в свою собственную структуру и объединяет результаты после завершения параллельного раздела.

...