Линда: Параллелді есептеулердегі координация моделі
Linda (coordination language)
Линда – параллельді есептеуде қолданылатын модель. Дэвид Гелернтер жасаған, Fortran/C сияқты тілдермен қатар жұмыс істейді. Тарихы мен ерекшеліктері туралы біліңіз.
Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Компьютерлік ғылымда Линда – параллель есептеу орталарында байланысты қамтамасыз ететін үйлестіру моделі. Дэвид Гелернтер жасаған бұл модель, Fortran немесе C сияқты толыққанды есептеу тілімен бірге қолданылады, онда Линданың міндеті – "есептеу процестерін құру және олардың арасындағы байланысты қолдау".
In computer science, Linda is a coordination model that aids communication in parallel computing environments. Developed by David Gelernter, it is meant to be used alongside a full fledged computation language like Fortran or C where Linda's role is to "create computational activities and to support communication among them".
Тарих
Дэвид Гелернтер "Линданың" алғашқы нұсқасын 1979 жылы Ph.D. кандидаты ретінде жазды, оған порнографиялық фильм "Deep Throat"-та түскен Линда Лавлейс есімін берді. Сол кезде параллель өңдеу үшін басты тіл – АҚШ Қорғаныс министрлігі жасаған және Гелернтер "әдемі емес әрі ауыр" деп санаған Ада Лавлейс құрметіне аталған Ада тілі болатын. Ол 1986 жылы, Гелернтер Йельдегі әріптесі Николас Карьеро және AT&T Bell Laboratories-тегі Судир Ахужамен бірге IEEE журналында "Линда және достары" деген мақаласын жариялағанда кеңінен таралды. 1990 жылдардың басында Линда корпорациялардың үлкен деректерді тиімді талдауына кеңінен қолданылды, соның ішінде Уолл-стрит брокерлік фирмалары, сондай-ақ AT&T, Boeing және United Technologies компаниялары. Линдаға негізделген арнайы параллель есептеу қолданбаларын жасаумен айналысатын компаниялар да болды, олардың ішіндегі ең ірісі – Нью-Хейвендегі бірнеше Йель компьютер ғалымдары құрған Scientific Computing Associates компаниясы (Гелернтер кейде оларға консультант ретінде көмектесетін, бірақ онда жұмыс істемеді).
David Gelernter wrote the first version of Linda as a Ph. D. candidate in 1979, naming it after Linda Lovelace, who appeared in the pornographic film Deep Throat. At the time, the main language for parallel processing was Ada, developed by the U. S. Department of Defense and a tribute to Ada Lovelace, which Gelernter considered an "inelegant and bulky" language. It was widely released in 1986, when Gelernter, along with his Yale colleague Nicholas Carriero and Sudhir Ahuja at AT&T Bell Laboratories, published "Linda and Friends" in an IEEE journal. By the early 1990s, Linda was widely used by corporations to more efficiently conduct big data analyses, including Wall Street brokerages as well as AT&T, Boeing, and United Technologies. There were even companies that specialized in creating specialized parallel computing applications based on Linda, the largest of which was Scientific Computing Associates, a New Haven based company founded by several Yale computer scientists (Gelernter occasionally consulted for them but did not work there).
Салыстыру
Басқа параллель өңдеу модельдерімен салыстырғанда, Линда процестерді үйлестіруді есептеуден бөлек қызмет ретінде қарастыруда көбірек ортогоналды және бірнеше деңгейдегі бір мезгілдестікті – бір процессорлық, көп жіпті мультипроцессорлық немесе желілік – бір модельге біріктіруге қабілетті. Оның ортогоналдылығы әртүрлі тілдер мен платформаларда есептейтін процестерге бірдей бастауыш элементтерді пайдалану арқылы өзара әрекеттесуге мүмкіндік береді. Оның жалпылығы көп жіпті Линда жүйесін өзгеріссіз бірнеше компьютерге таратуға мүмкіндік береді. Хабар алмасу модельдері бір-біріне белгілі бір рет немесе хаттама бойынша хабарлар жіберетін тығыз байланысты процестерді қажет ететін болса, Линда процестері басқа процестерден бөлек, тек тупл кеңістігі арқылы қарым-қатынас жасайды; процеске тұтынылатын немесе жасалатын тупл түрлерінен басқа, басқа процестер туралы түсінік қажет емес. Мультипроцессорлық қауымдастықтан Линданы сынға алу көбінесе Линда жүйелеріндегі операциялардың жылдамдығының Хабар алмасу интерфейсі (MPI) жүйелерімен салыстырғанда төмендеуіне бағытталған. Бұл талаптар негізсіз болмаса да, маңызды мәселелер класы үшін көбінесе жоққа шығарылды. Линда моделіне қатысты егжей-тегжейлі сын-пікірлерді Стивен Эрикссон Зениттің «Процесс өзара әрекеттесу модельдері» кітабынан табуға болады. Зерттеушілер (ашық таратылған) компьютерлік жүйелер арасындағы байланыстың әртүрлі түрлерін және үйлестіруді қолдау үшін, сондай-ақ модельдің әртүрлі қолданылуынан туындайтын нақты мәселелерді шешу үшін қосымша бастауыш элементтер ұсынды. Зерттеушілер сонымен қатар осы модель үшін виртуалды ортақ жадты іске асырудың әртүрлі тәсілдерін сынап көрді. Осы зерттеушілердің көпшілігі түпнұсқа Линда моделіне үлкен өзгерістер енгізіп, Линдаға ұқсас жүйелер деп аталатын жүйелер отбасын жасады және оларды ортогоналды технология ретінде іске асырды (түпнұсқа нұсқадан өзгеше). Мысалы, Стивен Эрикссон Зенит жасаған Ease тілін қарастыруға болады. Линданың тәсілі ағынға негізделген бағдарламалаумен де салыстырылды.
Compared to other parallel processing models, Linda is more orthogonal in treating process coordination as a separate activity from computation, and it is more general in being able to subsume various levels of concurrency—uniprocessor, multi threaded multiprocessor, or networked—under a single model. Its orthogonality allows processes computing in different languages and platforms to interoperate using the same primitives. Its generality allows a multi threaded Linda system to be distributed across multiple computers without change. Whereas message passing models require tightly coupled processes sending messages to each other in some sequence or protocol, Linda processes are decoupled from other processes, communicating only through the tuplespace; a process need have no notion of other processes except for the kinds of tuples consumed or produced. Criticisms of Linda from the multiprocessing community tend to focus on the decreased speed of operations in Linda systems as compared to Message Passing Interface (MPI) systems. While not without justification, these claims were largely refuted for an important class of problems. Detailed criticisms of the Linda model can also be found in Steven Ericsson Zenith's book Process Interaction Models. Researchers have proposed more primitives to support different types of communication and co ordination between (open distributed) computer systems, and to solve particular problems arising from various uses of the model. Researchers have also experimented with various means of implementing the virtual shared memory for this model. Many of these researchers proposed larger modifications to the original Linda model, developing a family of systems known as Linda like systems and implemented as orthogonal technology (unlike original version). An example of this is the language Ease designed by Steven Ericsson Zenith. Linda's approach has also been compared to that of flow based programming.
Линда-калькулус
Линда есебі жоғарыда сипатталған модельдің формалдануы болып табылады, айырмашылығы – төмендегісінде ол шығару (out) және бағалау (eval) операцияларын біріктіреді.
The Linda calculus is a formalisation of the above model with the difference that in the following subsumes both out and eval operations.
Семантика
Түплдік кеңістік процестердің көп жиынтығы ретінде ұсынылады. Мұндағы – көп жиынтық, – бір элементтен тұратын көп жиынтық, ал – көп жиынтықты біріктіру операциясы. Семантика, көп жиынтық үстіндегі редукция қатынасы ретінде келесідей анықталады. Ескеріңіз, (кіріс) түплдік кеңістіктен түплді тұтынып алады, ал (оқу) оны тек қана оқиды. Соның нәтижесінде пайда болатын операциялық семантика синхронды болып табылады.
A tuple space is represented as a multiset of the processes. We write for where is a multiset, a singleton multiset, and is the multiset union operation. The semantics is then defined as a reduction relation on a multiset as follows. Note that (input) consumes the tuple from the tuple space whereas (read) only reads it. The resulting operational semantics is synchronous.