Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 02.06.2014 | Доступ: свободный | Студентов: 183 / 28 | Длительность: 04:58:00

Самостоятельная работа 1: Оптимизация вычислительно трудоемкого программного модуля для архитектуры Intel Xeon Phi. Метод Монте-Карло

< Лекция 2 || Самостоятельная работа 1: 12345 || Самостоятельная работа 2 >

Алгоритм Монте-Карло моделирования переноса излучения

Общее описание задачи

Рассматривается объект в трехмерном пространстве, состоящий из набора слоев. Каждый слой описывает определенный тип биологической ткани, обладающей набором оптических характеристик. Оптические характеристики постоянны в рамках слоя. Например, если моделировать перенос излучения в голове человека, то в ней можно выделить такие слои, как кожа головы, жировая ткань, череп, цереброспинальная жидкость, серое и белое вещество головного мозга ( рис. 3.1).

Двумерное сечение слоев головы человека

увеличить изображение
Рис. 3.1. Двумерное сечение слоев головы человека

Каждый слой помимо оптических параметров характеризуется набором границ. Границы слоя описываются в виде одной или нескольких поверхностей в трехмерном пространстве. Каждая из поверхностей состоит из набора треугольников.

Источник излучения представляет собой бесконечно тонкий луч фотонов и описывается направлением и положением в трехмерном пространстве.

Для решения задач ОДС было введено в рассмотрение понятие детектора как некоторой замкнутой области на поверхности исследуемого объекта, которая способна улавливать проходящие через нее фотоны. В данной лабораторной работе используются прямоугольные детекторы.

Идея метода Монте-Карло в данной задаче состоит в случайной трассировке набора фотонов в биоткани. Фотоны объединяются в пакеты, каждый пакет обладает весом. Далее понятия "фотон" и "пакет фотонов" будут отождествляться. Начинает движение пакет фотонов от источника излучения. Далее на каждом шаге трассировки случайным образом определяется его направление и величина смещения, определяется поглощенный вес. Моделирование пакета завершается либо при его поглощении средой (когда вес пакета становится меньше минимального), либо если он вылетает за границы исследуемого объекта ( рис. 3.2).

Трассировка фотонов в биоткани

Рис. 3.2. Трассировка фотонов в биоткани

Так как рассматриваются обычно многослойные биоткани, на каждом шаге трассировки фотона необходимо дополнительно проверять, не пересекает ли траектория его движения границу текущего слоя. В данной лабораторной работе для этого используется алгоритм, основанный на переборе всех треугольников, из которых строится поверхность границы, и поиске пересечения с каждым из этих треугольников. Более эффективным подходом здесь будет поиск пересечений с помощью BVH деревьев.

Особенностью данного алгоритма является полная независимость процесса трассировки различных фотонов друг от друга. Соответственно, каждый параллельный поток может выполнять трассировку своего набора фотонов, и теоритически алгоритм является идеально распараллеливаемым.

Результатами моделирования являются:

  • интенсивность рассеянного назад излучения на детекторах (сигнал на детекторах);
  • фотонные карты траекторий для каждого детектора (для фотонов, попавших из источника на детектор);
  • общая карта траекторий (для всех фотонов).
Двумерное сечение фотонной карты траекторий для детектора, расположенного на расстоянии 30 мм от источника излучения (источник находится в начале координат, детектор – справа от него)

Рис. 3.3. Двумерное сечение фотонной карты траекторий для детектора, расположенного на расстоянии 30 мм от источника излучения (источник находится в начале координат, детектор – справа от него)

На рис. 3.3 показано двумерное сечение фотонной карты траекторий. Рассматриваются траектории фотонов, попавших из источника излучения на детектор. Источник находится в начале координат, детектор – справа от него на расстоянии 30 мм. Цветовая шкала используется для отображения частоты попадания фотонов в определенную подобласть. Чем светлее цвет – тем больше фотонов попало в данную подобласть. Цветовая шкала (белый – желтый – красный – черный) является логарифмической.

Для хранения фотонных карт используется равномерная трехмерная сетка, в ячейках которых содержится число посещений фотоном данной подобласти пространства ( рис. 3.4).

Сетка для хранения информации о фотонных картах траекторий

увеличить изображение
Рис. 3.4. Сетка для хранения информации о фотонных картах траекторий

Общее описание базовой версии программы

Базовая версия алгоритма, используемая в данной лабораторной работе, состоит из трех компонентов:

  • Библиотеки для чтения XML файлов TinyXML [http://www.grinninglizard.com/tinyxml/];
  • Библиотеки, содержащей набор функций для трассировки фотона в среде (xmcml);
  • Исполняемого модуля, в задачи которого входит чтение параметров задачи, параллельный запуск процесса моделирования и запись результатов работы программы в файл (xmcmlLauncher).

Для компиляции программы в операционных системах семейства Windows следует воспользоваться проектом Visual Studio 2010. При работе на ОС Linux компиляция осуществляется скриптами cpu_make.sh (компиляция для CPU) и mic_make.sh (компиляция для Intel Xeon Phi в режиме работы только на сопроцессоре).

Входными файлами программы являются:

  • XML файл с описанием входных параметров задачи. В качестве примера к программе прилагается файл brain_915.xml, описывающий биоткани головы человека при длине волны источника излучения в 915 нм.
  • SURFACE файл с описанием геометрии границ биотканей. В качестве примера к программе прилагается файл planes.surface. В данном случае реальная геометрия тканей головы человека аппроксимируется набором параллельных плоскостей. Файл имеет бинарный формат.

Для исследования производительности и проведения оптимизации программы имеет смысл варьировать только следующие параметры задачи (содержатся в XML файле):

  • NumberOfPhotons – количество трассируемых фотонов. От этого параметра напрямую зависит время работы программы. Зависимость линейна.
  • Area.PartitionNumber – содержит количество разбиений сетки по осям X, Y и Z. Сетка используется для хранения фотонных карт траекторий. Чем больше ее размер, тем больше памяти необходимо программе для работы.

При запуске программы используются следующие параметры командной строки (запуск программы без параметров приводит к выводу соответствующей справки):

xmcmlLauncher.exe 
–i <ИмяXMLФайла>.xml
-s <ИмяSURFACEФайла>.surface
-o <ИмяФайлаСРезультатамиМоделирования>.mcml.out
–nthreads <КоличествоПараллельныхПотоков>

Пример запуска программы приведен на рис. 3.5.

Запуск программы xmcmlLauncher для ОС Windows

увеличить изображение
Рис. 3.5. Запуск программы xmcmlLauncher для ОС Windows

Результатом работы программы является бинарный файл *.mcml.out, который содержит как фотонные карты траекторий, так и данные о сигналах на детекторе.

Для просмотра результатов моделирования следует использовать программу mcmlVisualizer. Программа использует .NET Framework 4.0 и предназначена для работы на ОС Windows.

Помимо визуализации результатов, данная программа позволяет проводить сравнение двух *.mcml.out файлов на предмет их совпадения. Найденные ошибки с указанием места выводятся на экран. Отметим, что для проверки корректности полученных после оптимизации результатов следует выполнять сравнение *.mcml.out файлов. Обычное побитовое сравнение не всегда является показательным, поэтому для этих целей лучше использовать предложенную программу.

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

< Лекция 2 || Самостоятельная работа 1: 12345 || Самостоятельная работа 2 >