Articles of cuda

Cronometrando operações de CUDA

Eu preciso tempo uma execução do kernel CUDA. O Guia de Melhores Práticas diz que podemos usar events ou funções de synchronization padrão, como clock() no Windows. Meu problema é que usar essas duas funções me dá um resultado totalmente diferente. De fato, o resultado dado pelos events parece ser enorme em comparação com a […]

Forçando o CUDA a usar o registrador para uma variável

Eu tenho muitos registradores não utilizados no meu kernel. Gostaria de dizer ao CUDA para usar alguns registros para armazenar alguns dados, em vez de fazer uma leitura global de dados toda vez que eu precisar deles. (Eu não sou capaz de usar mem compartilhados.) __global__ void simple(float *gData) { float rData[1024]; for(int i=0; i<1024; […]

Uso de cudamalloc (). Por que o ponteiro duplo?

No momento, estou passando pelos exemplos de tutorial em http://code.google.com/p/stanford-cs193g-sp2010/ para aprender CUDA. O código que demonstra __global__ funções __global__ é dado abaixo. Ela simplesmente cria duas matrizes, uma na CPU e outra na GPU, preenche a matriz da GPU com o número 7 e copia os dados da matriz da GPU para a matriz […]

Em um kernel CUDA, como eu armazeno um array na “memory do thread local”?

Estou tentando desenvolver um pequeno programa com o CUDA, mas como era SLOW, fiz alguns testes e pesquisei um pouco. Descobri que, embora as variables ​​individuais sejam armazenadas por padrão na memory de encadeamento local, as matrizes geralmente não são. Eu suponho que é por isso que leva muito tempo para ser executado. Agora eu […]

CUDA determinando encadeamentos por bloco, blocos por grade

Eu sou novo no paradigma CUDA. Minha pergunta é determinar o número de encadeamentos por bloco e blocos por grade. Será que um pouco de arte e experimentação envolve isso? O que eu descobri é que muitos exemplos têm números aparentemente arbitrários escolhidos para essas coisas. Estou considerando um problema em que seria capaz de […]

Vetores de retorno do kernel de Cuda

Eu tenho uma lista de palavras, meu objective é combinar cada palavra em uma frase muito longa. Não estou tendo problemas em combinar cada palavra, meu único problema é retornar um vetor de estruturas contendo informações sobre cada correspondência. Em código: typedef struct { int A, B, C; } Match; __global__ void Find(veryLongPhrase * _phrase, […]

Copiando dados para a estrutura de dados “cufftComplex”?

Eu tenho dados armazenados como matrizes de carros alegóricos (precisão única). Eu tenho uma matriz para meus dados reais e uma matriz para meus dados complexos, que eu uso como input para FFTs. Eu preciso copiar esses dados para o tipo de dados cufftComplex se eu quiser usar a biblioteca cufft CUDA. Da nVidia: ” […]

CUBLAS: Inversão incorreta para matriz com pivô zero

Desde CUDA 5.5, a biblioteca CUBLAS contém rotinas para fatoração e inversão de matriz em cublasgetrfBatched ( cublasgetrfBatched e cublasgetriBatched respectivamente). Obtendo o guia da documentação, escrevi um código de teste para a inversão de uma matriz N x N usando essas rotinas. O código fornece a saída correta somente se a matriz tiver todos […]

Qualquer function específica para inicializar GPU diferente da primeira chamada cudaMalloc?

A primeira chamada cudaMalloc é lenta (como 0.2 seg) devido a alguns trabalhos de boot na GPU. Existe alguma function que apenas faça boot, para que eu possa separar o tempo? cudaSetDevice parece reduzir o tempo para 0.15 segundos, mas ainda não elimina todas as despesas gerais do init.

Programa CUDA faz com que o driver nvidia para falhar

Meu programa CUDA de cálculo Monte Carlo pi está causando meu driver nvidia para falhar quando eu exceder cerca de 500 tentativas e 256 blocos completos. Parece estar acontecendo na function do kernel monteCarlo. Qualquer ajuda é apreciada. #include #include #include #include #include #define NUM_THREAD 256 #define NUM_BLOCK 256 /////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////// // Function to sum […]