muzruno.com

Паралелно програмиране: описание, технологии, задачи и ползи

Идеите за паралелно изчисляване и обработка на информация отдавна са много специалисти и съществен проблем по отношение на изпълнението. Те придобиха особено значение и масов интерес не толкова отдавна.

Може да се твърди, че развитието на интернет технологиите даде нов тласък и паралелното програмиране придоби нови потребителски качества. Това предизвика не само очевидния напредък на технологиите и езиците за програмиране. Това наистина е имало обратен ефект върху разбирането на паралелния процес.

паралелно програмиране

Технологиите на паралелното програмиране се променят радикално. Първоначалното прилагане на компютърни устройства като калкулатори гладко преминава към използването им като обработващи информацията. Твърдите архитектурни решения отстъпиха на семантиката и гъвкавото разпространение на софтуерна функционалност за "хардуерните изпълнители".

Паралелни изчисления: значение и изпълнение

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

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

технологии за паралелно програмиране

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

Тази идея доведе до четири архитектури:

  • SISD - прост командния поток и прост поток от данни;
  • MISD - многочислен поток от команди и прост поток от данни;
  • SIMD - прост командния поток и потока от множество данни;
  • MIMD - многовариантен поток от команди и поток от множество данни.

Тези идеи съществуват за относително дълго време, но не доведоха до специални ефекти. Днес е трудна история. Но това начало е създало основа за съвременните постижения.

Долната част на архитектурната идея: липсата на семантика

Подобно на изграждането на жилищна сграда, компютърна архитектура не се отнася до семантиката. Как ще живеят наемателите в сградата, какви ремонти могат да направят и какви мебели ще бъдат решени, никога не се притесняваха от строителите.

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

  • проблемът за споделянето на паметта между процесите;
  • очакване логика един поток изпълнението на друга нишка;
  • механизъм за защита на паметта на един процес от друг процес;
  • логика на взаимодействието на независими процесори, ядра;
  • логиката на превключването между процесите;
  • обмен на данни "в движение" между процесите ...

Разработчиците се фокусираха повече върху хардуерните механизми, които лишиха паралелното многонатъшно програмиране на способността да имат семантика и не позволиха на програмиста да управлява процесите, адекватно разрешил проблема.

Промишлено приложение на паралелизма

Първата цел на компютрите: сложни математически изчисления, индустриални приложения и всичко, което не засяга ежедневието, мобилността и интернет. Естествено, когато задачите на паралелното програмиране са толкова "ограничени", трудно е да се очакват интересни постижения.

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

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

паралелни програмни системи

Windows и подобни системи фиксират тази идея и всъщност я правят законодателна норма: паралелизмът и съобщенията са едно за всеки многопроцесорна, многоядрени и по същество - за всяка информационна система.

От изчисляване до обработка на информация

Изчисленията са специален случай на обработка на информация. От паралелни архитектури, изпълнявани в хардуера до мобилни софтуерни решения: езиците на паралелното програмиране наистина стават собственост на историята. Модерен език осигурява истински паралелни процеси, но това не е задължително да има специални оператори в синтаксиса или допълнителни библиотеки с езика.

"Промишленото" мислене в програмирането, когато паралелното многопрофилно програмиране е целта, а не средствата, не издържа дълго. Трудно е да се каже кои основни резултати води до него. Няма съмнение обаче, че програмирането, което беше преди ерата на интернет програмирането, стана основа за отлични идеи и добър потенциал на съвременните езици и инструменти.

Хардуерен компонент

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

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

паралелни езици за програмиране

Производителят на електронни компоненти в пълна сила включва идеите от последните години и паралелното програмиране вече съществува на всяко устройство, независимо от това как се отнася до един или друг разработчик на софтуер.

Днес, броят на процесорни ядра, броя на процесорите, нивото на технологиите, както и паралелен код функционалността е от решаващо значение, дори и непосветените потребителя.

Математически апарат

Графика теория и опашки, тъй като частните опции изчисления прави и криви линии за визуален дисплей на информация, като основа за видеокартата, водена ясна функционалност на компонента на хардуер, който е придобил статут на стандарт и качество.

Можете да говорите за броя на сърцевините в процесора на устройството, но процесорът за показване на информация отдавна е един и се занимава със собствен бизнес. Една видеокарта може да има повече от един процесор, а не едно ядро, но в него е имплантирано математическо устройство.



Компютърен процесор само формулирането прости команди за показване на информация или да го вземе от видео паметта и почивка на - грижовен графичен процесор.

Всъщност математическите изчисления отдавна са изолирани от главния процесор в математически копроцесор. Това е и норма на нещата.

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

Основи на паралелното програмиране

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

Обектно-ориентирано програмиране

При класическо програмиране, алгоритъмът за вземане на решение е последователност от команди. при обектно-ориентирано програмиране алгоритъмът за вземане на решение е колекция от обекти, всяка от които има свои данни и методи.

mpi паралелно програмиране

Чрез методи, обектите взаимодействат помежду си и следователно, как ще бъдат изпълнени от хардуера на компютъра (устройството), програмистът се грижи най-малко за всички. Логиката на взаимодействието между обектите обаче е сферакомпетентност програмист.

Информационна система, изградена на обекти, като правило, е определена система от абстракции, която позволява различни варианти за създаване на обекти от различни видове и цели. Описани на нивото на абстракциите, информационните системи могат да осигурят различни комбинации от обекти, включително създаването на самите тях.

Просто казано, с обектно-ориентирано програмиране е трудно да свържете изпълнението на обект към ядрото или процесора, за да гарантирате паралелното му изпълнение. Това значително ще забави цялостния процес. Един от обектите може да съществува в първата десеткакопия, Но това не означава, че съществуването на всеки трябва да чака съществуването на предишния да свърши.

Групи и разпределен паралелизъм

Модерното интернет програмиране за решаване на сложни и уникални проблеми предлага единственото възможно решение: ръчна работа! За ежедневна и търговска употреба се използват многобройни и разнообразни системи за управление на обекти.

Характерна черта на интернет програмирането:

  • neopredelennost-
  • mnozhestvennost-
  • едновременност.

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

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

паралелни задачи по програмиране

Да се ​​направи разпределена обработка на информация всъщност означава да се осигури паралелна работа на една и съща функционалност на различни сървъри за различни групи потребители, при условие че действията на потребителите са отразени в системата и не се противопоставят една на друга.

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

Клъстер, като вариант на паралелно изпълнение

Общоприето е, че клъстерът е вид разпределена паралелна обработка на информация. Това е набор от компютри, свързани чрез високоскоростни комуникационни линии.

Характерно е, че клъстерът може да се състои от различни компютри, които могат да бъдат разположени на различни места на планетата, но по дефиниция: клъстерът е едно цяло. Системите за управление на съдържанието, базирани на клъстери, не позволяват директен контрол на клъстерните компютри, но осигуряват латентен паралелен контрол на всички процеси на нивото на задачата, която се решава.

Разработчикът, работещ с клъстери, може да планира и реализира своята собствена паралелна паралелна обработка. Това е много важен напредък в съвременното развитие.

"Живот" на съвременен обект

Днес е много трудно да се намери уеб ресурс, базиран на статични или динамични страници, формирани изцяло. Съвременният сайт е колекция от динамични страници, които се попълват паралелно с помощта на технологията AJAX.

Модерната динамична страница се състои от различно съдържание, като всяка част от страницата може да бъде изтеглена независимо, в зависимост от поведението на посетителя. В този контекст обектно-ориентираното програмиране показва, че не целият му потенциал е разкрит.

Всъщност поведението на клиента води до искане към сървъра да актуализира част от страницата. Заявката се обработва, създават се много обекти, сървърът изпраща резултата обратно. Следващата заявка ... отново масата на обектите, отново резултатът е изпратен. Всъщност се оказва, че при сегашния подход сървърът "не помни" какво, кога и къде е изпратил. При всяко повикване той повтаря минималните необходими действия, създава същите системи от обекти.

паралелно много-резбово програмиране

Програмистът не може да променя логиката на сървъра, но може лесно да подражава на собствения си сървър на достъпно физическо ниво. Ще се получи изцяло ново качество на разпространената паралелна обработка на информацията.

Собственият сървър ще поддържа необходимата система от обекти в актуализираното състояние, което значително ще ускори обработката на заявките от една страница и от всички страници, отворени в цялото интернет пространство за даден уеб ресурс.

Споделяне в социалните мрежи:

сроден