Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемДанила Назаров
1 Зимняя школа 2010 «Движение заряженных частиц в магнитной ловушке» Блохин Олег Захаров Максим Калишев Глеб Удалова Татьяна Боголепов Денис Исследование производительности OpenCL и OpenMP
2 Часть 1 Постановка задачи
3 Рассматривается система N взаимодействующих точечных зарядов в магнитном поле Сила Кулона: F ba = k q a q b (r a – r b ) / (r a – r b ) 3 Введение Нижний НовгородIntel Winter School – qaqa qbqb rbrb rara F ba
4 Действие магнитного поля на частицу определяется Силой Лоренца: L = q [ v × B ] Введение Нижний НовгородIntel Winter School – v q < 0 q > 0 B
5 Эволюция системы N взаимодействующих зарядов описывается дифференциальными уравнениями: dr i / dt = v i dv i / dt = q i q j (r j – r i ) / |r j – r i | 3 + q i [ v × B ] Заряды, положения и скорости частиц в начальный момент считаются известными Необходимо найти положения и скорости всех зарядов в последующие моменты времени Магнитное поле задаётся аналитически Введение Нижний НовгородIntel Winter School – j
6 В качестве магнитного поля B рассматривается теоретическая магнитная ловушка: φ = q ( 1 / r / r - ) B = grad ( φ ) = φ Введение Нижний НовгородIntel Winter School – r+r+ r-r- +q -q
7 Магнитные поля Нижний НовгородIntel Winter School – 20107
8 Часть 2 Численный метод
9 Рассчитываются взаимодействия между всеми парами заряженных частиц При тесных сближениях частиц растёт погрешность вычислений Чтобы частично сгладить ситуацию, добавим в знаменатель величину ε 2 > 0 a ( r i ) q i q j ( r j – r i ) / ( |r j – r i | 2 + ε 2 ) 3/2 + q i [ v × B ] Равенство уже не выполняется, но суммирование можно производить по всем индексам Метод расчёта Нижний НовгородIntel Winter School – j
10 Состояние i – ой частицы системы: Y i = ( r i v i ) Исходная система примет вид: Метод расчёта Нижний Новгород Intel Winter School –
11 Используются методы прямого интегрирования: Метод расчёта Нижний НовгородIntel Winter School – Название методаЗначение в следующей точке Ошибка на каждом шаге Эйлера Y i+1 = Y i + F(Y i ) h O(h 2 ) Рунге-Кутты 2-го порядка Y i+1 = Y i + h F(Y i + h F(Y i ) / 2) O(h 3 )
12 Часть 3 Исследование теоретической производительности
13 Основную долю расчётов занимает функция вычисления ускорения: for ( int i = 0; i < N; ++i ) { // Calculate acceleration caused by particle j on particle I float3 r = p - p i ; //3 flops float dist = dot ( r, r ); // 5 flops float invDist = inversesqrt ( dist + SOFTENING ); //2 flops float invDistCube = invDist * invDist * invDist; //2 flops float s = q * q i * invDistCube; //2 flops // accumulate effect of all particles acc += s * r; //6 flops } Метод расчёта Нижний НовгородIntel Winter School – На одну вызов функции ускорения 20 N flops На одну итерацию по методу Эйлера 20 N 2 flops
14 Число операций растёт пропорционально квадрату количества частиц: Метод расчёта Нижний НовгородIntel Winter School – Число частиц2K = K = K = K = 2 14 Число операций (MFLOPS) 83,89335,541342,185368,7
15 Рассчитываем количество тактов на каждую арифметическую операцию for ( int i = 0; i < N; ++i ) { // Calculate acceleration caused by particle j on particle i float3 r = p - p i ; //3 cycles float square = dot ( r,r ); // 5 cycles float invDist = inversesqrt ( distSqr + SOFTENING ); //5 cycles float invDistCube = invDist * invDist * invDist; //2 cycles float s = q * q i * invDistCube; //2 cycles // accumulate effect of all particles acc += s * r; //3 cycles } Всего: 20 тактов Теоретическая оценка производительности на GPU Нижний НовгородIntel Winter School –
16 Технические характеристики графического ускорителя NVIDIA GeForce 8800 GTS: Теоретическая оценка производительности на GPU Нижний НовгородIntel Winter School – Число потоковых процессоров Ширина шины памяти Частота потоковых процессоров Частота памяти реальная / эффективная бит500 / 1200 МГц800 МГц / 1900 МГц
17 Чистое время вычислений [Число ядер] [Частота процессора] [Число частиц] [Число тактов на частицу] итераций в секунду Теоретическая оценка производительности на GPU Нижний НовгородIntel Winter School –
18 Рассчитываем количество тактов: for ( int i = 0; i < N; ++i ) { // Calculate acceleartion caused by particle j on particle i float3 r = = p - p i ; //1 cycles float dist = dot ( r, r ); //2 cycles float invDist = inversesqrt ( dist + SOFTENING ); //4 cycles float invDistCube = invDist * invDist * invDist; //2 cycles float s = q * q i * invDistCube; //2 cycles // accumulate effect of all particles acc += s * r; //2 cycles } Всего: 13 тактов Теоретическая оценка производительности на CPU Нижний НовгородIntel Winter School –
19 Технические характеристики CPU Intel Core 2 Duo: Теоретическая оценка производительности на CPU Нижний НовгородIntel Winter School – Число ядерЧастота ядра МГц
20 Чистое время вычислений: [Число ядер] [Частота ядра] [Число частиц] [Число тактов на частицу] × × кадров в секунду Теоретическая оценка производительности на CPU Нижний НовгородIntel Winter School –
21 Часть 4 Исследование фактической производительности OpenCL и OpenMP
22 Фактическая оценка производительности Нижний НовгородIntel Winter School – Компилятор Численный метод Технология Итераций в сек (FPS) Производит. (GFLOPS) Intel C/C++ Compiler ЭйлераOpenCL Intel C/C++ Compiler Рунге-Кутты OpenCL Intel C/C++ Compiler ЭйлераOpenMP Intel C/C++ Compiler Рунге-КуттыOpenMP0.66.4
23 Фактическая оценка производительности Нижний НовгородIntel Winter School – Компилятор Численный метод Технология Итераций в сек (FPS) Производит. (GFLOPS) MS C/C++ Compiler ЭйлераOpenCL MS C/C++ Compiler Рунге-КуттыOpenCL MS C/C++ Compiler ЭйлераOpenMP MS C/C++ Compiler Рунге-КуттыOpenMP0.11.0
24 Фактическая оценка производительности Нижний НовгородIntel Winter School – OpenCL и OpenMP 16K частиц на CPU (Intel Compiler 11) 1.2 итераций в секунду = 6.4 GFLOP / sec
25 Часть 5 Визуализация результатов средствами OpenGL
26 Результаты Нижний НовгородIntel Winter School –
27 Вопросы
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.