T++

T++
Semantik multi- paradigme : objektorienteret , generisk , proceduremæssig , metaprogrammering , funktionel , parallel programmering
Sprog klasse programmeringssprog
Udførelsestype kompileret
Dukkede op i 1980'erne
Forfatter Institut for Programsystemer RAS
Filtypenavn _ .tpp
Større implementeringer proprietære

T++ er et programmeringssprog, der indikerer behovet for parallel computing med syntaks og semantik , der udvider C++-sproget , nemlig ved at udvide det med nogle få ord, der indikerer muligheden for parallel computing. Paralleliseringen af ​​selve beregningerne udføres automatisk af runtime-biblioteket i det integrerede T-system- miljø under udførelsen af ​​programmet, det vil sige dynamisk, hvilket udvider det integrerede Microsoft Visual Studio C++-miljø med en patch . [en] For at indikere behovet for parallelisering af beregninger er funktionen, dens eksterne variabler og pegepinde markeret med de tilsvarende nøgleord. I mangel af indlysende bivirkninger, tegner compileren funktionen ikke som et element i proceduremæssig programmering, men som en funktionel , det vil sige ren (uden bivirkninger ). Hvis der er åbenlyse bivirkninger, såsom at bruge I/O, vil compileren opdage dem og udstede en fejlmeddelelse.

Semantik

Programeksempel

Et eksempelprogram til beregning af Fibonacci-tallet :

tfun int fib ( int n ) { returnere n < 2 ? n : fib ( n - 1 ) + fib ( n - 2 ); } tfun int main ( int argc , char * argv []) { if ( argc != 2 ) { printf ( "Brug: fib <n> \n " ); retur 1 ; } int n = atoi ( argv [ 1 ]); printf ( "fib(%d) =%d \n " , n , ( int ) fib ( n )); returnere 0 ; }

Som det kan ses af eksemplet, har T++-sproget foretaget mindre ændringer i syntaksen for C++-sproget, nemlig: pointere tfuntil at muliggøre parallel computing. På trods af ineffektiviteten af ​​en sådan implementering af beregning af det -th Fibonacci-tal viser dette program ikke kun enkelheden og klarheden af ​​T-systemet, men demonstrerer også acceleration, når det udføres på flere processorer, og programmøren behøver ikke at vide om deres nummer og fordel nyttelasten mellem dem.

T-System

T-systemet giver et integreret udviklingsmiljø ved at udvide Microsoft Visual Studio C ++-miljøet med . T-systemudviklingsmiljøet giver mulighed for at aktivere en præprocessor , der filtrerer T++- kildekode (konverterer T++-kildekode til C++) til at køre programmet i seriel tilstand (til fejlretning af C++-kode). Efter fejlretning i seriel tilstand, kan du debugge T++-kildekoden og derefter kompilere den : Kildekoden er optimeret og konverteret, paralleldatabehandlingens runtime-biblioteker [2] er forbundet, og C++-koden kompileres. T-System er et værktøj til automatisk dynamisk parallelisering af programmer, designet til at lette udviklingen og brugen af ​​komplekse parallelle programmer og deres effektive brug på forskelligt, herunder heterogent udstyr. Det blev udviklet på Institute of Information Systems of the Russian Academy of Sciences, og er i øjeblikket ved at blive udviklet på Institute of Information Systems of the Russian Academy of Sciences og Moscow State University.

OpenTS (Open T-System, T-system with a open architecture ) er en moderne implementering af T-systemet. Det giver automatisk dynamisk parallelisering af programmer og giver et eksekveringsmiljø for højniveauprogrammeringssproget T++ , som er en parallel dialekt af C++-sproget [3] .

OpenTS bruger letvægtstråde med hurtig skift (et par nanosekunder) og kan håndtere over en million letvægtstråde pr. processor. Ud fra disse tråde implementeres en række funktioner, såsom mobile tråde, objekter og referencer, distribueret skraldindsamling, en opslagstavle til udveksling af data og opgaver mv.

OpenTS er blevet testet med succes på en bred vifte af opgaver og på computerinstallationer af forskellige størrelser: fra multiprocessor -pc'er til computersystemer med forskellige arkitekturer og forskellige kapaciteter (forskellige multiprocessor Windows / Linux Intel / AMD-klynger, russisk teraflop-installation MVS-1000 M osv..). OpenTS understøtter en lang række parallelle platforme: multi-core processorer, SMP-systemer, klynger, metaclusters og GRID-systemer.

Historie

Ideen om T-systemet blev født i slutningen af ​​1980'erneProgram Systems Institute of the Russian Academy of Sciences [1] . Hovedtanken var introduktionen af ​​begrebet T-funktioner som udbydere af såkaldte unready - værdier, hvilket gjorde det muligt samtidigt at udføre flere T-funktioner på forskellige processorer og derved opnå parallelitet.

I 1998 fik projektet en ny fødsel med aktiv deltagelse af Moskvas statsuniversitet . I 2000 , inden for rammerne af det russisk-hviderussiske projekt " SKIF ", begyndte arbejdet med en ny implementering af T-systemet , kodenavnet GRACE . Efter det første udviklingsår blev der imidlertid opdaget betydelige mangler ved denne implementering. Systemets dårlige struktur, manglen på en klar ideologi og arkitektur førte til adskillige fejl, fryser, stak overløb . Men vigtigst af alt, talrige forsøg på at løse problemer reducerede ofte hastigheden og effektiviteten af ​​de programmer, der allerede er skrevet, og i nogle tilfælde gjorde dem ubrugelige.

I 2002 blev det besluttet at skrive en ny implementering af T-systemet. Det blev kaldt OpenTS , eller Open Architecture T-System . I modsætning til de to tidligere implementeringer fastlagde OpenTS i første omgang en bestemt arkitektur baseret på erfaringerne med at udvikle tidligere versioner af systemet. OpenTS har med succes bestået statstest under SKIF-projektet for overholdelse af kriterierne for software på klyngeniveau.

I øjeblikket arbejder MSU på to uafhængige grene af OpenTS under det betingede navn NewTS.

Grundlæggende ideer til T-systemet

1. En funktion erklæret med et nøgleord tfun(den såkaldte T-funktion) er hovedobjektet ( granule ) for parallelisme. Skriv indtastning:

tfun int f ( int a , dobbelt b )

beskriver en T-funktion med to argumenter og en outputværdi.

2. Kaldet af T-funktionen blokerer ikke programmet før færdiggørelsen af ​​T-funktionen. Resultatet af opkaldet er en råværdi (T-værdi).

3. En uklar værdi kan tildeles en T-variabel . Operationen med at tildele en uklar værdi til en T-variabel blokerer ikke programmet. T-variablen er beskrevet med et nøgleord tval(ikke tvar, dette er resultatet af at følge traditionen, den tilsvarende klasse af OpenTS-kernen kaldes TVar). Indspilning

tval int x ;

beskriver en T-variabel af typen int .

4. Ved slutningen af ​​beregningen af ​​T-funktionen bliver den tilsvarende uklare værdi klar og gentager derefter opførselen af ​​normalværdien for basistypen.

5. Operationen med at tage en værdi eller støbe til en basistype for T-variabler forårsager blokering af udførelsen af ​​funktionen, indtil værdien af ​​T-variablen er klar.

Noter

  1. OpenTS. Programmers vejledning (ikke tilgængeligt link) . Dato for adgang: 27. maj 2010. Arkiveret fra originalen 4. marts 2016. 
  2. Det er muligt at bruge statiske parallelle databehandlingsbiblioteker, såsom: ScaLAPACK ,
  3. OpenTS :: Hjem (downlink) . Hentet 16. juni 2008. Arkiveret fra originalen 7. september 2016. 

Litteratur

Projekter

Beskrivelse af T-systemet