130 likes | 364 Views
Летняя школа 2012. Задача Моделирование движения N тел в гравитационном поле. Проект Программирование графических ускорителей. автор : Купчишин А.Б. руководитель : Калгин К.В. Постановка задачи.
E N D
Летняя школа 2012 Задача Моделирование движения N тел в гравитационном поле Проект Программирование графических ускорителей автор: Купчишин А.Б. руководитель: Калгин К.В.
Постановка задачи • Эффективно запрограммировать на графическом ускорителе N body system снебольшим количеством тел (N~20) Особенности • Хранится вся траектория движения каждого тела • Малое количество тел в системе, N~20
F Модель N-body-system F 1) F R->F->a->coord Fr Fr F Fr F F 1)
Реализация Решение данной задачи производилось в несколько этапов • последовательная реализация CPU (N2) • оптимизированная последовательнаяреализация CPU (N2/2) • параллельная реализация GPU: 1 поток = 1 тело • параллельная реализация GPU: количество потоков = (количество тел)2 • параллельная реализация GPU: с учетом warp • параллельная реализация GPU: аналог SSE
последовательная реализация i = 1,количество j = 1,количество Rij Aij NewCoord
оптимизированная последовательная реализация i = 1,количество j = i+1,количество Rij Aij, Aji NewCoord
параллельная реализация: 1 тело = 1 поток i = ID потока j = 1,количество j = 2,количество j = i+1,количество Rij Rij Rij Aij, Aji Aij, Aji Aij, Aji NewCoord NewCoord NewCoord
параллельная реализация: количество потоков = количество тел*количество тел ID - идентификатор потока i = f(ID) j = g(ID) R(01) 0 R(0N) 0 R(12) 0 R(1N) Rij A(01) A(10) A(0,N) A(N0) A(12) A(21) A(1N) A(N1) Aij Aji NewCoord NewCoord NewCoord
параллельная реализация:warp ID - идентификатор потока i = f(ID) j = g(ID) R(01) R(0N) R(12) R(1N) R(i,i+1) RiN N ... N-1 A(01) A(10) A(0,N) A(N0) A(12) A(21) A(1N) A(N1) A(i,i+1) A(i+1,i) AiN ANi NewCoord NewCoord NewCoord
параллельная реализация:SSE ID - идентификатор потока i = f(ID) j = g(ID) R(01) R(0N) R(12) R(1N) R(i,i+1) RiN N ... N-1 A(01) A(10) A(0,N) A(N0) A(12) A(21) A(1N) A(N1) A(i,i+1) A(i+1,i) AiN ANi NewCoord X NewCoord X NewCoord Y NewCoord Y NewCoord Z NewCoord Z
производительность Время последовательногооптимизированного CPU = 1 у.е. CPU не оптимизированный = 30 у.е. GPUN потоков = 2 GPUN*N потоков = 0.86 GPUwarp = 0.75 GPUsse = 0.35
Продолжение • внедрить параллельное суммирование xyz на ВСЕХ операциях такого типа. • реализация метода для большого количества тел • использование более одного блока потоков, при N>256 • конечная скорость распространения действия гравитационных сил