CnD

Tela Software:
CnD
Detalhes de Software:
Versão: 2012.1
Data de upload: 14 Apr 15
Revelador: Andreas Kloeckner
Licença: Livre
Popularidade: 75

Rating: nan/5 (Total Votes: 0)

CND é um tradutor Python fonte-a-fonte que torna o uso de matrizes n-dimensional em C & nbsp mais agradável; Ele vai se transformar este código.:
sgemm vazio (float * a, float * b, float * c, int n)
{
& Nbsp; dimensão "fortran" um [n, n];
& Nbsp; dimensão "fortran" b [n, n];
& Nbsp; dimensão c [N, N];
& Nbsp; for (int i = 1; i <= n; i ++)
& Nbsp; for (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; flutuador 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;}
}
a este:
sgemm vazio (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; flutuador tmp = 0;
& Nbsp; for (int k = 1; k <= n; k ++)
& Nbsp; tmp + = uma [((k - 1) * ((n - 1) + 1)) + (i - 1)] * b [((j - 1) * ((n - 1) + 1) ) + (k - 1)];
& Nbsp; c [((i - 1) * n) + (j - 1)] = tmp;
& Nbsp;}
}
Você também pode dar uma olhada em um exemplo mais abrangente que mostra alguns sinos e assobios extra.
O único efeito de uma declaração dimensão é modificar a interpretação do operador de índice de matriz (idx). declarações dimensão obedecer regras de escopo C regulares.
Eu também gostaria de observar que é CND, um tradutor robusta baseada no parser, não uma ferramenta de substituição de texto em flocos. Ele entende tudo de C99, além de muitas extensões GNU.
Cada especificação de eixo em uma declaração dimensão tem a seguinte forma:
Início: Fim: stride: leading_dimension
inicial pode ser omitido. final e passo também pode ser omitido, mas se as entradas depois deles estão a ser especificada, seus dois pontos de fuga deve permanecer no lugar. Por exemplo, a especificação eixo: 5 especifica apenas um passo de 5. O passo simplesmente actua como um multiplicador sobre o índice. Nenhuma verificação de qualquer plausibilidade é feito na declaração dimensão. Você pode atirar no próprio pé como você quiser.
Se o layout é dado como "c" ou não, dado a todos, as seguintes coisas são verdadeiras:
- A matriz é apresentado em ordem da maior linha.
- O índice final é levado para ser exclusiva, se especificado.
- Os padrões de índice início a 0.
Se o layout é dado como "fortran", as seguintes coisas são verdadeiras:
- A matriz é colocado para fora, a fim column-major.
- O índice final é levado para ser incluído, se for especificado.
- Os padrões de índice início a 1.
(Most) do conhecimento contido na declaração dimensão pode ser reobtained programaticamente as funções follwing:
- Rankof (a)
- Nitemsof (a)
- Lboundof (a, eixo)
- Uboundof (a, eixo) (retorna o especificado pelo usuário limite superior)
- Puboundof (a, eixo) (retorna o índice apenas após o final do eixo)
- Ldimof (a, eixo)
- Strideof (a, eixo)
Em cada caso, o eixo deve ser uma constante inteira (não é uma expressão constante, um inteiro claro).
Instalação / Usage
Você pode obter CND por baixar o arquivo a partir do índice de pacotes, ou a partir de github:
& Nbsp; git clone git: //github.com/inducer/cnd.git
& Nbsp; cd CND
 git o init submodule
& Nbsp; git update submodule
Para usar CND, basta adicionar distribuição-dir / bin ao seu PATH.
Para começar, basta executar (a partir de dentro da raiz CND):
& nbsp; exemplos cd
& Nbsp; ../ bin / gcc cndcc -std = c99 basic.c
& Nbsp; ./ a.out
Se você gostaria de um controle mais refinado sobre o processo de tradução, o comando CND expõe apenas a tradução da fonte ao source. Note-se que cnd espera fonte pré-processado. Você pode passar a opção -E ter CND executar o pré-processador da sua fonte para você. Execute:
& Nbsp; CND -h
para obter ajuda completa sobre a interface de linha de comando. Você pode definir a variável de ambiente CND_CPP para o pré-processador que você deseja usar.

O que é novo nesta versão:

  • Sintaxe mudança de um [i; j] para a [i, j] .
  • Ainda mais apoio parser para cabeçalhos da vida real.

Requisitos :

  • Python

Outro software de desenvolvedor Andreas Kloeckner

PuDB
PuDB

20 Feb 15

PyOpenCL
PyOpenCL

28 Sep 15

Comentário para CnD

Comentários não encontrado
Adicionar comentário
Ligue imagens!