Chapel

Tela Software:
Chapel
Detalhes de Software:
Versão: 1.3.0 Pre-Alpha
Data de upload: 11 May 15
Revelador: Cray Inc.
Licença: Livre
Popularidade: 12

Rating: nan/5 (Total Votes: 0)

Capela é uma nova linguagem de programação paralela que está sendo desenvolvido pela Cray Inc., como parte do programa de Sistemas de Computação de Alta Produtividade levou-DARPA (HPCS). Capela é projetado para melhorar a produtividade dos usuários de computadores high-end, ao mesmo tempo servindo como um modelo de programação paralela portátil que pode ser usado em clusters de commodities ou sistemas multicore desktop. Chapel se esforça para melhorar consideravelmente a capacidade de programação de computadores paralelos em grande escala casando ou superando o desempenho e portabilidade de modelos de programação atuais como MPI.
O aplicativo Chapel suporta um modelo de execução multithread via abstrações de alto nível para o paralelismo de dados, paralelismo de tarefas, concorrência e paralelismo aninhado. & Nbsp; tipo de localidade de Capela permite aos usuários especificar e raciocinar sobre a colocação de dados e tarefas em uma arquitetura alvo, a fim para sintonizar para localidade. Capela apoia-visão global de dados agregados com implementações definidas pelo usuário, permitindo operações em estruturas de dados distribuídos para ser expressa de uma forma natural. Ao contrário de muitos de nível superior linguagens paralelas anteriores, Capela é projetado em torno de uma filosofia multiresolution, permitindo que os usuários escrevam código inicialmente muito abstrato e, em seguida, adicionar gradualmente mais detalhes até que estejam o mais próximo possível da máquina como as suas necessidades exigem. Chapel suporta a reutilização de código e prototipagem rápida via projeto orientado a objetos, a inferência de tipos e características para programação genérica.
Capela foi concebido a partir de primeiros princípios, em vez de através da extensão de uma linguagem existente. É uma linguagem estruturada em blocos imperativo, projetado para ser fácil de aprender para usuários de C, C ++, Fortran, Java, Perl, Matlab, e outras linguagens populares. Enquanto Capela baseia-se em conceitos e sintaxe de muitas línguas anteriores, suas características paralelas são mais diretamente influenciada por ZPL,-High Performance Fortran (HPF), ea Cray MTA & trade; / Cray XMT & trade; extensões para C e Fortran

O que é novo nesta versão:.

  • Destaques (ver detalhes abaixo)
  • divisão 'def' palavra-chave em 'proc' (para os procedimentos) e 'iter' (para iterators)
  • (ver '$ CHPL_HOME / util / converter-defs --help' para ajuda a atualização dos códigos em vigor)
  • acrescentou distribuição "replicado" e melhor distribuição de 'Block-cíclica'
  • (veja a & quot; & quot Distribuições padrão; em especificação e exemplos / primers / distributions.chpl)
  • acrescentou camadas de tarefa única de localidade para Nanos ++ (BSC) e Qthreads (Sandia)
  • (ver doc / README.tasks)
  • grande reformulação da semântica e da implementação de gama
  • (veja a & quot; mudanças semânticas / Alterações a Capela Idioma & quot; abaixo para detalhes)
  • apoio inicial para tipos voláteis: bool, int, uint, real, imag
  • (ver doc / technotes / README.volatile)
  • Suporte para consts extern e classes (ponteiros-to-estruturas)
  • (ver doc / technotes / README.extern)
  • suporte melhorado para o paralelismo de dados sobre a Cray XMT
  • extensivas melhorias para os códigos de exemplo no diretório / exemplos
  • (veja 'códigos' Exemplo abaixo e exemplos / LEIA-ME)
  • acrescentou a maioria dos exemplos de código a partir da especificação de um novo diretório examples /
  • (ver exemplos / especificação / *)
  • acrescentou uma nota técnica que descreve a interface do mapa de domínio definido pelo usuário
  • (ver doc / technotes / README.dsi)
  • extensas atualizações para a especificação da linguagem
  • (veja a "Documentação" abaixo)
  • várias melhorias para a tarefa de tempo de execução e camadas de comunicação
  • (veja a & quot; Runtime Library Mudanças & quot; abaixo)
  • sintática / Naming Alterações
  • divisão 'def' palavra-chave em 'proc' (para os procedimentos) e 'iter' (para iterators)
  • (ver '$ CHPL_HOME / util / converter-defs --help' para ajuda a atualização dos códigos em vigor)
  • domínios renomeados 'aritmética' / matrizes para domínios "retangular" / matrizes
  • adicionou suporte para literais de ponto flutuante da forma "1.e ..."
  • (anteriormente, apenas "1e ... 'e' 1.0e ... 'foram apoiados)
  • As alterações semânticas / Alterações a Capela Idioma
  • várias melhorias para gamas (ver 'Ranges' capítulo da especificação de linguagem):
  • acrescentou um conceito de alinhamento para indicar um modulo alinhamento | stride |
  • acrescentou um operador 'align' e consulta para intervalos para especificar alinhamento / query
  • (por exemplo, '1..10 por 3 align 2' = & gt; '2, 5, 8' desde 2 == 5 == 8, mod 3)
  • == definido em intervalos em termos das seqüências inteiras que geram
  • ident definido (R1, R2) para dizer se R1 e R2 são semanticamente idênticas
  • definido '# k' para k & lt; 0 no sentido de & quot; contar a partir do final do intervalo & quot;
  • acrescentou 'primeiro', 'última', 'alignedLow,' métodos alignedHigh 'para intervalos
  • (por exemplo, '1..10 por -2' = & gt; primeiro == 10, último == 2, alignedLow = 2, alignedHigh = 10)
  • adicionado suporte para uma variedade de novas funções de consulta gama
  • (por exemplo, alignLow (), hasFirst (), hasLowBound (), isAligned (), boundsCheck () ...)
  • adicionou suporte para bool volátil, int, uint, real, e tipos imag
  • (ver doc / technotes / README.volatile)
  • adicionou uma verificação de fim-de-arquivo para o tipo de arquivo
  • (por exemplo., "Enquanto! Infile.eof ... ')
  • removeu o suporte para o tratamento de "regresso" no iterator como uma 'yield'
  • (por exemplo, mudança 'foo iter () {return x;}' para 'iter foo () {x rendimento; retorno;}')
  • adicionou suporte a módulos que fazem referência sem primeiro "eles-ing use'
  • (por exemplo, módulo M1 {var x ...} {... módulo M2 M1.x ...} agora é legal)
  • adicionou uma consulta callStackSize ao tipo locale
  • (por exemplo, 'here.callStackSize' retorna o tamanho da pilha de chamadas na localidade atual)
  • removido o ponto e vírgula anteriormente exigido a partir do final do enum declarações
  • (por exemplo, "cores enum {vermelho, azul, verde} 'é agora legal; anteriormente necessário'; ')
  • adicionado suporte para uma única vírgula à direita no final de listas enum
  • (por exemplo, "cores enum {vermelho, azul, verde,} 'é agora legal)
  • removeu o suporte para +/- operadores em domínios rectangulares; usar traduzir ()
  • Características recentemente implementados
  • == implementadas /! = Para rectangular, associativa e domínios esparsas
  • As distribuições padrão
  • acrescentou um primeiro projecto de distribuição "replicado" para armazenar dados de forma redundante
  • (ver exemplos / primers / distributions.chpl)
  • melhorada "Block-cíclica ', suficiente para implementar corretamente HPCC PTRANS e HPL
  • (ver exemplos / HPCC / ptrans.chpl, hpl.chpl; exemplos / primers / distributions.chpl)
  • redundância removida da especificação de iterators líder entre domínios / matrizes
  • módulos padrão
  • acrescentou INFINITY e NAN constantes ao módulo Math.chpl
  • (veja a 'matemática' em & quot; & quot Módulos padrão; em especificação de linguagem)
  • acrescentou isinf () e isFinite () rotinas de teste para o módulo Math.chpl
  • (veja a 'matemática' em & quot; & quot Módulos padrão; em especificação de linguagem)
  • acrescentou uma meia dúzia mais rotinas para o módulo GMP.chpl
  • Documentação
  • adicionou uma nova nota técnica que descreve a interface de domínio mapa definido pelo usuário
  • (ver doc / technotes / README.dsi)
  • fez muitas melhorias para a especificação da linguagem
  • principais revisões do capítulo Domínios para melhorar a clareza / precisão
  • melhorada e estrutura unificada de Registros e classes capítulos
  • principais revisões do capítulo Mapas de domínio para melhorar a clareza / precisão
  • códigos de exemplo chamado para fornecer uma referência cruzada para exemplos / especificação / programas
  • esclareceu a legalidade da etiqueta / break / continue em loops paralelos
  • atualizadas as descrições de ler [ln] / escrever [ln]
  • corrigidos alguns problemas em campos de arquivo de ordenação
  • reformatado a especificação como um "livro" em LaTeX
  • várias pequenas correções de erros de digitação / erros
  • definições melhoradas / descrições de vários termos
  • documentação de locale.name adicionado
  • e muitas outras mudanças ...
  • atualizado documento de referência rápida para incluir def- & gt; proc / mudança iter, alinhe op
  • .
  • reescreveu / reorganizada README.extern para esclarecer explicações e trazer up-to-date
  • acrescentou um README que descreve a declaração 'local' (doc / technotes / README.local)
  • acrescentou um README que descreve tipos voláteis (doc / technotes / README.volatile)
  • atualizados README.comm-diagnóstico de mencionar as estatísticas rápidas da forquilha
  • vários arquivos LEIA-ME atualizados
  • códigos de exemplo
  • colocada a maioria dos exemplos de código a partir da especificação de linguagem. a uma nova especificação / subdiretório
  • melhorou o / diretório de primers:
  • adicionou uma nova cartilha para usando procedimentos (primers / procedures.chpl)
  • adicionou uma cartilha básica para domínios (primers / domains.chpl)
  • renomeado as localidades cartilha para locales.chpl e melhorou-
  • melhorou o primer distribuições e acrescentou usos Block-cíclicos e replicados
  • atualizou a cartilha gama (primers / range.chpl)
  • melhorou o primer iterators (primers / iterators.chpl)
  • melhorou o primer reduções (primers / reductions.chpl)
  • adicionados GetCurrentTime () para o primário timers (primers / timers.chpl)
  • acrescentou descrições de alias de tipo e os tipos de configuração de variáveis ​​cartilha
  • (veja primers / variables.chpl)
  • melhorou diretório HPCC / benchmarks
  • acrescentou primeira versão do HPCC PTRANS para HPCC / diretório (ptrans.chpl)
  • acrescentou versão mais limpa de HPCC HPL para HPCC / diretório (hpl.chpl)
  • acrescentou um variantes / subdiretório de exemplos / HPCC a apresentar outras abordagens
  • acrescentou stream-promoted.chpl da comprovação da utilização da promoção no mundial STREAM Triad
  • acrescentou ra-cleanloop.chpl para mostrar mais limpo (mas atualmente mais lento) do kernel RA
  • exemplos de nível superior melhoradas:
  • renomeado existente & quot; Olá, mundo & quot; exemplos para sugerir uma ordem lógica de leitura
  • (ver exemplos / * Olá .chpl)
  • acrescentou dados de dados paralelos e distribuídos paralelos Olá, exemplos do mundo
  • (ver exemplos / hello3-datapar.chpl, exemplos / hello4-datapar-dist.chpl)
  • adicionados comentários aos vários Olá, exemplos do mundo (examples / * Olá .chpl)
  • atualizado todos os exemplos a semântica da linguagem atuais
  • use 'proc' / 'iter' em vez de 'def'
  • atualização para refletir nova semântica Faixa
  • Notas específicos da plataforma
  • para Cray XT / Cray XE, melhoraram as aprun e PBS-aprun lançadores
  • (veja a & quot; Lançador específica notas & quot; abaixo)
  • para Cray XMT, suporte adicional para loops paralelos em intervalos
  • para Cray XMT, acrescentou geração de noalias pragmas para forall variáveis ​​de laço
  • adicionou suporte para MareNostrum do BSC, incluindo documentos e um lançador de especial
  • (ver doc / plataformas / README.marenostrum)
  • Lançador específica notas
  • adicionou opções específicas do lançador para --help capacidade
  • melhorou propagação de códigos de status de saída através de lançadores
  • mudou lançadores para apoiar exec-base (e não baseado em sistema) comandos
  • feito lançadores de usar 'Desvincular' ao invés de sistema ('rm') para remover arquivos temporários
  • adicionado um lançador para BSC MareNostrum
  • reduzido número de arquivos temporários usados ​​para capturar a saída do 'sistema' comandos
  • aprun melhorias lançador:
  • adicionou uma bandeira --cc para especificar atribuição CPU w / em um nó
  • adicionou uma bandeira q para executar o lançador em modo silencioso
  • acrescentou capacidade de depuração via CHPL_LAUNCHER_DEBUG para manter os arquivos tmp ao redor
  • pbs-aprun melhorias lançador:
  • adicionou uma bandeira --cc para especificar atribuição CPU w / em um nó
  • acrescentou capacidade de depuração via CHPL_LAUNCHER_DEBUG para manter os arquivos tmp ao redor
  • limparam saída para se livrar de alguns a impressão estranha
  • Suporte lançador fez o nosso sistema de teste
  • acrescentou --walltime e bandeiras --queue para lançador como alternativas para env. vars.
  • Alterações Compiler
  • fez a impressão compilador 'true' / 'falso' no tipo de assinaturas, em vez de 1/0
  • acrescentou configuração param 'noRefCount' para desativar a contagem de referência (pode vazar memória)
  • compilador sinalizadores
  • adicionou uma bandeira --print-callstack-on-erro para mostrar o que levou a uma má chamada
  • adicionado um sinalizador --no-codegen para ignorar a geração de código e fase de vinculação
  • A interoperabilidade Alterações

  • Aulas & quot;
  • suporte para extern C & quot acrescentado; (Tipos de ponteiro-para-struct)
  • adicionou suporte para consts extern (ver README.extern)
  • Melhorias Mensagem de erro
  • adicionado um aviso órfão "utilização" instruções fora de módulos declarados
  • (por exemplo, 'usar M1; módulo M2 {}' deve ser tipicamente 'módulo M2 {uso M1;}')
  • feita mensagem de erro em tempo de análise usar o 'filename: lineno:' padrão de formato
  • gerada uma mensagem de erro para referindo-se a um nome de classe em um método primário
  • (por exemplo, "classe C {def Cm () {...}} 'agora gera uma mensagem de erro)
  • Correções de bugs / Novas verificações de semântica (semântica para velhos)
  • impedido tipos de configuração que está sendo definido usando sinalizadores de linha de comando tempo de execução
  • fixa a capacidade do compilador para lidar com os sindicatos sem campos
  • fixa as reduções minloc / maxloc para lidar com intervalos vazios / subranges de valores
  • reparado um bug em que o argumento 'caminho' para construtores de arquivo foi ignorado
  • feito sindicatos vazios funcionar correctamente
  • Corrigido um problema de estouro na segmentação para cima intervalos para distribuição / paralelização
  • reparado um bug que envolva o suporte para tipos de registro vazias extern
  • reparado um bug que envolve funções externo que retornam registros
  • reparado um bug relacionado a cópia de registros externos
  • implementação fixa de +/- operadores associativo / domínios esparsas
  • reparado um bug relativo a nomes de módulos baseados em nomes de arquivos que contenham múltiplos de s.
  • mensagens de erro agregado para expandir / exterior / interior em domínios irregulares
  • adicionado um erro para os construtores / destrutores com um tipo de retorno especificado
  • fixado um par de erros relacionados com o 'fast em' otimização
  • acrescentou um cheque contra a construção de aulas sem especificar campos genéricos
  • As mudanças de embalagem
  • adicionado código marcador sintaxe para GNU-fonte destaque
  • (veja etc / fonte-highlight / README)
  • melhoradas emacs colorir suporte para a versão 22.x
  • (veja etc / emacs / README)
  • alterações de coloração de sintaxe vim para refletir o novo 'proc' / palavras-chave 'iter'
  • (veja etc / vim / README)
  • adicionado um script para converter 'uso de' def códigos existentes 'para' iter '/' proc '
  • (veja $ CHPL_HOME / util / converter-defs)
  • exemplos e documentação multirealm removidos por enquanto
  • Third-Party Alterações Software
  • atualizado para a versão 1.16.1 GasNet
  • acrescentou cópias de Nanos do BSC ++ e do Sandia Qthreads
  • (veja de terceiros / README)
  • fez um passo a instalar post para GasNet que muda caminhos absolutos a relação
  • PVM removido para o momento devido à instabilidade
  • Runtime Library Mudanças
  • acrescentou camadas de tarefa única de localidade para Nanos ++ (BSC) e Qthreads (Sandia)
  • várias melhorias para a camada de runtime tasking:
  • adicionou uma nova interface para ter a chpl_main chamada camada tasking ()
  • mudou tasking função init para tomar args maxThreadsPerLocale / callStackSize
  • acrescentou uma capacidade de produção de tarefa para a interface camada tasking
  • melhorou código de tempo de execução para evitar o uso de sincronização vars antes de inicializar tasking
  • removido forma macro-ized de interface de tarefas; usando nomes padrão em vez
  • nomenclatura unificada de todas as rotinas da camada de tarefa para chpl_sync _ * () e chpl_task _ * ()
  • exigência removido para implementar a interface única variável
  • rescisão mudou de fios de camada tasking fifo para pthreads rosqueamento
  • implementação simplificada de variáveis ​​de sincronização na camada pthread rosqueamento
  • moveu a responsabilidade de contagens da linha de tasking fifo para pThread rosqueamento
  • várias melhorias para a camada de comunicação de runtime:
  • reestruturou a interface de comunicação para apoiar argumentos comprimento / tipo
  • acrescentou uma interface para non-blocking obter operações ao comm. Interface
  • unificou todos obter remoto operações de usar CHPL_COMM_GET () macro
  • refatorado / renomeados os cabeçalhos de interface de comunicação
  • Testing System
  • melhorou bastante o teste de desempenho e capacidades gráficas
  • (ver comentários na frente de start_test para documentação)
  • melhorou o apoio do sistema de testes para limpeza após si
  • capacidade adicional para evitar o uso de qualquer dissimulação de stdin
  • acrescentou uma opção para fornecer uma opção prediff todo o sistema
  • Adicionado a capacidade de usar o recurso de tempo limite nativo de um lançador em vez de Python
  • melhorou a forma como o sistema de teste mata um teste que expira
  • reparado um bug no qual os arquivos .preexec só funcionou se '.' estava em seu caminho
  • Interno
  • adicionado um sinalizador do compilador --break-on-id para desenvolvedores para localizar nó AST cria
  • melhor organização de conteúdos util / diretório
  • mudou a forma como os números de versão são computados / indicado para usuários baseados no SVN
  • adicionou suporte para tarefa- código do módulo / específicas do segmento
  • acrescentou uma capacidade de imprimir as contagens AST alocados entre cada passagem
  • adicionado um novo alias gdb para compilador --gdb: 'loc' imprime de um nó AST localização
  • melhorou muito implementação de pragmas / bandeiras para evitar casos de erro
  • removido vários exemplos de comparações de cadeias desnecessários no compilador
  • uso propenso a erros removido de CHPL_TASKS e CHPL_THREADS como símbolos de pré-processamento
  • acrescentou documentação BestPractices para desenvolvedores (não incluído no release)
  • mudou munging interna de '=' e '==' para 'ASSIGN "e" iguais ", respectivamente
  • adicionado um desenvolvedor bandeira --print-id-on-erro para imprimir ID AST em erros
  • melhorou a rigidez da C ++ protótipo verificação
  • acrescentou acordos contribuinte externos à árvore SVN (não no release)
  • acrescentou uma noção de tipos internos usados ​​pelo compilador, mas não o usuário

Programas semelhantes

Octave
Octave

2 Jun 15

TinyPie
TinyPie

12 May 15

X11-Basic
X11-Basic

20 Feb 15

byacc
byacc

3 Jun 15

Comentário para Chapel

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