T++

T++
Szemantika több paradigma : objektumorientált , általános , procedurális , metaprogramozás , funkcionális , párhuzamos programozás
Nyelvóra programozási nyelv
A végrehajtás típusa összeállított
Megjelent 1980-as évek
Szerző Programrendszerek Intézete RAS
Fájlkiterjesztés _ .tpp
Főbb megvalósítások szabadalmazott

A T++ egy olyan programozási nyelv , amely a párhuzamos számítás szükségességét jelzi szintaxissal és szemantikával , amely kiterjeszti a C++ nyelvet , mégpedig úgy, hogy néhány szóval bővíti, jelezve a párhuzamos számítás lehetőségét. Magát a számítások párhuzamosítását a T-system integrált környezet futásidejű könyvtára a program végrehajtása során automatikusan, azaz dinamikusan hajtja végre, ami a Microsoft Visual Studio C++ integrált környezetét patch-el bővíti . [1] A számítások párhuzamosításának szükségességének jelzésére egy függvényt, külső változóit és használt mutatóit a megfelelő kulcsszavakkal jelölik. Nyilvánvaló mellékhatások hiányában a fordító a függvényt nem a procedurális programozás elemeként, hanem funkcionálisként , azaz tisztán ( mellékhatások nélkül ) készíti el. Ha nyilvánvaló mellékhatások jelentkeznek, például az I/O használata, akkor a fordító észleli azokat, és hibaüzenetet ad ki.

Szemantika

Programpélda

Egy példaprogram a Fibonacci-szám kiszámítására :

tfun int fib ( int n ) { vissza n < 2 ? n : fib ( n - 1 ) + fib ( n - 2 ); } tfun int main ( int argc , char * argv []) { if ( argc != 2 ) { printf ( "Használat: fib <n> \n " ); visszatérés 1 ; } int n = atoi ( argv [ 1 ]); printf ( "fib(%d) =%d \n " , n , ( int ) fib ( n )); return 0 ; }

Amint a példából látható, a T++ nyelv kisebb változtatásokat hajtott végre a C++ nyelv szintaxisában, nevezetesen: mutatók tfun, amelyek lehetővé teszik a párhuzamos számítást. Annak ellenére, hogy a -edik Fibonacci-szám kiszámításának ilyen megvalósítása nem hatékony , ez a program nemcsak a T-System egyszerűségét és tisztaságát mutatja, hanem több processzoron végrehajtva gyorsulást is mutat, és a programozónak nem kell tudnia ezekről. számot és a hasznos terhet szétosztani közöttük.

T-System

A T-rendszer integrált fejlesztői környezetet biztosít a Microsoft Visual Studio C ++ környezet kiterjesztésével a . A T-system fejlesztői környezet lehetővé teszi a T++ forráskódot szűrő (a T++ forráskódot C++-ra konvertáló) előfeldolgozó számára, hogy a programot soros módban futtassa (a C++ kód hibakereséséhez). A soros módban végzett hibakeresés után elvégezheti a T++ forráskód hibakeresését, majd lefordítását : a forráskód optimalizálása és konvertálása megtörténik, a párhuzamos számítási futásidejű könyvtárak [2] csatlakoztatása, és a C++ kód lefordítása. A T-System a programok automatikus dinamikus párhuzamosítására szolgáló eszköz, melynek célja az összetett párhuzamos programok fejlesztésének és használatának megkönnyítése, valamint azok hatékony felhasználása különböző, köztük heterogén berendezéseken. Az Orosz Tudományos Akadémia Információs Rendszerek Intézetében fejlesztették ki, jelenleg pedig az Orosz Tudományos Akadémia Információs Rendszerek Intézetében és a Moszkvai Állami Egyetemen fejlesztik.

Az OpenTS (Open T-System, T-system with an open architektúra ) a T-rendszer modern megvalósítása. A programok automatikus dinamikus párhuzamosítását biztosítja, és végrehajtási környezetet biztosít a magas szintű T++ programozási nyelvhez , amely a C++ nyelv párhuzamos dialektusa [3] .

Az OpenTS könnyű szálakat használ gyors váltással (néhány nanoszekundum), és processzoronként több mint millió könnyű szálat tud kezelni. Ezekre a szálakra alapozva számos szolgáltatást valósítanak meg, például mobilszálakat, objektumokat és hivatkozásokat, elosztott szemétgyűjtést, üzenőfalat az adatok és feladatok cseréjéhez stb.

Az OpenTS-t számos feladaton és különböző méretű számítástechnikai telepítéseken tesztelték sikeresen: a többprocesszoros PC-ktől a különböző architektúrájú és különböző kapacitású számítógéprendszerekig (különféle többprocesszoros Windows / Linux Intel / AMD fürtök, orosz teraflop telepítés MVS-1000 M stb.). Az OpenTS párhuzamos platformok széles skáláját támogatja: többmagos processzorok, SMP rendszerek, fürtök, metaclusterek és GRID rendszerek.

Történelem

A T-System ötlete az 1980- as évek végén született meg az Orosz Tudományos Akadémia Programrendszerek Intézetében [1] . A fő ötlet a T-függvények , mint az úgynevezett unready értékek szolgáltatói koncepciójának bevezetése volt, amely lehetővé tette több T-függvény egyidejű végrehajtását különböző processzorokon, és ezzel párhuzamosság elérését.

1998- ban a projekt másodszor is megszületett a Moszkvai Állami Egyetem aktív részvételével . 2000- ben az orosz-fehérorosz „ SKIF ” projekt keretében megkezdődött a munka a T-System új, GRACE kódnevű megvalósításán . A fejlesztés első éve után azonban ennek a megvalósításnak jelentős hiányosságaira derült fény. A rendszer rossz felépítése, a világos ideológia és architektúra hiánya számos hibához, lefagyáshoz, verem túlcsorduláshoz vezetett . De ami a legfontosabb, a számos problémamegoldási kísérlet gyakran csökkentette a már megírt programok sebességét és hatékonyságát, esetenként pedig működésképtelenné tette azokat.

2002 - ben úgy döntöttek, hogy megírják a T-System új megvalósítását. OpenTS -nek vagy Open Architecture T-System- nek hívták . A két korábbi implementációtól eltérően az OpenTS kezdetben a rendszer korábbi verzióinak fejlesztése során szerzett tapasztalatok alapján meghatározott architektúrát. Az OpenTS sikeresen átment a SKIF projekt keretében a fürtszintű szoftverek kritériumainak való megfelelés érdekében végzett állapotteszteken.

Jelenleg az MSU az OpenTS két független ágán dolgozik NewTS feltételes néven.

A T-System alapötletei

1. Egy kulcsszóval deklarált függvény tfun(az ún. T-függvény) a párhuzamosság fő objektuma ( szemcséje ). Írja be a bejegyzést:

tfun int f ( int a , double b )

egy T-függvényt ír le két argumentummal és egy kimeneti értékkel.

2. A T-függvény hívása nem blokkolja a programot a T-függvény befejezéséig. A hívás eredménye egy nyers érték (T-érték).

3. Egy T-változóhoz egy nem kész érték rendelhető . Az a művelet, amikor egy T-változóhoz nem kész értéket adunk, nem blokkolja a programot. A T-változót kulcsszóval írjuk le tval(nem tvar, ez a hagyomány követésének eredménye, az OpenTS mag megfelelő osztályát TVar-nak hívják). Felvétel

tval int x ;

int típusú T változót ír le .

4. A T-függvény számításának végén a megfelelő unready érték készen áll , majd megismétli az alaptípus normálértékének viselkedését.

5. A T-változók értékének felvétele vagy alaptípusba öntése a függvény végrehajtásának blokkolását okozza mindaddig, amíg a T-változó értéke készen nem áll.

Jegyzetek

  1. OpenTS. Programozói útmutató (nem elérhető link) . Hozzáférés dátuma: 2010. május 27. Az eredetiből archiválva : 2016. március 4. 
  2. Lehetőség van statikus párhuzamos számítási könyvtárak használatára, mint például: ScaLAPACK ,
  3. OpenTS :: Kezdőlap (lefelé irányuló kapcsolat) . Letöltve: 2008. június 16. Az eredetiből archiválva : 2016. szeptember 7.. 

Irodalom

Projektek

A T-rendszer leírása