У меня есть миллионы точек данных, каждая из которых выполняет одни и те же математические операции, и они не зависят друг от друга.Следовательно, теоретически эта проблема должна быть векторизуемой.
Теперь эти точки данных наиболее удобно хранить в Fortran как связанный список, поэтому удаление / добавление является простым.Тогда основной цикл будет выглядеть примерно так:
do while(associated(data_points))
data_points => data_points% next
......
enddo
Как это работает с векторизацией?
Другой вариант - сохранить все переменные в объявленном объявленном типе и выделить массив этого типа, равный количеству точек данных, например:
type(type_data_points) :: data_points(1:no_data_types)
, а затем сделать-loop будет просто
do i = 1, no_data_types
data_points(i)% x = (...)
data_points(i)% y = (...)
....
enddo
Будет ли даже последний векторизован - и какие у меня есть варианты, кроме определения каждой переменной (x,y, ...
) в виде массивов no_data_points
и выполнения вычислений.