CnD

Software screenshot:
CnD
Software detaljer:
Version: 2012.1
Upload dato: 14 Apr 15
Licens: Gratis
Popularitet: 11

Rating: nan/5 (Total Votes: 0)

CND er en Python source-til-source oversætter, der gør anvendelse af N-dimensionelle arrays i C mere behagelig & nbsp; Det vil slå denne kode.:
void sgemm (float * a, float * B, float * c, int n)
{
& Nbsp; dimension "Fortran" a [n, n];
& Nbsp; dimension "Fortran" B [n, n];
& Nbsp; dimension c [n, n];
& Nbsp; for (int i = 1; i <= n; ++ i)
& Nbsp; for (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; for (int k = 1 k <= n; ++ k)
& Nbsp; tmp + = en [i, k] * b [K, j];
& Nbsp; c [i-1, j-1] = tmp;
& Nbsp;}
}
i dette:
void sgemm (float * a, float * B, float * c, int n)
{
& Nbsp; for (int i = 1; i <= n; ++ i)
& Nbsp; for (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; for (int k = 1 k <= n; ++ k)
& Nbsp; tmp + = a [((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 også tage et kig på en mere omfattende eksempel, der viser et par ekstra klokker og fløjter.
Den eneste virkning af en erklæring dimension er at ændre fortolkningen af ​​array (IDX) sænket operatør. erklæringer dimension adlyder regelmæssige C scoping regler.
Jeg vil også gerne bemærke, at CND er en robust, parser-baserede oversætter, ikke en flaky tekst udskiftning værktøj. Det forstår alle C99, plus mange GNU extensions.
Hver akse specifikation i en erklæring dimension har følgende form:
starte: ende: skridtlængde: leading_dimension
begyndelse kan udelades. ende og skridtlængde kan også udelades, men hvis oplysningerne efter dem skal specificeres, skal deres efterstillede koloner forblive på plads. For eksempel aksen specifikationen: 5 blot specificerer en skridtlængde på 5. skridtlængde blot fungerer som en multiplikator på indekset. Ingen plausibilitetskontrol overhovedet sker på erklæringen dimensionen. Du kan skyde dig selv i foden som du har lyst.
Hvis layoutet angives som "C" eller ikke givet på alle, de følgende ting er sande:
- Opstillingen er lagt i række-stor ordre.
- Enden indeks antages at være eksklusiv, hvis det er angivet.
- Starten index standard 0.
Hvis layoutet angives som "Fortran", følgende ting er sande:
- Opstillingen er lagt ud i kolonne-stor ordre.
- Enden indeks antages at være inkluderende, hvis det er angivet.
- Starten index standard 1.
(De fleste) af den viden, der er indeholdt i erklæringen dimensionen kan reobtained programmeringsmæssigt af follwing funktioner:
- Rankof (a)
- Nitemsof (a)
- Lboundof (a, akse)
- Uboundof (a, akse) (giver brugerdefinerede øvre grænse)
- Puboundof (a, akse) (returnerer indekset lige forbi enden af ​​aksen)
- Ldimof (a, akse)
- Strideof (a, akse)
I hvert tilfælde skal akse være en konstant heltal (ikke en konstant udtryk, en almindelig heltal).
Installation / Anvendelse
Du kan få CND ved at downloade tar-arkivet fra pakken indeks, eller fra GitHub:
& Nbsp; git klon git: //github.com/inducer/cnd.git
& Nbsp; cd CND
 git submodule init
& Nbsp; git submodule opdatering
Hvis du vil bruge CND, blot tilføje distributionen-dir / bin til din PATH.
For at komme i gang, skal du blot køre (inde fra CND root):
& nbsp; eksempler cd
& Nbsp; ../ bin / cndcc gcc -std = c99 basic.c
& Nbsp; ./ a.out
Hvis du ønsker mere finkornet kontrol over oversættelsesprocessen, CND kommandoen udsætter blot kilden-til-source oversættelse. Bemærk, at CND forventer præprocesseret kilde. Du kan passere mulighed -E at have CND køre præprocessoren på din kilde for dig. Kør:
& Nbsp; CND -h
at få fuld hjælp på kommandolinjen. Du kan indstille miljøvariablen CND_CPP til præprocessoren du ønsker at bruge.

Hvad er nyt i denne udgivelse:

  • Syntaks ændring fra en [i; j] til en [i, j] .
  • Endnu mere parser støtte til det virkelige liv overskrifter.

Krav :

  • Python

Andre software developer Andreas Kloeckner

PyOpenCL
PyOpenCL

28 Sep 15

PuDB
PuDB

20 Feb 15

Kommentarer til CnD

Kommentarer ikke fundet
Tilføj kommentar
Tænd billeder!