CnD

Sagteware kiekie:
CnD
Sagteware besonderhede:
Weergawe: 2012.1
Upload datum: 14 Apr 15
Ontwikkelaar: Andreas Kloeckner
Lisensie: Gratis
Populariteit: 11

Rating: nan/5 (Total Votes: 0)

CND is 'n Python bron-tot-source vertaler wat maak gebruik van n-dimensionele skikkings in C meer aangenaam & nbsp; Dit sal hierdie kode te draai.:
leemte sgemm (float * n, float * b, float * c, int n)
{
& Nbsp; dimensie "Fortran" 'n [n, n];
& Nbsp; dimensie "Fortran" b [n, n];
& Nbsp; dimensie c [n, n];
& Nbsp; vir (int i = 1; i <= n; ++ i)
& Nbsp; vir (Int J = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; vir (int k = 1; k <= n; ++ k)
& Nbsp; tmp + = n [i, k] * b [k, j];
& Nbsp; c [i-1, j-1] = tmp;
& Nbsp;}
}
in hierdie:
leemte sgemm (float * n, float * b, float * c, int n)
{
& Nbsp; vir (int i = 1; i <= n; ++ i)
& Nbsp; vir (Int J = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; vir (int k = 1; k <= n; ++ k)
& Nbsp; tmp + = n [((k - 1) * ((n - 1) + 1)) + (i - 1)] * b [((j - 1) * ((n - 1) + 1) ) + (k - 1)];
& Nbsp; c [((i - 1) * n) + (j - 1)] = tmp;
& Nbsp;}
}
Jy kan ook 'n blik op 'n meer omvattende voorbeeld wat toon 'n paar ekstra klokkies en fluitjies.
Die enigste effek van 'n dimensie verklaring is die interpretasie van die skikking (idx) subscript operateur te verander. dimensie verklarings gehoorsaam gereelde C bestekopname reëls.
Ek wil ook graag om daarop te let dat die CND is 'n robuuste, ontleder-gebaseerde vertaler, nie 'n vlokkerige teks vervanging hulpmiddel. Dit verstaan ​​al C99, plus baie GNU uitbreidings.
Elke as spesifikasie in 'n dimensie verklaring het die volgende vorm:
begin: einde: stride: leading_dimension
Begin weggelaat kan word. einde en stride kan ook weggelaat word, maar as inskrywings agter hulle is te vermeld word, moet hulle sleep dubbelpunte in plek bly. Byvoorbeeld, die as spesifikasie: 5 spesifiseer eenvoudig 'n stride van 5. Die stride tree bloot as 'n vermenigvuldiger op die indeks. Geen geloofwaardigheid kontrole hoegenaamd gedoen op die dimensie verklaring. Jy mag jouself skiet in die voet enige manier wat jy wil.
As die uitleg gegee as "c" of nie gegee nie, die volgende dinge is waar:
- Die skikking is uitgelê in ry-groot bestelling.
- Die einde indeks is geneem tot eksklusiewe, indien gespesifiseer.
- Die begin indeks verstek na 0.
As die uitleg gegee as "Fortran", die volgende dinge is waar:
- Die skikking is uitgelê in kolom-groot bestelling.
- Die einde indeks is geneem om inklusief te wees, indien gespesifiseer.
- Die begin indeks verstek na 1.
(Die meeste) van die kennis vervat in die dimensie verklaring kan programmaties reobtained word deur die follwing funksies:
- Rankof (a)
- Nitemsof (a)
- Lboundof (a, as)
- Uboundof (a, as) (gee die gebruiker-gespesifiseerde bogrens)
- Puboundof (a, as) (gee die indeks net verby die einde van as)
- Ldimof (a, as)
- Strideof (a, as)
In elk geval, moet as 'n konstante heelgetal (nie 'n konstante uitdrukking, 'n vlakte heelgetal) wees.
Installasie / Gebruik
Jy kan CND verkry deur die aflaai van die tarball van die pakket indeks, of van GitHub:
& Nbsp; git kloon git: //github.com/inducer/cnd.git
& Nbsp; cd CND
 git submodule init
& Nbsp; git submodule update
CND te gebruik, kan jy eenvoudig die verspreiding-r / bin te jou pad.
Om te begin, net hardloop (van binne die CND root):
& Nbsp; cd voorbeelde
& Nbsp; ../ bin / cndcc gcc -std = c99 basic.c
& Nbsp; ./ a.out
As jy wil graag meer fyn beheer oor die vertaling proses, die CND opdrag ontbloot die bron-tot-source vertaling. Let daarop dat CND verwag preprocessed bron. Jy kan die opsie -E te CND het hardloop die voorverwerker op jou bron vir jou slaag. Begin:
& Nbsp; CND h
volle hulp op die command line interface. Jy kan die CND_CPP omgewing veranderlike stel om die voorverwerker wat jy wil gebruik.

Wat is nuut in hierdie release:

  • Syntax verandering van 'n [i; j] 'n [i, j] .
  • Nog meer parser ondersteuning vir die werklike lewe headers.

Vereistes :

  • Python

Ander sagteware ontwikkelaar Andreas Kloeckner

PuDB
PuDB

20 Feb 15

PyOpenCL
PyOpenCL

28 Sep 15

Kommentaar te CnD

Kommentaar nie gevind
Kommentaar te lewer
Draai op die foto!