2013-02-13 2 views
0

Я действительно пытаюсь обернуть голову вокруг векторизации, но я не могу понять ее. Я не знаю, не понимаю ли я, как векторизовать, или если я не понимаю используемую нотацию массива. Пример цикла я работаю в школе ниже:Может кто-нибудь помочь мне понять векторизация?

for (M=0; M< number_of_iterations/2; M++){ 
    for (i=2; i<n-1; i++) 
     for (j=1; j<n-1; j++) 
      y[i][j]= (x[i-1][j]+x[i][j-1]+x[i+1][j]+x[i][j+1]+x[i-2][j])/5.; 

Я не уверен, что я вполне понимаю, все это на зависимости - Есть ли способ векторизации это с помощью нотации массива, как есть, или мне нужно каким-то образом настроить его для учета зависимостей?

Заранее благодарим за любую помощь.

ответ

1

Предполагая, что x и y представляют собой различные массивы, которые не перекрываются вообще, нет зависимостей. x никогда не изменяется, и все вычисления имеют результаты, которые зависят только от x. Никакие вычисления не зависят от результатов предыдущего вычисления.

Расчеты и назначения, используемые в этом цикле, могут возникать в любом порядке и с любым параллелизмом.

1

Сначала я рекомендую вам использовать brakets {}, чтобы упорядочить ваши строки кода и лучше понять. Во-вторых, взгляните на эту страницу: http://www.javatutorialhub.com/java-arrays.html Thirg, всегда начинайте с простых примеров, чтобы не запутаться.

Смежные вопросы