Sunday 24 December 2017

0xf0 binary options


Este documento apresenta o cuobjdump. Nvdisasm. E nvprune. Três ferramentas binárias CUDA para Linux (x86 e ARM), Windows, Mac OS e Android. Um arquivo CUDA binário (também conhecido como cubin) é um arquivo formatado em ELF que consiste de seções de código executável CUDA, bem como outras seções contendo símbolos, relocators, informações de depuração, etc. Por padrão, o driver de compilador CUDA nvcc incorpora arquivos de cubo No arquivo executável do host. Mas eles também podem ser gerados separadamente usando a opção - cubin do nvcc. Os arquivos de cubin são carregados em tempo de execução pela API de driver CUDA. Nota: Para obter mais detalhes sobre os arquivos do cubin ou a trajetória de compilação do CUDA, consulte NVIDIA CUDA Compiler Driver NVCC. CUDA fornece dois utilitários binários para examinar e desmontar arquivos de cubo e executáveis ​​de host: cuobjdump e nvdisasm. Basicamente, cuobjdump aceita arquivos de cubo e binários de host enquanto nvdisasm só aceita arquivos de cubo, mas nvdisasm fornece opções de saída mais ricas. Tabela 1. Comparação de cuobjdump e nvdisasm cuobjdump extrai informações de arquivos binários CUDA (tanto autônomos quanto incorporados em binários de host) e os apresenta em formato legível para humanos. A saída de cuobjdump inclui CUDA assembly código para cada kernel, CUDA ELF seção cabeçalhos, string tabelas, relocators e outras CUDA seções específicas. Ele também extrai o texto ptx embutido de binários de host. Para obter uma lista do conjunto de instruções de montagem CUDA de cada arquitetura de GPU, consulte Referência de conjunto de instruções. Cuobjdump aceita um único arquivo de entrada cada vez que é executado. A utilização básica é a seguinte: Para desmontar um cubo ou cubos autônomos incorporados em um executável do host e mostrar o assembly CUDA dos kernels, use o seguinte comando: Para despejar seções de cuda elf em formato legível de um arquivo de cubin, use o seguinte comando : Para extrair texto ptx de um binário de host, use o seguinte comando: Heres uma saída de amostra de cuobjdump. Conforme mostrado na saída, o binário do host a. out contém código de cubin e ptx para sm20. Para listar os arquivos do cubin no uso binário do host - lelf opção: Para extrair todos os cubins como arquivos do host binário use - xelf all option: Para extrair o cubin chamado addnew. sm30.cubin. Para extrair apenas os cubins contendo old em seus nomes: Você pode passar qualquer substring para - xelf e - xptx opções. Somente os arquivos com a substring no nome serão extraídos do binário de entrada. Para despejar informações de uso de recursos comuns e por função: Observe que o valor para REG, TEXTURE, SURFACE e SAMPLER denota a contagem e para outros recursos denota não. De byte (s) utilizado (s). A Tabela 2 contém as opções de linha de comando suportadas de cuobjdump. Juntamente com uma descrição do que cada opção faz. Cada opção tem um nome longo e um nome curto, que pode ser usado de forma intercambiável. Tabela 2. Opções de Linha de Comando cuobjdump --extract-elf ltpartial file namegt. Extraia o nome dos arquivos ELF contendo o nome do arquivo ltpartial e salve como arquivo (s). Use tudo para extrair todos os arquivos. Para obter a lista de arquivos ELF use a opção - lelf. Funciona com host executável / objeto / biblioteca e fatbin externo. Todas as opções de dump e lista são ignoradas com esta opção. --extract-ptx nome do arquivo ltpartial. Extraia o nome dos arquivos PTX contendo o nome do arquivo ltpartial e salve como arquivo (s). Use tudo para extrair todos os arquivos. Para obter a lista de arquivos PTX, use a opção - lptx. Funciona com host executável / objeto / biblioteca e fatbin externo. Todas as opções de dump e lista são ignoradas com esta opção. --função de função ltf. Especifique os nomes das funções do dispositivo cujas estruturas binárias de gordura devem ser despejadas. --function-index ltfunction indexgt. Especifique o índice da tabela de símbolos da função cujas estruturas binárias de gordura devem ser despejadas. --gpu-architecture ltgpu architecture namegt Especifica a arquitetura da GPU para a qual as informações devem ser despejadas. Valores permitidos para esta opção: sm20, sm21, sm30, sm32, sm35, sm37, sm50, sm52, sm53, sm60, sm61. Imprima esta informação de ajuda nesta ferramenta. Liste todos os arquivos ELF disponíveis no fatbin. Funciona com host executável / objeto / biblioteca e fatbin externo. Todas as outras opções são ignoradas com este sinalizador. Isso pode ser usado para selecionar ELF particular com a opção - xelf mais tarde. Liste todos os arquivos PTX disponíveis no fatbin. Funciona com host executável / objeto / biblioteca e fatbin externo. Todas as outras opções são ignoradas com este sinalizador. Isso pode ser usado para selecionar PTX específico com a opção - xptx mais tarde. Inclua opções de linha de comando do arquivo especificado. Nvdisasm extrai informações de arquivos de cubo autônomos e os apresenta em formato legível. A saída de nvdisasm inclui CUDA assembly código para cada kernel, lista de ELF dados seções e outras CUDA seções específicas. Estilo de saída e opções são controladas através de opções de linha de comando nvdisasm. O nvdisasm também controla a análise de fluxo para anotar alvos de salto / ramo e torna a saída mais fácil de ler. Observação: o nvdisasm requer informações de realocação completas para fazer análise de fluxo de controle. Se esta informação estiver ausente do binário CUDA, use a opção nvdisasm - ndf para desativar a análise de fluxo de controle ou use a opção ptxas e nvlink - preserve-relocs para re-gerar o arquivo cubin. Para obter uma lista do conjunto de instruções de montagem CUDA de cada arquitetura de GPU, consulte Referência de conjunto de instruções. Nvdisasm aceita um único arquivo de entrada cada vez que é executado. O uso básico é o seguinte: Para obter o gráfico de fluxo de controle de um kernel, use o seguinte: Heres uma saída de amostra de nvdisasm. O nvdisasm é capaz de gerar o fluxo de controle do assembly CUDA no formato da linguagem de descrição do gráfico DOT. A saída do fluxo de controle de nvdisasm pode ser importada diretamente para uma ferramenta de visualização de gráfico DOT, como Graphviz. Nota: Este recurso é suportado somente em cubins gerados para Compute Capability 3.0 e posterior. Heres como você pode gerar uma imagem PNG (cfg. png) do fluxo de controle do cubo acima (a. cubin) com nvdisasm e Graphviz: Heres o gráfico gerado: Figura 1. Gráfico de fluxo de controle nvdisasm é capaz de mostrar o registro ( CC, geral e predicado). Para cada linha de montagem CUDA, nvdisasm exibe se um determinado registro de dispositivo foi atribuído, acessado, ao vivo ou reatribuído. Mostra também o número total de registos utilizados. Isso é útil se o usuário estiver interessado no intervalo de vida de qualquer registro particular, ou registrar o uso em geral. Nota: Este recurso é suportado somente em cubins gerados para Compute Capability 3.0 e posterior. Heres uma saída de amostra (colunas esquerdas são omitidas): Tabela 3 contém as opções de linha de comando suportadas de nvdisasm. Juntamente com uma descrição do que cada opção faz. Cada opção tem um nome longo e um nome curto, que pode ser usado de forma intercambiável. Tabela 3. Opções de linha de comando do nvdisasm nvprune aceita um único arquivo de entrada cada vez que ele é executado, emitindo um novo arquivo de saída. O uso básico é o seguinte: O arquivo de entrada deve ser um objeto de host relocável ou uma biblioteca estática (não um executável de host) eo arquivo de saída terá o mesmo formato. A opção --arch ou --generate-code deve ser usada para especificar o (s) alvo (s) a ser mantido. Todo o outro código de dispositivo é descartado do arquivo. Os alvos podem ser um arco smNN (cubin) ou um arco computeNN (ptx). Por exemplo, o seguinte irá prune libcublasstatic. a para conter apenas sm35 cubin em vez de todos os alvos que normalmente existem: Note que isso significa que libcublasstatic35.a não será executado em qualquer outra arquitetura, por isso só deve ser usado quando você está construindo para Uma única arquitetura. A Tabela 7 contém as opções de linha de comando suportadas do nvprune. Juntamente com uma descrição do que cada opção faz. Cada opção tem um nome longo e um nome curto, que pode ser usado de forma intercambiável. Tabela 7. Opções da linha de comando nvprune Observação TODAS AS ESPECIFICAÇÕES, PLACAS DE REFERÊNCIA, ARQUIVOS, DESENHOS, DIAGNÓSTICOS, LISTAS E OUTROS DOCUMENTOS DA NVIDIA DESIGN (JUNTO E SEPARADAMENTE, MATERIAIS) ESTÃO SENDO FORNECIDOS COMO É. A NVIDIA NÃO OFERECE GARANTIAS, EXPRESSAS, IMPLÍCITAS, ESTATUTÁRIAS OU DE OUTRA FORMA COM RELAÇÃO AOS MATERIAIS E EXPRESSAMENTE SE ISENTA DE TODAS AS GARANTIAS IMPLÍCITAS DE NÃO INFRAÇÃO, COMERCIABILIDADE E ADEQUAÇÃO A UM DETERMINADO PROPÓSITO. A informação fornecida é acreditada para ser exata e de confiança. No entanto, a NVIDIA Corporation não assume qualquer responsabilidade pelas consequências da utilização de tais informações ou por qualquer violação de patentes ou outros direitos de terceiros que possam resultar da sua utilização. Nenhuma licença é concedida por implicação de outra forma sob quaisquer direitos de patente da NVIDIA Corporation. As especificações mencionadas nesta publicação estão sujeitas a alterações sem aviso prévio. Esta publicação substitui e substitui todas as outras informações anteriormente fornecidas. Os produtos NVIDIA Corporation não são autorizados como componentes críticos em dispositivos ou sistemas de suporte de vida sem a aprovação expressa e por escrito da NVIDIA Corporation. Marcas Registradas NVIDIA eo logotipo NVIDIA são marcas comerciais ou marcas registradas da NVIDIA Corporation nos Estados Unidos e em outros países. Outros nomes de empresas e produtos podem ser marcas comerciais das respectivas empresas com as quais estão associados.

No comments:

Post a Comment