CnD

Software screenshot:
CnD
Software informatie:
Versie: 2012.1
Upload datum: 14 Apr 15
Ontwikkelaar: Andreas Kloeckner
Licentie: Gratis
Populariteit: 11

Rating: nan/5 (Total Votes: 0)

CND is een Python source-to-source vertaler dat maakt het gebruik van n-dimensionale arrays in C aangenamer & nbsp; Het zal deze code draaien.:
leegte sgemm (float * a, float * b, float * c, int n)
{
& Nbsp; dimensie "Fortran" een [n, n];
& Nbsp; dimensie "Fortran" b [n, n];
& Nbsp; dimensie c [n, n];
& Nbsp; for (int i = 1; i <= n; ++ i)
& Nbsp; voor (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; voor (int k = 1; k <= n; ++ k)
& Nbsp; tmp + = een [i, k] * b [k, j];
& Nbsp c [i-1, j-1] = tmp;
& Nbsp;}
}
in deze:
leegte sgemm (float * a, float * b, float * c, int n)
{
& Nbsp; for (int i = 1; i <= n; ++ i)
& Nbsp; voor (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; voor (int k = 1; k <= n; ++ k)
& Nbsp; tmp + = een [((k - 1) * ((n - 1) + 1)) + (i - 1)] * b [((j - 1) * ((n - 1) + 1) ) + (k - 1)];
& Nbsp; c [((i - 1) * n) + (j - 1)] = tmp;
& Nbsp;}
}
U kunt ook een kijkje nemen op een meer uitgebreide voorbeeld dat een paar extra toeters en bellen toont.
Het enige effect van een afmeting-aangifte is tot de interpretatie van de array (idx) subscript operator te wijzigen. dimensie verklaringen gehoorzamen reguliere C scoping regels.
Ik zou ook willen opmerken dat CND is een robuuste, parser gebaseerde vertaler, niet een schilferige tekst vervangend gereedschap. Hij begrijpt al C99, plus vele GNU extensies.
Elke as specificatie in een dimensie verklaring heeft de volgende vorm:
start: einde: stride: leading_dimension
start worden weggelaten. end en stride kan ook worden weggelaten, maar als inzendingen na hen dienen te worden gespecificeerd, moeten hun achterstand dubbele punten op hun plaats blijven. Bijvoorbeeld, de as specificatie: 5 geeft slechts een stap 5. De stride eenvoudig werkt als een vermenigvuldiger van de index. Geen plausibiliteit controleren dan ook wordt gedaan op de dimensie verklaring. Kan je jezelf in de voet schieten zoals u dat wilt.
Als de lay-out wordt gegeven als "c" of niet gegeven helemaal niet, de volgende dingen waar zijn:
- De array wordt in rij-grote order vastgelegd.
- Het einde index wordt genomen exclusief te zijn, indien gespecificeerd.
- De start index staat standaard op 0.
Als de lay-out wordt gegeven als "Fortran", de volgende dingen waar zijn:
- De array is vastgesteld in kolom-grote order vastgelegd.
- Het einde index wordt genomen inclusief te zijn, indien opgegeven.
- De start index is standaard ingesteld op 1.
(Meeste) van de kennis die in de dimensie verklaring kan programmatisch worden reobtained door de volgenden functies:
- Rankof (a)
- Nitemsof (a)
- Lboundof (a, as)
- Uboundof (a, as) (geeft de gebruiker opgegeven bovengrens)
- Puboundof (a, as) (geeft de index net voorbij het einde van de as)
- Ldimof (a, as)
- Strideof (a, as)
In elk geval moet as een constante integer (geen constante expressie, een gewone integer) zijn.
Installatie / Gebruik
U mag CND verkrijgen door het downloaden van de tarball uit de verpakking index, of van GitHub:
& Nbsp; git clone git: //github.com/inducer/cnd.git
& Nbsp; cd CND
 git submodule init
& Nbsp; git submodule-update
Om CND gebruiken, voegt distributie-dir / bin aan uw PATH.
Om te beginnen, gewoon rennen (van binnen de CND root):
& Nbsp; cd voorbeelden
& Nbsp; ../ bin / cndcc gcc -std = c99 basic.c
& Nbsp; ./ a.out
Als u meer nauwkeurige controle over het vertaalproces zou willen, de CND commando bloot alleen de bron-tot-source vertaling. Merk op dat CND verwacht voorbewerkt bron. U kunt de optie -E om CND hebben lopen de preprocessor op uw bron voor je voorbij. Run:
& Nbsp; CND -h
tot volledige hulp op de command line interface te krijgen. U mag de CND_CPP omgevingsvariabele ingesteld op de preprocessor die u wilt gebruiken.

Wat is nieuw in deze release:

  • Syntax verandering van een [i, j] naar een [i, j] .
  • Nog meer parser ondersteuning voor real-life headers.

Eisen

  • Python

Andere software van ontwikkelaar Andreas Kloeckner

PuDB
PuDB

20 Feb 15

PyOpenCL
PyOpenCL

28 Sep 15

Reacties op CnD

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!