CnD

Software screenshot:
CnD
Dettagli del software:
Versione: 2012.1
Data di caricamento: 14 Apr 15
Sviluppatore: Andreas Kloeckner
Licenza: Libero
Popolarità: 11

Rating: nan/5 (Total Votes: 0)

CND è un traduttore Python source-to-source che rende l'utilizzo array n-dimensionale in C più piacevole & nbsp; E si accende questo codice.:
sgemm void (float * a, * b float, float * c, int n)
{
& Nbsp; la dimensione "fortran" un [n, n];
& Nbsp; la dimensione "fortran" b [n, n];
& Nbsp; dimensione 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;}
}
in questo:
sgemm void (float * a, * b float, 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;}
}
Si può anche dare un'occhiata a un esempio più completo che mostra alcuni extra campane e fischietti.
L'unico effetto di una dichiarazione dimensione è di modificare l'interpretazione dell'operatore indice di matrice (idx). dichiarazioni dimensione obbediscono regolari regole di visibilità C.
Vorrei anche sottolineare che CND è un traduttore basato parser-robusto, non uno strumento di sostituzione del testo traballante. Capisce tutto C99, oltre a molte estensioni GNU.
Ogni specifica asse in una dichiarazione dimensione ha la seguente forma:
inizio: fine: stride: leading_dimension
inizio può essere omessa. fine e stride, possono anche mancare, ma se le voci dopo di loro devono essere specificate, loro due punti finali devono rimanere in vigore. Ad esempio, la specifica dell'asse: 5 specifica semplicemente un passo di 5. Il passo funge semplicemente da un moltiplicatore sull'indice. Nessun controllo di sorta di plausibilità è fatto sulla dichiarazione dimensioni. Si può spararsi in un piede qualsiasi modo tu voglia.
Se il layout è data come "c" o non dato a tutti, le seguenti cose sono vere:
- L'array è disposto in ordine row-major.
- L'indice finale è preso per essere esclusivo, se specificato.
- Le impostazioni predefinite indice iniziale a 0.
Se il layout è data come "fortran", le seguenti cose sono vere:
- L'array è disposto in ordine column-major.
- L'indice finale è preso ad essere inclusiva, se specificato.
- Le impostazioni predefinite indice iniziale a 1.
(Most) della conoscenza contenuta nella dichiarazione dimensione può essere reobtained programmazione dalle funzioni follwing:
- Rankof (a)
- Nitemsof (a)
- Lboundof (un asse)
- Uboundof (a, asse) (riporta l'utente specificato limite superiore)
- Puboundof (a, asse) (restituisce l'indice subito dopo la fine dell'asse)
- Ldimof (un asse)
- Strideof (un asse)
In ciascun caso, asse deve essere un numero intero costante (non un'espressione costante, un intero semplice).
Installazione / Uso
È possibile ottenere CND scaricando il tarball dall'indice pacchetto, o da GitHub:
& Nbsp; git clone git: //github.com/inducer/cnd.git
& Nbsp; cd CND
 git modulo init
& Nbsp; git aggiornamento modulo
Per utilizzare CND, è sufficiente aggiungere distribuzione dir / bin al PATH.
Per iniziare, basta eseguire (all'interno della radice CND):
& nbsp; esempi cd
& Nbsp; ../ bin / cndcc gcc -std = c99 basic.c
& Nbsp; ./ a.out
Se volete un controllo più capillare sul processo di traduzione, il comando CND espone solo la traduzione source-to-source. Si noti che CND aspetta origine pre-elaborato. Si può passare l'-E possibilità di avere CND eseguire il preprocessore sul fonte per voi. Correre:
& Nbsp; CND -h
per ottenere il massimo aiuto per l'interfaccia a riga di comando. È possibile impostare la variabile d'ambiente CND_CPP al preprocessore che si desidera utilizzare.

Cosa c'è di nuovo in questa versione:

  • cambiamento Sintassi da una [i, j] a un [i, j] .
  • Ancora maggiore sostegno parser per le intestazioni di vita reale.

Requisiti :

  • Python

Altri software di sviluppo Andreas Kloeckner

PuDB
PuDB

20 Feb 15

PyOpenCL
PyOpenCL

28 Sep 15

Commenti a CnD

I commenti non trovato
Aggiungi commento
Accendere le immagini!