Я довольно новичок в OpenMP. Я хочу написать все элементы большой матрицы в вектор, используя потоки OpenMP, чтобы ускорить процесс.Запись элементов матрицы в вектор с использованием OpenMP
В моем последовательном коде я просто делаю следующее:
m=1
DO k=1,n_lorentz
DO i=1,n_channels
DO p=1,n_lorentz
DO j=1,n_channels
vector(m) = Omega(j,p,i,k)
m=m+1
END DO
END DO
END DO
END DO
Теперь я хотел бы использовать цикл OMP писать элементы Omega в вектор в параллельной моде:
!$OMP PARALLEL DO PRIVATE(k,i,p,j)
! bla bla
!$OMP END PARALLEL DO
Вопрос в том, как отслеживать текущий векторный индекс, поскольку в этом случае параметр из m
из серийного кода будет увеличиваться на разные потоки, что приведет к полному беспорядку.
Спасибо! Это действительно делает работу :) – Cooliofan