ИСПОЛЬЗОВАНИЕ GPU ПРИ РЕШЕНИИ НЕСТАЦИОНАРНОГО УРАВНЕНИЯ ШРЕДИНГЕРА СРЕДСТВАМИ MATLAB - Студенческий научный форум

V Международная студенческая научная конференция Студенческий научный форум - 2013

ИСПОЛЬЗОВАНИЕ GPU ПРИ РЕШЕНИИ НЕСТАЦИОНАРНОГО УРАВНЕНИЯ ШРЕДИНГЕРА СРЕДСТВАМИ MATLAB

Колыванов К.А. 1, Лукина Е.Ю. 1, Парубец В.В. 1
1Томский Политехнический Университет
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
В последнее время вычислительные мощности графических процессоров (GPU) значительно выросли, в связи с чем, возможность использования этих мощностей для вычислительных задач общего назначения становится все более заманчивой. Сегодня мы можем наблюдать большую активность в данном направлении. Таким образом, задача использования графического процессора для решения математических задач является новой и представляет интерес ее реализации [1].

Рассмотрим решение известной квантовомеханической задачи об описании движения одномерной частицы. Для этого, как известно, необходимо найти комплексную волновую функцию , являющуюся решением нестационарного уравнения Шредингера:

 

(1)

где - постоянная Планка, - масса частицы. Величина определяет вероятность нахождения частицы в момент времени в элементе "объема" в точке . Вероятностная интерпретация означает, что следует использовать нормированные волновые функции, т.е. функции, удовлетворяющие условию.

 

(2)

Функции, удовлетворяющие условию нормировки (2), отличны от нуля в некоторой области конечной ширины и равны нулю вне данной области, поэтому говорят, что функция описывает волновой пакет, который характеризуется координатой центра, энергией и шириной. На основании приведенных выше рассуждений необходимо описать эволюцию во времени волнового пакета с известными в момент времени (координатой центра пакета, шириной пакета, энергией пакета) при падении на потенциальный барьер заданной формы [2].

Рассматривалась возможность взаимодействия MATLAB и GPU, для ускорения вычислений, производимых в среде MATLAB [3]. Написаны две программы, представляющие собой решение нестационарного уравнения Шредингера. Одна из них находит решение с использованием центрального процессора, другая – с использованием графического.

В таблице 1 приводится часть кода скрипт-файлов, в которых выполняется вызов двух основных функций. Различия между GPU и CPU версиями выделены полужирным начертанием.

Таблица 1

Версия GPU

Версия CPU

Np(1, Npoints) = 1

k_0(1, Npoints) = 1

x_0(1, Npoints) = -100

sigma(1, Npoints) = 2

xb = zeros(1, Npoints

A_(1, Npoints) = 60

Nb(1, Npoints) = 3

v_0(1, Npoints) = 1.5

Norm_Coeff(1, Npoints) = 1;

gx = gpuArray(x);

L = zeros(1, Npoints);

gV = gpuArray(L);

gPsi = gpuArray(L);

gV = arrayfun(@Barrier,x,v_0, xb, A_, Nb);

gPsi = arrayfun(@Package_Norm, x, k_0, x_0, sigma, Norm_Coeff, Np);

Np = 1;

k_0 = 1;

x_0 = -100;

sigma = 2;

xb = 0;

A = 60;

Nb = 3;

v_0 = 1.5;

Norm_Coeff = 1;

parfor j = 1:Npoints

V(j) = Barrier(x(j), v_0, xb, A, Nb);

end

parfor j = 1:Npoints

Psi(j) = Package_Norm(x(j), k_0, x_0, sigma, Norm_Coeff, Np);

end

Следует отметить, что функции, предназначенные для GPU, незначительно отличаются от исходных из-за особенностей работы с графическим процессором. Так как искомая функция в общем случае комплексная, то удобно представить графики трех зависимостей: , и . Причем последний график, как говорилось ранее, будет представлять вероятность того, что частица находится в заданном объеме. Ниже представлены графики данных зависимостей в начальный момент времени .

Рис. 1. Действительная (слева) и мнимая (справа) часть волновой функции в момент времени

Рис. 2. Квадрат модуля волновой функции и потенциальный барьер в момент времени

Обработка результатов проводилась на персональном компьютере со следующими характеристиками:

Таблица 2

Системные характеристики:

Производитель

Acer

Модель

Aspire 5750G

Оценка

4,6 Индекс производительность Windows

Процессор

Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz

Установленная память (ОЗУ)

4,00 Гб (3,85 Гб доступно)

Тип системы

64-разрядная операционная системы

Видеокарта

NVIDIA GeForce GT 630M

Тестирование быстродействия осуществлялось с помощью встроенной функции MATLAB profiler. Так была измерена скорость выполнения двух основных функций, представленных в таблице 1. Например, при задании 500 начальных точек, были получены следующие результаты:

Рис. 3. Время, затраченное на работу программы при использовании GPU

Рис. 4. Время, затраченное на работу программы без использования GPU

Результаты зависимости времени работы программы от количества обрабатываемых точек с использованием GPU и без представлены на рис. 5.

Рис. 5. Сравнение скорости выполнения программы.

Можно сделать вывод, что для относительно малого числа точек, в данном случае до 5000, не имеет смысла реализовывать алгоритм на GPU, так как время работы с данными для двух процессоров практически одинаковое. Однако при дальнейшем увеличении количества точек, скорость работы программы с использованием GPU становится в разы быстрее, чем без его использования. Так, например, при использовании 500000 точек, для их обработки CPU потребовалось 270,73 секунд, в то время как программа с использование GPU затратила на их обработку всего лишь 8,53 секунды. Это говорит о том, что скорость работы программы на GPU в 31,74 раза выше. Таким образом, при решении вычислительных задач, важно обращать внимание на объемы входных данных, поскольку значительный прирост в скорости можно достичь только при большом количестве исходных данных. Так же необходимо учитывать тот факт, что реализацию некоторых функции для GPU придется писать собственноручно из-за ограниченности встроенных функций для GPU. Можно говорить о том, что GPU и MATLAB действительно дают возможность производить сложные научные вычисления и при этом не используют огромные компьютерные мощности.

ЛИТЕРАТУРА

  1. NVIDIA. [Электронный ресурс], режим доступа - http://www.nvidia.ru, свободный.

  2. EXPonenta.ru, Образовательный математический сайт. [Электронный ресурс], режим доступа - http://www.exponenta.ru/educat/systemat/porshnev/shred1/main.asp, свободный.

  3. ТУСУР ТОР, Кафедра телекоммуникаций и основ радиотехники, Использование технологии CUDA для ускорения пакета MATLAB. [Электронный ресурс], режим доступа - http://me.tusur.ru/index.php?option=com_content&view=article&id=87:cudst&catid=59:grkat&Itemid=59, свободный.

  4. Многофункциональный сайт. [Электронный ресурс], режим доступа - http://habrahabr.ru/post/119892/, свободный.

Просмотров работы: 1818