2010-12-08 32 views
1

Je rencontre des problèmes lors de la fusion des données lors de l'utilisation du type de données float2 dans CUDA.CUDA float2 coalescing

J'ai essayé de faire un exemple simple à exécuter dans le profileur visuel mais il renvoie toujours des lectures non converties. Si quelqu'un pouvait faire la lumière sur ce sujet, je serais vraiment reconnaissant, merci. J'ai demandé cette question sur les forums de NVIDIA.

#include <stdio.h> 
#include <cuda_runtime_api.h> 

__global__ void kernel(float2 *in, float2 *out) { 
     int idx=blockIdx.x*blockDim.x+threadIdx.x; 
     float2 d=in[idx]; 
     d.x = 100.f; 

     out[idx] = d; 
} 

int main() { 
    const int dataSize=32; 
    float2 *in; 
    cudaMalloc((void**)&in,dataSize*sizeof(float2)); 

    float2 *out; 
    cudaMalloc((void**)&out,dataSize*sizeof(float2)); 
    kernel<<<1,32>>>(in,out); 
    return 0; 
} 
+0

quelle carte, architecture sm? – fabrizioM

+0

8800 GTX et Compute 1.0 – Ljdawson

Répondre

1

Il s'avère que les vecteurs de chargement ne sont pas optimisés en mode débogage. Forums