У меня есть код выглядит следующим образом:Параллелизация кода с зависимостью
Массива a
содержит информацию о группе, это элементы принадлежат. то есть элемент i
относится к группе a[i]
. Каждая группа может содержать два элемента. Я хочу сохранить эту информацию в b, длина которой составляет 2*number
групп. Таким образом, значение в b[j]
и b[j+1]
предоставит мне элементы, которые относятся к группе j/2
(целочисленное деление) и j
.
void assign(int *a, int *b){
for(int i = 0; i<N; i++){
int group = a[i];
int posit=2*group;
if(b[2*i]!=0){
posit++;
}
b[posit] = i;
}
}
N as is clear length of a.
По умолчанию значение в b [] равно нулю и указывает на отсутствие элементов.
Существует четкая зависимость данных, и это не выглядит так легко распараллеливать это. Я ищу дальнейшие предложения, если есть умный способ, который мне не хватает.