CnD

Software skärmdump:
CnD
Mjukvaruinformation:
Version: 2012.1
Ladda upp dagen: 14 Apr 15
Utvecklare: Andreas Kloeckner
Licens: Gratis
Popularitet: 75

Rating: nan/5 (Total Votes: 0)

CND är en Python källa-till-source översättare som gör att använda n-dimensionella arrayer i C nbsp trevligare &; Det kommer att vända denna kod.:
void sgemm (float * a, float * b, float * c, int n)
{
& Nbsp; dimension "fortran" en [n, n];
& Nbsp; dimension "fortran" b [n, n];
& Nbsp; dimension c [n, n];
& Nbsp; for (int i = 1; i <= n; ++ i)
& Nbsp; för (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; för (int k = 1; k <= n; ++ k)
& Nbsp; tmp + = en [i, k] * b [k, j];
& Nbsp; c [i-1, j-1] = tmp;
& Nbsp;}
}
in i denna:
void sgemm (float * a, float * b, float * c, int n)
{
& Nbsp; for (int i = 1; i <= n; ++ i)
& Nbsp; för (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; för (int k = 1; k <= n; ++ k)
& Nbsp; TMP + = en [((k - 1) * ((n - 1) + 1)) + (i - 1)] * b [((j - 1) * ((n - 1) + 1) ) + (k - 1)];
& Nbsp; c [((i - 1) * n) + (j - 1)] = tmp;
& Nbsp;}
}
Du kan också ta en titt på ett mer omfattande exempel som visar några extra finesser.
Den enda effekten av en dimension deklaration är att modifiera tolkningen av arrayen (idx) nedsänkt operatör. dimensionsdeklarationer lyda regelbundna C överslagsregler.
Jag skulle också vilja påpeka att CND är en robust, parser-baserade översättare, inte ett gulaktigt textsysterverktyg. Det förstår alla C99, plus många GNU förlängningar.
Varje axel specifikation i en dimension deklaration har följande form:
start: end: stride: leading_dimension
start kan utelämnas. änden och steg får även utelämnas, men om poster efter dem ska anges måste deras avslutande kolon kvar. Till exempel, axeln specifikationen: 5 specificerar bara ett steg på 5. steg fungerar helt enkelt som en multiplikator på index. Ingen rimlighetskontroll alls sker på dimensionen deklarationen. Du kan skjuta dig själv i foten som du vill.
Om layouten anges som "c" eller inte ges alls, följande saker är sanna:
- Matrisen är anlagd i rad-stororder.
- Slutindex antas vara exklusivt, om det anges.
- De startindex standard 0.
Om layouten anges som "fortran", följande saker är sanna:
- Matrisen är anlagd i kolumn-stororder.
- Slutindex antas vara inkluderande, om det anges.
- De startindex standard 1.
(De flesta) av den kunskap som finns i dimensionen deklaration får reobtained prog av följande städerna funktioner:
- Rankof (a)
- Nitemsof (a)
- Lboundof (a, axel)
- Uboundof (a, axel) (returnerar användardefinierade övre gräns)
- Puboundof (a, axel) (returnerar index bara förbi slutet av axeln)
- Ldimof (a, axel)
- Strideof (a, axel)
I varje fall måste axeln vara en konstant heltal (ej en konstant uttryck, en vanlig heltal).
Installation / Användning
Du kan få CND genom att ladda ner arkivet från paketindex, eller från github:
& Nbsp; git clone git: //github.com/inducer/cnd.git
& Nbsp; cd cnd
 git delmodul init
& Nbsp; git delmodulen uppdatering
För att använda CND, helt enkelt lägga distributionen-dir / bin till din PATH.
För att komma igång, kör helt enkelt (inifrån cnd root):
& nbsp; cd exempel
& Nbsp; ../ bin / cndcc gcc -std = c99 basic.c
& Nbsp; ./ a.out
Om du vill ha mer finkornig kontroll över översättningsprocessen, exponerar kommandot cnd bara källan till source översättning. Observera att cnd förväntar förbehandlad källa. Du kan passera alternativet -E ha cnd köra preprocessorn på din källa för dig. Kör:
& Nbsp; CND -h
för att få fullt hjälp på kommandoraden. Du kan ställa in CND_CPP miljövariabeln till preprocessorn du vill använda.

Vad är nytt i den här versionen:

  • Syntax förändring från en [i; j] till en [i, j] .
  • Ännu mer parser stöd för verkliga rubriker.

Krav :

  • Python

Annan programvara för utvecklare Andreas Kloeckner

PyOpenCL
PyOpenCL

28 Sep 15

PuDB
PuDB

20 Feb 15

Kommentarer till CnD

Kommentarer hittades inte
Kommentar
Slå på bilder!