на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Алгоритмы параллельных процессов при исследовании устойчивости подкрепленных пологих оболочек
/i>Dim_a - Линейный размер оболочки;

Kksi - Кривизна оболочки вдоль направления X;

Keta - Кривизна оболочки вдоль направления Y;

lambda - Соотношение длин сторон вдоль направления X и Y оболочки;

Mu - Коэффициент Пуассона;

J_m - Количество ребер жесткости вдоль направления X;

I_n - Количество ребер жесткости вдоль направления Y;

AutomaticModeRebra - Режим ввода центральных координат ребер жесткости;

F_j - Высота ребер жесткости вдоль направления X;

F_i - Высота ребер жесткости вдоль направления Y;

rj - Ширина ребер жесткости вдоль направления X;

ri - Ширина ребер жесткости вдоль направления Y;

temporaryRebraX - Центральные координаты ребер жесткости вдоль направления X;

temporaryRebraY - Центральные координаты ребер жесткости вдоль направления Y;

N - Количество аппроксимирующих функций;

N_Simps - Разбиение при вычислении интегралов для коэффициентов СЛАУ;

P_KON - Конечная нагрузка;

d_P - Шаг по нагрузке метода Итераций;

PausePW - Шаг по нагрузке вывода результатов расчета;

epsilon - Точность метода Итераций;

Iter_X1 - Координата X вычисления прогиба оболочки для метода Итераций;

Iter_Y1 - Координата Y вычисления прогиба оболочки для метода Итераций;

Ust_X1 - Координата X вычисления прогиба оболочки для построения 1-й зависимости P-W;

Ust_Y1 - Координата Y вычисления прогиба оболочки для построения 1-й зависимости P-W;

Ust_X2 - Координата X вычисления прогиба оболочки для построения 2-й зависимости P-W;

Ust_Y2 - Координата Y вычисления прогиба оболочки для построения 2-й зависимости P-W;

Ust_P - Значения нагрузок для вывода полей прогиба и интенсивности оболочки;

CreepEnd - Порог превышения прогиба для вычисления ползучести оболочки;

Creep_X1 - Координата X вычисления прогиба оболочки для построения 1-й зависимости W-t;

Creep_Y1 - Координата Y вычисления прогиба оболочки для построения 1-й зависимости W-t;

Creep_X2 - Координата X вычисления прогиба оболочки для построения 2-й зависимости W-t;

Creep_Y2 - Координата Y вычисления прогиба оболочки для построения 2-й зависимости W-t;

Creep_P - Значения нагрузок для вычисления ползучести оболочки;

DimP_Time - Значение нагрузки для вывода динамических полей прогиба и интенсивности оболочки;

CreepTime - Значения времени для вывода динамических полей прогиба и интенсивности оболочки при заданной нагрузке;

Material - Тип материала (для упругих материалов задача ползучести не рассчитывается);

constM - Константа физической нелинейности.

При вводе данных программа показывает подсказку по каждому параметру (рис.3).

После ввода всех параметров можно приступать к расчету.

Рис.3. Ввод входных данных

Глава 3. Распараллеливание процесса вычисления. Основы, принципы, практическое применение

Распараллеливание процесса вычисления - процесс адаптации алгоритмов, записанных в виде программ, для их эффективного исполнения на вычислительной системе параллельной архитектуры. Заключается либо в переписывании программ на специальный язык, описывающий параллелизм и понятный трансляторам целевой вычислительной системы, либо к вставке специальной разметки (например, инструкций MPI или OpenMP OpenMP (Open Multi-Processing) - набор директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с единой памятью на языках C, C++ и Fortran.). [1]

История

В 1973 году Джон Шох и Джон Хапп из калифорнийского научно-исследовательского центра Xerox PARC написали программу, которая по ночам запускалась в локальную сеть PARC и заставляла работающие компьютеры выполнять вычисления.

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

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

В январе 1996 года стартовал проект GIMPS по поиску простых чисел Мерсенна.

28 января 1997 года стартовал конкурс RSA Data Security на решение задачи взлома методом простого перебора 56-битного ключа шифрования информации RC5. Благодаря хорошей технической и организационной подготовке проект, организованный некоммерческим сообществом distributed.net, быстро получил широкую известность.

17 мая 1999 года на базе платформы BOINC запущен проект SETI@home, занимающийся поиском внеземного разума путем анализа данных с радиотелескопов (анализ данных проводился и раньше, но без использования грид).

Такие проекты распределённых вычислений в интернете, как SETI@Home и Folding@Home обладает не меньшей вычислительной мощностью, чем самые современные суперкомпьютеры. Интегральный объем вычислений на платформе BOINC по данным на 16 мая 2010 года составляет 5.2 петафлопс, в то время как пиковая производительность самого мощного суперкомпьютера (Jaguar - Cray XT5-HE) - "всего" 2.3 петафлопс. Проект отмечен в Книге рекордов Гиннеса как самое большое вычисление.

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

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

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

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

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

Некоторые алгоритмы достаточно просто поддаются разбиению на независимо выполняемые фрагменты. Например, распределение работы по проверке всех чисел от 1 до 100000 на предмет того, какие из них являются простыми, может быть выполнено путем назначения каждому доступному процессору некоторого подмножества чисел с последующим объединением полученных множеств простых чисел (похожим образом реализован, например, проект GIMPS GIMPS (Great Internet Mersenne Prime Search) -- широкомасштабный проект распределённых вычислений по поиску простых чисел Мерсенна.).

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

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

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

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

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

Еще одной проблемой, связанной с использованием параллельных алгоритмов, является балансировка нагрузки. Например, поиск простых чисел в диапазоне от 1 до 100000 легко распределить между имеющимися процессорами, однако некоторые процессоры могут получить больший объем работы, в то время как другие закончат обработку раньше и будут простаивать. Проблемы балансировки нагрузки еще больше усугубляется при использовании гетерогенных вычислительных сред, в которых вычислительные элементы существенно отличаются по производительности и доступности (например, в грид-системах).

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

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

3.1 Message Passing Interface

Message Passing Interface (MPI, интерфейс передачи сообщений) - программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком и другими.

MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ. Используется при разработке программ для кластеров и суперкомпьютеров. Основным средством коммуникации между процессами в MPI является передача сообщений друг другу. Стандартизацией MPI занимается MPI Forum. В стандарте MPI описан интерфейс передачи сообщений, который должен поддерживаться как на платформе, так и в приложениях пользователя. В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI. Существуют реализации для языков Фортран 77/90, Си и Си++.

Стандарты MPI

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

В MPI 1.1 (опубликован 12 июня 1995 года) поддерживаются следующие функции:

передача и получение сообщений между отдельными процессами;

коллективные взаимодействия процессов;

взаимодействия в группах процессов;

реализация топологий процессов;

В MPI 2.0 (опубликован 18 июля 1997 года) дополнительно поддерживаются следующие функции:

динамическое порождение процессов и управление процессами;

односторонние коммуникации (Get/Put);

параллельный ввод и вывод;

расширенные коллективные операции (процессы могут выполнять коллективные операции не только внутри одного коммуникатора, но и в рамках нескольких коммуникаторов).

Пример программы

Ниже приведён пример программы на C с использованием MPI:

// Подключение необходимых заголовков

#include <stdio. h>

#include <math. h>

#include "mpi. h"

// Функция для промежуточных вычислений

double f (double a)

{

return (4.0/ (1.0+ a*a));

}

// Главная функция программы

int main (int argc, char **argv)

{

// Объявление переменных

int done = 0, n, myid, numprocs, i;

double PI25DT = 3.141592653589793238462643;

double mypi, pi, h, sum, x;

double startwtime = 0.0, endwtime;

int namelen;

char processor_name [MPI_MAX_PROCESSOR_NAME] ;

// Инициализация подсистемы MPI

MPI_Init (&argc, &argv);

MPI_Comm_size (MPI_COMM_WORLD,&numprocs);

MPI_Comm_rank (MPI_COMM_WORLD,&myid);

MPI_Get_processor_name (processor_name,&namelen);

// Вывод номера потока в общем пуле

fprintf (stdout, "Process%d of%d is on%s\n", myid,numprocs,processor_name);

fflush (stdout);

while (! done)

{

// количество интервалов

if (myid==0)

{

fprintf (stdout, "Enter the number of intervals: (0 quits)");

fflush (stdout);

if (scanf ("%d",&n) ! = 1)

{

fprintf (stdout, "No number entered; quitting\n");

n = 0;

}

startwtime = MPI_Wtime ();

Страницы: 1, 2, 3, 4, 5, 6



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.