Научная статья на тему 'ПРИМЕНЕНИЕ СОВРЕМЕННЫХ ПРОГРАММНЫХ И АППАРАТНЫХ СРЕДСТВ ДЛЯ МОДЕЛИРОВАНИЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ В АГРОИНЖЕНЕРИИ'

ПРИМЕНЕНИЕ СОВРЕМЕННЫХ ПРОГРАММНЫХ И АППАРАТНЫХ СРЕДСТВ ДЛЯ МОДЕЛИРОВАНИЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ В АГРОИНЖЕНЕРИИ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
120
24
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ЧИСЛЕННОЕ МОДЕЛИРОВАНИЕ / СИСТЕМЫ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Юдаев Юрий Алексеевич, Кожанова Татьяна Вячеславовна, Юдаев Максим Юрьевич

В статье обсуждаются особенности численных методов и особенности современных программных и аппаратных средств. Целью данной работы является рассмотрение особенностей применения современных программных и аппаратных средств для моделирования с помощью ЭВМ. Традиционные методики разработки программного обеспечения обычно используют ресурсы системы не очень эффективно. Значительную часть времени вычислительная система простаивает. Знание архитектуры платформ помогает разработать более быструю и качественную реализацию того или иного алгоритма. Разница в производительности оптимизированной и неоптимизированной версий может составлять сто и более процентов. Основное внимание в статье обращено на системы с одним или несколькими процессорами и операционными системами Windows или Linux, как основных платформ для САПР. Приведен обзор основных САПР, использующихся при моделировании электротехнических процессов в агроинженерии: AutoCAD, AutoCAD LT, SolidWorks, ANSYS, bCAD, 3D Studio VIZ, Inventor. Приводятся важные особенности реализации алгоритмов численного моделирования физических процессов на современных ЭВМ. Обсуждаются методы эффективного использования массивов целых чисел и массивов чисел с плавающей запятой, наборы расширения базовых инструкций современных процессоров, методика разработки многопоточных приложений. Для увеличения скорости обработки чисел с плавающей запятой необходимо использовать специальные наборы инструкций процессора 3DNow! или SSE. Для редактора конструкции целесообразно использовать форматы DXF или DWG. Проведено сравнение различных методов оптимизации и доказана целесообразность их применения для моделирования технологических процессов, связанных с численным решением уравнений Пуассона, Лапласа, Фурье.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Юдаев Юрий Алексеевич, Кожанова Татьяна Вячеславовна, Юдаев Максим Юрьевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

THE USE OF MODERN PROGRAMS AND HARDWARES TO MODEL TECHNOLOGICAL PROCESSES IN AGRO ENGINEERING

The article presents the features of numerical methods and characteristics of modern software and hardware. The purpose of this paper is to examine the features using modern hardware and software to simulate with the help of the computer. Traditional methods of software development commonly use the system resources not very efficiently. The computer is idle for most time. Knowing the platforms structure helps to develop a more rapid and high quality implementation of an algorithm. The difference in performance-optimized and non-optimized versions can be one hundred percent or more. We have paid most attention to the system with one or more processors and operating systems Windows or Linux being the main platforms for CAD. We have provided an overview of major CAD systems used in the simulation of electrical processes in agricultural engineering: AutoCAD, AutoCAD LT, SolidWorks, ANSYS, bCAD, 3D Studio VIZ, Inventor. We have presented important features of applying algorithms for numerical modeling of physical processes at modern computers. We have discussed methods of the integer array effective use and floating point numbers, a set of widening basic instructions of modern processors and multithreaded applications development methodology. To increase the processing speed of floating point numbers one must use a special CPU instruction sets of 3DNow! or SSE processor. For the Editor design is is reasonable to use formats DXF or DWG. We have compared different optimization methods and proved the feasibility of their use for simulating the technological processes connected with the numerical solution of Poisson, Laplace, and Fourier equations.

Текст научной работы на тему «ПРИМЕНЕНИЕ СОВРЕМЕННЫХ ПРОГРАММНЫХ И АППАРАТНЫХ СРЕДСТВ ДЛЯ МОДЕЛИРОВАНИЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ В АГРОИНЖЕНЕРИИ»

S.160-162.

2. Byshov N.V. JEksperimental'noe issledovanie rezhimov ciklicheskoj sushki pergi v sote [Tekst] / Byshov N.V., Kashirin D.E.// Vestnik Krasnojarskogo gosudarstvennogo universiteta № 5 2012. S.283-285.

3. Byshov N.V. Voprosy jenergosberegajushhej konvektivnoj ciklicheskoj sushki pergi [Tekst] / Byshov N.V., Kashirin D.E.//monografija, Rjazan', 2012.

4. Grigor'ev A.M. /JElementy teorii shnekovyjpressov. - Kazan', 1956-1957. s.72.

5. Gersevanov N.M. / Osnovy dinamiki gruntovoj massy. - M., Strojliteratura, 1937.

6. Ivanenko A.V. / Issledovanie shnekovyj pressov dlja pererabotki vinograda. - M., JEnergija, 1972.

7. Alymov V.T. /Raschjotpressujushhego trakta shnekovogo pressa. - «Trudy instituta zhirov». L., 1970.

8. SHenkel' G.N. / Teorija issledovanija shnekovyj pressov. - M., Nauka 1968.

9. Pat. RF 121501 Rossijskaja Federacija, MPK C05F3/06 SHnekovyj press-granuljator podstilochnogo navoza [Tekst]/Hmyrov V.D., GorelovA.A., Kudenko V.B., Trufanov B.S.; zajavitel'ipatentoobladatel'FGBOU VPO MichGAU -2012124460/13, zajavl. 13.06.2012; opubl. 27.10.2012

10. Hmyrov V.D. JEksperimental'naja ustanovka press-separatora organicheskih udobrenij[Tekst]/Hmyrov V.D., Trufanov B.S., Kudenko V.B., Gorelov A.A.// Vestnik Michurinskogo gosudarstvennogo universiteta №2 2012. - Michurinsk-Naukograd. - S. 110-112.

11. Hmyrov V.D. Kinematicheskoe issledovanie rabochih organov pitatelja- razrushitelja navoza [Tekst] / Hmyrov V.D., Gorelov A.A., Kudenko V.B., Trufanov B.S.// Vestnik Michurinskogo gosudarstvennogo universiteta №1 2011. - Michurinsk-Naukograd. - S. 185-189.

УДК 519.87

ПРИМЕНЕНИЕ СОВРЕМЕННЫХ ПРОГРАММНЫХ И АППАРАТНЫХ СРЕДСТВ ДЛЯ МОДЕЛИРОВАНИЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ В АГРОИНЖЕНЕРИИ

ЮДАЕВ Юрий Алексеевич, д-р техн. наук, профессор кафедры электроснабжения, yu.yudaev@ mail.ru

КОЖАНОВА Татьяна Вячеславовна, аспирантка кафедры электроснабжения, t.vk@mail.ru

ЮДАЕВ Максим Юрьевич, аспирант кафедры электроснабжения, zumbat@mail.ru. Рязанский государственный агротехнологический университет имени П.А. Костычева,

В статье обсуждаются особенности численных методов и особенности современных программных и аппаратных средств. Целью данной работы является рассмотрение особенностей применения современных программных и аппаратных средств для моделирования с помощью ЭВМ. Традиционные методики разработки программного обеспечения обычно используют ресурсы системы не очень эффективно. Значительную часть времени вычислительная система простаивает. Знание архитектуры платформ помогает разработать более быструю и качественную реализацию того или иного алгоритма. Разница в производительности оптимизированной и неоптимизированной версий может составлять сто и более процентов. Основное внимание в статье обращено на системы с одним или несколькими процессорами и операционными системами Windows или Linux, как основных платформ для САПР. Приведен обзор основных САПР, использующихся при моделировании электротехнических процессов в агроинженерии: AutoCAD, AutoCAD LT, SolidWorks, ANSYS, bCAD, 3D Studio VIZ, Inventor. Приводятся важные особенности реализации алгоритмов численного моделирования физических процессов на современных ЭВМ. Обсуждаются методы эффективного использования массивов целых чисел и массивов чисел с плавающей запятой, наборы расширения базовых инструкций современных процессоров, методика разработки многопоточных приложений. Для увеличения скорости обработки чисел с плавающей запятой необходимо использовать специальные наборы инструкций процессора 3DNow! или SSE. Для редактора конструкции целесообразно использовать форматы DXF или DWG. Проведено сравнение различных методов оптимизации и доказана целесообразность их применения для моделирования технологических процессов, связанных с численным решением уравнений Пуассона, Лапласа, Фурье.

Ключевые слова: численное моделирование, многопоточные приложения, системы автоматизированного проектирования.

Введение

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

© Юдаев Ю. А.,Кожанова Т.

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

В., Юдаев М.Ю.2015г._

и многомерных массивов. Существующие САПР выполняют действия с массивами медленно. Поэтому необходимо учитывать не только особенности численных методов, но и особенности современных программных и аппаратных средств, так как эти особенности могут существенно влиять на точность и скорость моделирования физических процессов, а также на возможность применения на той или иной платформе. Целью данной статьи является рассмотрение особенностей применения современных программных и аппаратных средств для моделирования с помощью ЭВМ. Учитывая тот факт, что расчет всех необходимых значений может занимать несколько дней или недель даже на мощных вычислительных системах, качество реализации алгоритмов численного моделирования является очень важным с практической точки зрения. Традиционные методики разработки программного обеспечения обычно используют ресурсы системы не очень эффективно, как правило, задействовано менее половины всех возможностей оборудования. Таким образом, значительную часть времени вычислительная система простаивает. Знание архитектуры платформ, на которых планируется производить вычисления, помогает разработать более быструю и качественную реализацию того или иного алгоритма, при этом разница в производительности, оптимизированной и неоптимизированной версии, может составлять сто и более процентов. Основное внимание в данной статье сделано на системы с одним или несколькими процессорами и операционными системами Windows или Linux, как основных платформ для САПР.

Использование современных САПР

При разработке программ для моделирования, например, электрических, магнитных или тепловых полей (уравнения Пуассона, Лапласа, Фурье) необходимо наличие качественного редактора конструкции. Создание собственного редактора конструкции может потребовать достаточно много сил и времени. В качестве примера можно привести SolidWorks [1] или AutoCAD [2] для создания трехмерного редактора, для которых потребуется несколько лет работы квалифицированного программиста. Также стоит отметить, что собственный редактор может отличаться от общепринятых норм. Хотя имеются и положительные стороны такого решения, а именно независимость от продуктов сторонних разработчиков.

Для решения проблемы создания редактора конструкции можно использовать форматы файлов, поддерживаемые нужными САПР или распространенные геометрические форматы. К распространенным форматам можно отнести DXF или DWG, которые поддерживаются многими распространенными САПР (табл.1). Описание формата DXF можно найти в документе на веб-странице [3], а готовую реализацию класса для работы с ним на странице [4]. Описание других форматов, используемых в САПР, можно найти на веб-странице [5]. Расширенный список, более 50 различных систем CAD/CAM/CAE/GIS, с кратким описанием и ссылками на сайты их разработчиков, а также текущее

распределение влияния на рынок компаний-разработчиков этих САПР и систем автоматизированной подготовки производства размещены на вебстранице [6].

Таблица 1 - Различные САПР и поддерживаемые ими форматы

САПР Поддерживаемые форматы

AutoCAD, AutoCAD LT, Inventor DXF, DXB, IGES, EPS, WMF, DWG, HPGL

SolidWorks IGES, VDAFS, STEP, Parasolid, ACIS, STL, VRML, DXF, DWG, Pro/ ENGINEER, CADKEY, Unigraphics, Solid Edge, Inventor, AutoCAD, MDT, IDF, PDF

ANSYS STEP, ACIS, UG, Pro/E, CATIA, CADDS, IGES, SAT, Parasolid, SolidWorks, AutoCAD, SolidEdge, Microstation, WMF, EMF, BMP, TIFF, JPEG, HPGL, HPGL2, EPS, VRML,AVI

bCAD ASC, DXF, WMF, NFF, DWG, 3DS, EPS, HPGL, TGA, JPG, PCX, BMP, GIF, TIFF, FLC, AVI, MPEG

3D Studio VIZ DXF, ASC, 3DS, DWG

Таблица 2 - Различные САПР и их интерфейс программирования

САПР Интерфейс программирования

AutoCAD AutoLISP, C/C++, VBA

AutoCAD LT Нет

bCAD JAVA

3D Studio VIZ C/C++

ANSYS APDL, FORTRAN (Compaq/Digital Visual Fortran 6.0) или C++

SolidWorks Макросы, редактор VBA, поддержка Visual C++

Можно разработать дополнение к существующей САПР и использовать ее графический интерфейс для расчета электромагнитных и тепловых процессов. В качестве примера можно привести COSMOSWorks [7], являющийся дополнением к SolidWorks. Все необходимое для создания дополнений к той или иной САПР обычно можно найти на сайте ее разработчика. Хотя данный подход и предоставляет широкие возможности по интегрированию в среду САПР и использованию ее возможностей, но он ограничивается только данным продуктом. Реализация дополнений к различным САПР сильно отличается по многим параметрам, начиная от используемого языка программиро-

вания (табл. 2) и заканчивая устройством самой среды.

Использование распространенных форматов файлов в собственной разработке или написание дополнений к существующим САПР позволяет разработчику использовать ту среду проектирования, в использовании которой у него есть опыт или какие-то предпочтения, а также дает возможность расширения программного обеспечения сторонним разработчикам.

Особенности численного моделирования

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

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

Для создания эффективной программной реализации работы с массивами необходимо учитывать то, как они размещаются в памяти ЭВМ. При этом существует разница в размещении статических и динамических массивов в памяти. В качестве примера рассмотрим двумерный массив М '1 2

М

4 5 6

7 8 9

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

Примером использования статических массивов может служить расчет электромагнитных или тепловых полей, где вполне возможно осуществлять расчет значений в узлах массива последовательно.

Ячейка 0, 0 = 1 /

Ячейка 0. 1 = 2 /

Ячейка 0. 2 = 3 /

Ячейка 1, 0 = 4 /

Ячейка 1. 1 = ? /

Ячейка 1, 2 = 6 /

Ячейка 2. 0 = 7 /

Ячейка 2, 1 = 8 /

Ячейка 1- 2 = 9 Г

итатическии массив занимает последовательные 9 ячеек памяти (рис.1). Размер ячейки зависит от типа переменной. Обычно используются числа с плавающей запятой двойной точности, размер которых составляет 64 бита. Если необходимо обсчитывать ячейки массива последовательно, то статический массив - это лучший вариант. В данном случае можно использовать указатель на начало массива и увеличивать его на единицу для перехода к следующей ячейке. Подобный подход может увеличить скорость обращения к ячейкам массива на 20%-100% за счет эффективного использования сверхоперативной памяти (кэш), буферов чтения/записи, предвыборки процессором, сокращения времени расчета адреса и того, что подсистема памяти оптимизирована для последовательного доступа к ее ячейкам. Так как операции обращения к ячейкам массива занимают существенную часть времени выполнения расчета,

Рис. 1 - Размещение в памяти ЭВМ статического массива

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

Исходные тексты всех дальнейших примеров приведены на языке программирования C++. Для их компиляции использовался Microsoft C/C++ Compiler.

Пример 1 - Расчет распределения потенциала с использованием индексации

const int LOOP_COUNT = 50000;

double arr[ARRÁY_SIZE][ARRAY_SIZE] = {};

for (intj = 0; j< ARRAY_S!ZE;j++)

for (int n = 0; n < LOQP_COUNT; n++)

Sor (int j = 1; j < ARRAY_SIZE - 1; j++)

Пример 2 - Расчет распределения потенциала с использованием указателя

const int LOOP_COUNT= 50000; const int ARRAY_SIZE = 127; double a rr[AR R AY_S IZE] [A R R AY_S IZE] = {}; double* pArrO; double* pArrl = &arr[0][0]; double* pArr2 = pArrl + ARRAY_SIZE * (ARRAY_SIZE- 1);

for (int i = 0; i < ARRAY_SIZE; i++) {

*pArr1++ = 1.0; *pArr2++ = 1.0;

>

for (int n = 0; n < LOOP_COUNT; n++> {

pArrO = &arr[0][0] + 1

pArrl = &arr[0][0] +■ ARRAY_SIZE + 1:

pArr2 = äarr[0][0] +■ ARRAY_SIZE * 2 + 1:

for (int i = 0; i < ARRAY_SIZE- 2; i++) {

for (int j = 0; j < ARRAY_SIZE- 2;j++) {

*pArr1++ = 0.25 * (*(pArr1 + 1) + *(pArr1 -1} + *pArr2++ + *pArr0++);

}

pArrO +=2; pArrl +=2; pArr2 +=2:

}

}

На рисунке 2 приведены диаграммы, демонстрирующие относительное время расчета потенциала с использованием индексации и указателя для двух размерностей массива: 127*127 и 128*128. Как видно из диаграммы, использование указателя вместо индексации в общем случае уменьшает время расчета на 46%. В частном случае (наименьшая разница наблюдается, когда размерность массива является степенью двух) разница менее значительна и составляет 20% (100% - 55% / 69% = 20%). В большинстве случаев размерность массива не является степенью двух, поэтому разница в 46% является более объективной.

адреса трех строк массива. А эти строки в свою очередь содержат значения самого массива. Таким образом, в данном случае мы получаем перерасход памяти, равный 33%; конечно, если массив будет больше, например 100*100, то перерасход будет только 1%. Необходимо учитывать, что размеры ячеек для хранения адреса и значений массива могут отличаться. По умолчанию размер ячеек для хранения адреса соответствует разрядности процессора (для 32-разрядных процессоров - 32-битные ячейки, для 64-разрядных - 64-битные). Если данные располагается в памяти на расстоянии не более 64 килобайт, то возможно использовать 16-битные смещения, это поможет уменьшить занимаемую память и увеличить производительность. Динамический массив занимает не последовательные ячейки памяти, поэтому увеличивается время на доступ к этим ячейкам. Это происходит из-за возможных ошибок предвы-борки при переходе на другую строку, неэффективного использования сверхоперативной памяти (кэш) и расчета адреса ячейки массива в два этапа. Сначала извлекается адрес строки, а потом к нему прибавляется смещение ячейки в строке. Использование динамических массивов имеет и некоторые преимущества, например, если нужно поменять местами строки, то можно просто поменять их адреса и обойтись без физического перемещения данных, таким образом можно выполнять сортировку строк массива или же удалить/ заменить одну или несколько строк. Использование статических массивов в данном случае создает проблемы, такие как перерасход памяти (если взять размер массива с «запасом») или выход за пределы массива (если размер массива меньше необходимого), что приведет к искажению данных или кода приложения. Использование в данном случае связанных списков (динамический массив с указателем на следующую ячейку) решает эти проблемы (примеры 3 и 4).

Рис. 2 - Время расчета потенциала с использованием индексации и указателя

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

Рис. 3 - Размещение в памяти ЭВМ динамического массива

Пример 3 - Классический список const int N_ELEM = 100000;

Coord List* temp List = ciassicList;

ciassicList[i],next = ciassicList* i + 1;

classicl_ist[N_ELEM -1 ].next = NULL; while (tempList = tempList->next)

Пример 4 - Оптимизированный список

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

const int N_ELEM = 100000; double x = 0.0; double у = 0.0; double z = 0.0;

struct CoordListOp {

double* x; double* y; double* z; DWORD* next;

};

CoordListOp optimizedList; DWORD index = 0;

optimizedList.x= new double[N_ELEM]; optimizedList.у = new double[N_ELEM]; optimizedList.z= new double[N_ELEM]; optimizedList.next = new DWORD[N_ELEM];

for (int i =0; i < N_ELEM; H-+) {

optimizedList.x[i] = 0.0; optimizedList.y[ij = 0.0; optimizedList. z[ij = 0.0; optimizedList.next[i] = (DWORD)(i + 1);

}

optimizedList.next[N_ELEM -1] =0;

while (index = optimizedList.next[index]) {

x = optimizedList.x[index]; у = optimizedList. y[indexj; z = optimized List.z[indexj;

}

Использование при расчете оптимизированного списка вместо классического не только избавляет от описанных выше проблем, но и увеличивает производительность в зависимости от количества элементов этого списка (рис. 4). При

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

Рис. 4 - Время обработки классического и оптимизированного списка в зависимости от количества элементов этого списка

При написании кода желательно чередовать математические расчеты и обращения к памяти в определенной пропорции. Это позволит производить параллельно математические расчеты и чтение/запись в память наиболее эффективно (не будет простоя процессора и шины памяти). Так, если время математических вычислений ТМВ, а время обращений к памяти ТОкП, то при последовательной обработке результирующее время будет ТРез = ТМВ + ТОкП. А при параллельной - Трез = ТОкП). При этом если ТМВ ТОкП, то будет

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

Также весьма положительно на быстродействии сказывается выравнивание массива по границе кэш-линейки. Особенно это важно при многократной обработке одних и тех же данных (пример 5).

Пример 5 - Выравнивание статического массива #define ARRAY_SIZE 1024 #define AL!GN_POWER 64 double arr[ARRAY_SIZE + AL!GN_POWER- 1]; double* p = (double*)((&arr[0] + ALIGN_POWER - 1)& ~(AL!GN_POWER-1));

Пример 6 - Деление и умножение int с = 0; int d = 0; int div= 10;

for (int i = 0; i < 1000000; i-i-+} {

d = с / div;

}

for (int i = 0; i < 1000000; i++) {

d = c* div;

}

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

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

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

Деление (рис. 5) выполняется значительно дольше (на 88% или в 8,33 раза). Во многих языках программирования есть операция взятия остатка, которая тоже приводит к целочисленному делению.

: : : ......■■■■.:.....

V,;/. ■;::::. : !; ;/д ::: ; : : : ■ _

■мняин^нн

ШёйРШЩ

_

¡Sil:, nqv кЖП&г.:"уП>! Шш ШШШ4 i Ü ? pH": ::: 1;: ■ V;: ■■

12%

И Деление □ Умножение

Рис. 5 - Время выполнения деления и умножения

Для увеличения скорости операций с целыми числами необходимо использовать специальные наборы инструкций процессора, такие как MMX или SSE.

Команды MMX (Multimedia Extensions - мультимедийные расширения) - дополнительный набор инструкций, выполняющий несколько операций над целыми числами за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Команды технологии MMX работают со следующими типами данных: упакованные байты (восемь байтов в одном 64-разрядном регистре); упакованные слова (четыре 16-разрядных слова в 64-разрядном регистре); упакованные двойные слова (два 32-разрядных слова в 64-разрядном регистре); 64-разрядные слова. Более подробную информацию про MMX можно прочитать в [8].

Наиболее часто при моделировании используются массивы чисел с плавающей запятой одинарной (32 бита) или двойной точности (64 бита). Можно использовать числа внутреннего формата сопроцессора расширенной точности (8о бит). При использовании чисел с плавающей запятой

расширенной точности возникают некоторые проблемы. Первая проблема заключается в том, что данный формат поддерживается только сопроцессором, наборы инструкций 3DNow! и SSE его не поддерживают. Вторая проблема связана с выравниванием: так как 8о битные (10 байт) данные рекомендуется выравнивать по границе 16 байт, то образуются области неиспользуемой памяти

16 - 10 = 6 байт, если данные не выравнивать, то для доступа к ним может потребоваться выполнить два пакетных цикла, что уменьшит производительность. Следует также помнить, что числа с плавающей запятой хранят конечное число знаков (для одинарной точности 7,22 десятичных знака, для двойной - 15,95 десятичных знака, а для расширенной - 19,27) в результате чего возникают ошибки округления. Это особенно важно при расчетах величин требующих большого числа операций. При длительном моделировании накапливается погрешность, которая может приобретать значительные величины, что искажает физический смысл результата. Для устранения этого эффекта приходится вводить специальные корректирующие формулы. Многие рациональные числа (например, 1/3, 1/7 и т.п.) не представимы в виде конечной двоичной дроби, а десятичная дробь 0,1 будет представлена как 9,999999Е-1. Иррациональные числа (например, константы п и e) вообще не представимы в виде конечной последовательности цифр. Также не стоит складывать или отнимать «слишком» большое и маленькое число, например, для числа с одинарной точностью 1000,000 + 0,0000100 = 1000,000. Такая ситуация может возникнуть при расчете приращений какой-либо величины. Для устранения этого эффекта следует отдельно складывать или вычитать «большие» и «маленькие» числа, а в конце вычисления объединять их.

Для увеличения скорости обработки чисел с плавающей запятой необходимо использовать специальные наборы инструкций процессора, такие как 3DNow! или SSE.

Команды 3DNow! - это дополнительное расширение MMX для процессоров AMD, начиная с AMD K6 3D. Хотя это расширение является разработкой AMD, его также интегрировали в свои процессоры IBM, Cyrix и другие. В 3DNow! компания AMD добавила новый тип данных - 32-битные вещественные числа, инструкции для работы с этим типом, а также некоторые инструкции для манипулирования стандартными типами MMX.

Команды SSE (Streaming SIMD Extensions, потоковое SIMD-расширение процессора) - это SIMD (Single Instruction, Multiple Data, Одна инструкция - множество данных) набор инструкций, разработанный Intel. SSE включает в архитектуру процессора восемь 128-битных регистров (от xmm0 до xmm7), каждый из которых трактуется как 4 последовательных значения с плавающей точкой одинарной точности. SSE включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных. Преимущество в производительности достигается в том случае, когда необходимо произвести одну и

80% 60% 40% 20%

ту же последовательность действии над разными данными.

Команды SSE2 (Streaming SIMD Extensions 2, потоковое SIMD-расширение процессора 2) - это SIMD (Single Instruction, Multiple Data, Одна инструкция - множество данных) набор инструкций, разработанный Intel, и впервые представленный в процессорах серии Pentium 4. SSE2 использует восемь 128-битных регистров (от xmm0 до xmm7), включённых в архитектуру x86 с вводом расширения SSE, каждый из которых трактуется как 2 последовательных значения с плавающей точкой двойной точности. SSE2 включает в себя набор инструкций, который производит операции со скалярными и упакованными типами данных. Также SSE2 содержит инструкции для потоковой обработки целочисленных данных в тех же 128-битных xmm регистрах, что делает это расширение более предпочтительным для целочисленных вычислений, нежели использование набора инструкций MMX, появившегося гораздо раньше. Преимущество в производительности достигается в том случае, когда необходимо произвести одну и ту же последовательность действий над большим набором однотипных данных.

Наиболее предпочтительным для реализации алгоритмов численного моделирования является язык программирования C++. Данный язык программирования является промышленным стандартом, который позволяет использовать практически все ресурсы системы, а его оптимизирующие компиляторы - одни из самых качественных среди всех языков программирования. Компиляторы C++ разрабатываются ведущими производителями компьютерного оборудования и программного обеспечения, они существуют для многих операционных систем, например Intel C++ Compiler поддерживает компиляцию под Windows, Linux и Mac OS.

В настоящее время широкое распространение получили также многоядерные процессоры и многопроцессорные системы. Поэтому необходима реализация алгоритмов численного моделирования с использованием многопоточной технологии. На данный момент существует множество средств для создания и тестирования многопоточных приложений. Наиболее простой и одновременно переносимой из этих технологий является OpenMP. Вскоре после своего появления в 1997 году спецификация OpenMP стала промышленным стандартом описания параллелизма для компиляторов. OpenMP реализует метод разветвления/слияния для создания и завершения потоков. При этом необходимо явно указывать начало и конец каждого параллельного фрагмента. Чтобы получить многопоточный исполняемый файл, следует использовать компиляторы с поддержкой этой технологии, указав им на необходимость обработки директив или псевдокомментариев OpenMP. В противном случае директивы OpenMP игнорируются. Это является ключевым преимуществом OpenMP над другими методами параллельного программирования. Этот метод является пошаговым и относительно безопасным. С помощью OpenMP можно

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

Для диагностики производительности приложений можно использовать специальные средства, такие как профилировщики, наиболее мощным из них является Intel VTune. Этот профилировщик позволяет обнаружить «горячие точки» программы и дает советы по различным путям их устранения.

Заключение В статье рассмотрено применение различных САПР и расширение их возможностей для моделирования технологических процессов, а также рассмотрены способы повышения производительности программного обеспечения и доказана целесообразность использования этих методик. Из-за ограничений по объему в данной статье не рассмотрены некоторые важные особенности реализации алгоритмов численного моделирования, которые могут увеличить производительность, но эти особенности являются зависимыми от конкретной платформы. Необходимо отметить, что компании-производители САПР уже отреагировали на тенденцию в развитии микропроцессорных технологий - эра стремительного увеличения тактовых частот процессоров закончилась, наступила эпоха инновационных архитектур и многоядерных процессоров. Поэтому не стоит надеяться, что плохо реализованные алгоритмы будут продолжать увеличивать свою производительность такими же темпами, как и раньше, за счет повышения быстродействия компьютеров.

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

1. Сайт Компании SolidWorks Russia [Электронный ресурс]. - Режим доступа : http://www. solidworks.ru/products/solidworks/

2. Соблюдение условий лицензирования [Электронный ресурс]. - Режим доступа : http://www.autodesk.ru/adsk/servlet/index?siteID =871736&id=10481228

3. Сайт Компании Autodesk [Электронный ресурс]. - Режим доступа : http://www.autodesk.com/ techpubs/autocad/dxf/

4. Сайт Компании Сodeproject [Электронный ресурс]. - Режим доступа : http://www.codeproject. com/KB/library/cadlib.aspx

5. Category:CAD file formats [Электронный ресурс]. - Режим доступа : http://en.wikipedia.org/ wiki/Category:CAD_file_ formats

6. Обзор различных систем CAD/CAM/CAE/GIS [Электронный ресурс]. - Режим доступа : http:// www.cad.dp.ua/obzors/cads.php

7. Solidworks russia, ооо, it-компания [Электронный ресурс]. - Режим доступа :

http://www.solidworks.ru/products_cosmos_

flow.html

8. Зубков, С. В. Assembler для DOS, Windows, UNIX [Текст] / С. В. Зубков. - М.: ДМК Пресс; СПб.: Питер, 2004. - 608 с.

THE USE OF MODERN PROGRAMS AND HARDWARES TO MODEL TECHNOLOGICAL PROCESSES IN AGRO ENGINEERING

YUDAEV Yury А., Doctor of Technical Science, Full Professor of Energy Supply Faculty, yu.yudaev@mail.

ru

^ZHANOVA Тatyana V., Aspirant of Energy Supply Faculty, t.vk@mail.ru

YUDAEV Маxim Yu., Aspirant of Energy Supply Faculty, zumbat@mail.ru.

Ryazan State Agrotechnological University Named after P.A. Kostychev

The article presents the features of numerical methods and characteristics of modern software and hardware. The purpose of this paper is to examine the features using modern hardware and software to simulate with the help of the computer. Traditional methods of software development commonly use the system resources not very efficiently. The computer is idle for most time. Knowing the platforms structure helps to develop a more rapid and high quality implementation of an algorithm. The difference in performance-optimized and non-optimized versions can be one hundred percent or more. We have paid most attention to the system with one or more processors and operating systems Windows or Linux being the main platforms for CAD. We have provided an overview of major CAD systems used in the simulation of electrical processes in agricultural engineering: AutoCAD, AutoCAD LT, SolidWorks, ANSYS, bCAD, 3D Studio VIZ, Inventor. We have presented important features of applying algorithms for numerical modeling of physical processes at modern computers. We have discussed methods of the integer array effective use and floating point numbers, a set of widening basic instructions of modern processors and multithreaded applications development methodology. To increase the processing speed of floating point numbers one must use a special CPU instruction sets of 3DNow! or SSE processor. For the Editor design is is reasonable to use formats DXF or DWG. We have compared different optimization methods and proved the feasibility of their use for simulating the technological processes connected with the numerical solution of Poisson, Laplace, and Fourier equations.

Key words: computational modeling, multithreading applications, automatized design systems.

Literatura

1. Sayt Kompanii SolidWorksRussia [Ehlektronny resurs]. - Rezhim dostupa : http://www.solidworks.ru/ products/solidworks/

2. Soblyudenie usloviy licenzirovaniya [Ehlektronny resurs]. - Rezhim dostupa : http://www.autodesk.ru/ adsk/servlet/index?siteID =871736&id=10481228

3. Sayt Kompanii Autodesk [Ehlektronny resurs]. - Rezhim dostupa: http://www.autodesk.com/techpubs/ autocad/dxf/

4. Sayt Kompanii Codeproject [Ehlektronny resurs]. - Rezhim dostupa: http://www.codeproject.com/KB/ library/cadlib.aspx

5. Category.CADfileformats [Ehlektronny resurs]. - Rezhim dostupa: http://en.wikipedia.org/wiki/ Category:CAD_file_ formats

6. Obzor razlichnylh sistem CAD/CAM/CAE/GIS [Ehlektronny resurs]. - Rezhim dostupa: http://www.cad. dp.ua/obzors/cads.php

7. Solidworks russia, ooo, it-kompaniya [Ehlektronny resurs]. - Rezhim dostupa:

http://www. solidworks.ru/products_cosmos_flow.html

8. Zubkov, S.V Assembler dlya DOS, Windows, UNIX [Tekst] / S.V. Zubkov. - M.:DMK Press; SPb.: Piter, 2004. - 608 s.

i Надоели баннеры? Вы всегда можете отключить рекламу.