Эффективное программирование численных моделей полупроводниковых приборов

Автор: · Дата: 4 Февраль 2012 · Пока нет комментариев

Павленко Д.В. Эффективное программирование численных моделей полупроводниковых приборов / Павленко Д.В., Прохоров Э.Д., Белецкий Н.И. //19-ая Междуародная конференция “СВЧ-техника и телекоммуникационные технологии” (КрыМиКо’2009), Севастополь, 14 – 18 сентября. – с. 111 – 112

Эффективное программирование численных моделей полупроводниковых приборов

Павленко Д.В., Прохоров Э.Д., Белецкий Н.И.

Харьковский национальный университет имени В.Н. Каразина, пл. Свободы 4, Харьков, 61077

Аннотация – Рассматриваются методы и инструментарий для распараллеливания вычислений, проводимых при моделировании динамики процессов в полупроводниковых приборах, с целью их эффективного выполнения на современных многопроцессорных компьютерах. Описываемые подходы опробованы в задачах динамического двумерного анализа диодов Ганна с учетом ударной ионизации, межзонной рекомбинации и температурных эффектов с помощью многосеточных алгоритмов (FMG, FAS, MLAT).

Введение

Численное моделирование полупроводниковых приборов является важным источником информации о физике протекающих в них процессов. Современные вычислительные машины делают доступным моделирование структур, чрезвычайно сложных для анализа иными методами. К примеру, существенный интерес представляют исследования режимов работы диодов Ганна, близких к критическим, например, с развитием ударной ионизацией в движущемся домене сильного поля [1,2]. Приведём практические сведения и рекомендации, следующие из опыта, полученного при программировании математических моделей этих приборов.

Основная часть

Успешное проведение  численного моделирования полупроводниковых приборов произвольной геометрии и структуры сопряжено с преодолением ряда серьезных практических трудностей, а именно: 1) возможны большие геометрические размеры моделируемой области прибора, 2) при этом, характерно «внезапное» появление значительных градиентов концентрации носителей заряда и напряженности  электрического поля из-за развития ударной ионизации и температурной зависимости свойств полупроводников, что приводит к резкому росту ошибки вычисления вплоть до потери физичности получаемых решений; 3) невозможно пренебречь теми или иными процессами для упрощения уравнений модели, что является ключевым фактором достижения достаточной производительности расчетов многих программ, предназначенных для исследования узкого класса приборов.

Математически задача моделирования сводится к: 1) решению на вычислительной сетке системы линеаризованных дифференциальных уравнений, описывающих процессы переноса заряженных частиц и тепла в объеме полупроводника, 2) вычислению распределений и динамики зарядов методом частиц по известным механизмам их релаксации, либо с привлечением методов квантовой физики в отдельных областях (лавинного умножения, туннелирования) и 3) сопряжение получаемых решений путем исполнения соответствующих граничных условий.

В силу специфики, разработку компьютерных программ моделирования, как правило, выполняет ученый, решающий физическую задачу. Лучшими устойчивыми численными методами для обсчета ресурсоемких задач, дающими возможность естественной параллелизации вычислений, и применяемыми сейчас в мировой практике, являются многосеточные методы: арифметический многосеточный AMG, полный многосеточный FMG и т.н. техника многоуровневой адаптации MLAT, обычно с использованием схемы полной аппроксимации FAS [3].

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

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

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

Менеджер потоков (планировщик задач) – еще один важный объект, осуществляющий функции распределения сеток по вычислительным потокам, запуск и синхронизацию выполнения потоков, контроль равномерности вычислительной нагрузки на каждое ядро (процессор). Излишнее число одновременно выполняемых потоков приводит к существенному снижению результирующей производительности из-за накладных расходов операционной системы по переключению потоков, недостаточное – к неполной загрузке процессоров. Эмпирически, оптимальным количеством потоков,  одновременно выполняемых каждым ядром процессора, оказывается 2-4. Количество же генерируемых сеток задачи, вычисления на которых можно выполнять одновременно, зачастую гораздо больше (15-200). С точки зрения максимизации производительности выгоднее всего реализовать менеджер потоков, специфический для данной вычислительной задачи. Впрочем, такой подход требует углубленных знаний системного программирования, и не всегда оправдан. Если сравнительное снижение производительности программы на 30% и более не представляется критичным, возможно применение библиотек и технологий, хорошо зарекомендовавших себя для упрощения сложного процесса разработки многопоточных приложений. Даже в этом случае вычисления будут выполнены в разы быстрее по сравнению с однопотоковой версией. К подобным инструментам относятся Intel TBB [4] и OpenMP [5].

Отметим, что максимальная производительность становится достижимой только при соответствующем сочетании аппаратного и программного обеспечения [6]. С этой точки зрения наилучшим образом зарекомендовали себя продукты корпорации Intel.

При выборе языков разработки высокопроизводительных вычислительных приложений ассортимент невелик: Fortran либо C/C++. Универсальные математические пакеты (MathLab), кроссплатформенные языки (Java), и все продукты на основе .net (С#, J#, VB) неприменимы для решения рассматриваемого класса задач вычислительной математики в силу непозволительных накладных расходов.  С++ является современным, гибким объектно-ориентированным языком, позволяющим с максимальной прозрачностью, вплоть до уровня аппаратных ресурсов, выполнять реализацию вычислительных алгоритмов, что и определило его использование нами как основного языка разработки. Отметим, что быстродействие получаемой программы зависит не только от выбора языка программирования, но и от применяемого компилятора. Так, компилятор фирмы Embarcadero Technologies Inc (ранее Borland) создает медленные программы и не поддерживает новейшие наборы дополнительных инструкций процессоров (IDE CodeGear 2009). Эффективный код генерирует компилятор корпорации Microsoft (VisualStudio 2008), но только при наличии навыков ручной оптимизации текстов исходных программ. Лидером по автоматической оптимизации машинного кода является компилятор концерна Intel. Intel® C++ Compiler позволяет обеспечить максимальную производительность приложений на последних процессорах Intel, которая достигается благодаря дополнительным возможностям оптимизации. Межпроцедурная оптимизация (IPO) дает возможность генерировать более быстрый код за счет линеаризации, а широкие возможности оптимизации операций с плавающей точкой (главным образом – векторизация вычислений) позволяют разрабатывать приложения, требующие высокой скорости счета.

Полезным инструментом разработчика является анализатор производительности Intel® Vtune, собирающий и отображающий данные о производительности программы, что позволяет получить полную и наглядную информацию о производительности кода.

Intel Threading Building Blocks  – кроссплатформенная библиотека для параллельного программирования, реализованная на языке С++ [7]. Библиотека является коллекцией шаблонов классов и функций для параллельного программирования. В библиотеке реализованы параллельные алгоритмы: for, reduce, do, scan, while, pipeline, sort; параллельные контейнеры: вектор, очередь, хеш-таблица; масштабируемые распределители памяти; мьютексы; планировщик задач.

OpenMP (Open Multi-Processing) это набор директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с разделяемой памятью на языках C, C++ и Fortran. OpenMP поддерживается многими коммерческими компиляторами. Visual C++ 2005 и 2008 поддерживает OpenMP в редакциях Professional и Team.

Статический анализатор кода VivaMP предназначен для разработчиков параллельных приложений, построенных  с  использованием технологии OpenMP.

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

Заключение

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

Список литературы

  1. Prokhorov E.D., Pavlenko D.V. Simulation of broadband microwave oscillations in the Gunn diode sources involving impact ionization.- International Conference on Mathematical Methods in Electromagnetic Theory.- 2006. Материалы конференции с.324 – 325.
  2. Павленко Д.В. Прохоров Э.Д. Спектры колебаний тока диодов Ганна с ударной ионизацией в движущихся доменах.- КрыМиКо 2006, Севастополь. Материалы конференции т.1, с.228 – 229.
  3. S. Mijalkovic, W. Joppich. Multigrid method for Process Simulation. Series “Computational Microelectronics” edited by S. Selberherr, Springer Verlag, New York, Vienna, 1993.
  4. www.intel.com
  5. openmp.org
  6. Working Group WG 21 of Subcommittee SC 22. Technical Report on C++ Performance. ISO/IEC TR 18015:2006(E).
  7. Reinders, James. Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism.- Sebastopol: O’Reilly Media, ISBN 978-0-596-51480-8, 2007.

Effective programming of semiconductor devices numerical models

Abstract – A numerical simulation of semiconductor devices is an important information source about physics of processes flowing in them. Modern computers make available the design of structures, extraordinarily difficult for an analysis by other methods. For example, substantial interest is presented in researches of the Gunn diodes operation modes near to critical, for example, with impact ionization development  in the strong field motive domain [1,2]. We bring practical information and recommendations, followings from experience got while programming of mathematical models of these devices.

Knowledge of the programm optimization methods and taking into account the features of processors, application of modern development instruments in join with introduction of multigrid methods in the tasks of numeral modelling of semiconductor devices allows to solve effectively the large dimension problems, with a maximal utillize the resources of modern multicore processors, and to combine the different levels of the physical detailing in the single numerical model.

Скачать тезисы доклада в pdf

Cкачать презентацию в pdf

Популярность: 23%

Рубрика: Публікації ·  



Оставить комментарий или два

Пожалуйста, зарегистрируйтесь для комментирования.