CnD

Skjermbilde programvare:
CnD
Prog.varedetaljer:
Versjon: 2012.1
Last opp dato: 14 Apr 15
Lisens: Gratis
Popularitet: 11

Rating: nan/5 (Total Votes: 0)

CND er en Python kilde-til-kilde oversetter som gjør ved å bruke n-dimensjonale arrays i C nbsp mer behagelig &; Det vil slå denne koden.:
ugyldig sgemm (float * en, float * b, float * c, int n)
{
& Nbsp; dimensjon "Fortran" en [n, n];
& Nbsp; dimensjon "Fortran" b [n, n];
& Nbsp; dimensjon 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 + = a [i, k] * b [k, j];
& Nbsp; c [i-1, j-1] = tmp;
& Nbsp;}
}
inn i dette:
ugyldig sgemm (float * en, 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å ta en titt på en mer omfattende eksempel som viser noen ekstra bjeller og fløyter.
Den eneste effekten av en dimensjon erklæringen er å endre tolkningen av array (idx) senket operatør. dimensjon erklæringer adlyde vanlige C scoping regler.
Jeg vil også gjerne oppmerksom på at CND er en robust, parser-baserte oversetter, ikke en eksentrisk tekst erstatning verktøy. Det forstår alle av C99, pluss mange GNU utvidelser.
Hver akse spesifikasjon i en dimensjon erklæring har følgende form:
start: end: skrittlengde: leading_dimension
start kan utelates. enden og skride kan også utelates, men hvis oppføringer etter dem er å være spesifisert, må deres etterfølgende kolon forbli på plass. For eksempel aksen spesifikasjon: 5 rett og slett angir en skritt av 5. skritt ganske enkelt virker som en multiplikator på indeksen. Ingen plausibilitet sjekker alt det som er gjort på dimensjon erklæring. Du kan skyte deg selv i foten slik du vil.
Hvis oppsettet er gitt som "c" eller ikke gitt i det hele tatt, følgende er sant:
- Rekken er lagt ut i rad-stor ordre.
- Slutten indeksen er tatt for å være eksklusiv, hvis spesifisert.
- De start indeks standard til 0.
Hvis oppsettet er gitt som "Fortran", følgende er sant:
- Rekken er lagt ut i kolonne-stor ordre.
- Slutten indeksen er tatt for å være inkluderende, hvis spesifisert.
- De start indeks standard til en.
(De fleste) av den kunnskapen som finnes i dimensjon erklæring kan reobtained programmatisk ved follwing funksjoner:
- Rankof (a)
- Nitemsof (a)
- Lboundof (a, akse)
- Uboundof (a, akse) (returnerer den brukerdefinerte øvre grense)
- Puboundof (a, akse) (gir indeks like forbi enden av aksen)
- Ldimof (en, akse)
- Strideof (a, akse)
I hvert tilfelle må akse være en konstant heltall (ikke et konstant uttrykk, en vanlig heltall).
Installasjon / bruk
Du kan få CND ved å laste ned tarball fra pakken indeksen, eller fra github:
& Nbsp; git clone git: //github.com/inducer/cnd.git
& Nbsp; cd cnd
 git submodule init
& Nbsp; git submodule oppdatering
For å bruke CND, bare legge distribusjon-dir / bin til PATH.
For å komme i gang, er å kjøre (fra innenfor cnd root):
& nbsp; cd eksempler
& Nbsp; ../ bin / cndcc gcc -std = C99 basic.c
& Nbsp; ./ a.out
Hvis du ønsker mer finkornet kontroll over oversettelsesprosessen, utsetter cnd kommandoen bare kilde til kilde oversettelse. Merk at cnd forventer preprocessed kilde. Du kan passere muligheten -E å ha cnd kjøre preprocessor på kilden for deg. Løpe:
& Nbsp; cnd -h
for å få full hjelp på kommandolinjegrensesnittet. Du kan stille inn CND_CPP miljøvariabelen til preprosessor du ønsker å bruke.

Hva er nytt i denne utgaven:

  • Syntax endring fra et [i, j] til et [i, j] .
  • Enda mer parser støtte for virkelige overskrifter.

Krav :

  • Python

Annen programvare fra utvikleren Andreas Kloeckner

PyOpenCL
PyOpenCL

28 Sep 15

PuDB
PuDB

20 Feb 15

Kommentarer til CnD

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!