IT

Programmering, muticore processor

22. november 2016 af hesch (Slettet) - Niveau: Universitet/Videregående

Jeg har stillet nedenstående spørgsmål under "programmering", men har ikke fået svar, så jeg prøver her:

Hej.

Jeg beskæftiger mig med "regnetunge" programmer, og dagens trend er at udvikle muticore processorer, der kan parallel-eksekvere programmer, for at få lidt tempo. Clockfrekvensen har nået sit toppunkt.

Jeg har ( via google ) fornemmet at programmer skal være udviklet til at kunne eksekveres parallelt, førend det i praksis kan ske. Denne uddelegering af dele af regneopgaven kan - formoder jeg - ske ved at :

1)  programmøren via direktiver til compileren anviser en fornuftig uddelegering, hvorved programmets
     "tråde" skal splittes op, og hvordan de skal sammenflettes til gensidig briefing/dataudveksling.

2)  compileren kan selv gennemskue en uddelegering, hvor opgaven fordeles i "tasks", der har en gensidig
     ubetydelig grænseflade ( det rager ikke jer andre, hvad jeg laver ).

3)  Processoren kan selv, under program eksekvering, gennemskue en uddelegering ( tror jeg ikke på ).

Mit spørgsmål er, om nogen har erfaring med hvordan det foregår, altså hvordan man i praksis udvikler/compilerer programmer, og evt. skriver "anvisninger" med henblik på en effektiv udnyttelse af en multicore processors 4 - 8 kerner ?


Brugbart svar (1)

Svar #1
22. november 2016 af Eksperimentalfysikeren

Det er dit forslag 1), der er det rigtige. Det er muligt, at der efterhånden er udviklet compilere, der opfylder 2), men jeg har ikke hørt om det.

Man skal bruge en compiler, der har faciliteten indbygget. Desværre har jeg ikke selv prøvet det, men jeg har set kode, hvor man i stedet for en for-løkke har en lignende konstruktion, hvor man "siger" til compileren, at det er her, den skal dele op. Der er så nogle restriktioner, netop af typen "det rager ikke jer", som skal være opfyldt.

Hvis du søger på Parallel programming, kan du finde links til sider, hvor du kan købe udviklingssystemer med egnede compilere. Der findes i hvert fald compilere til C++, C# og FORTRAN. Jeg ved ikke, om der findes gratiscompilere til parallel programmering, men jeg vil tro, der er en C++-compiler.

Læg mærke til, at der er en anden form for parallel programmering. Til grafiske programmer, og programmer med passende ligheder med det, kan man benytte grafikprocessoren til en væsentlig del af arbejdet. Her kan jeg nævne CUDA fra intel til brug på NAVIDIA processorer. Jeg nævner det dels for at give dig et tip om, at det kan lade sig gøre, og dels for at gøre dig opærksom på, at det ikke er alle links, der fører til noget med en multikerne-CPU


Skriv et svar til: Programmering, muticore processor

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.