2013-04-07 1 views
1

J'ai été heureusement ignorer cela pendant un moment, mais c'est devenu un problème maintenant - j'espère que vous pouvez m'aider.cudaMallocPitch 'Invalid Arguments' malgré le guide de copie?

J'appelle cudaMallocPitch, mais quoi que j'essaie, il me donne le soulignement rouge et l'erreur 'arguments invalides'. Même quand je copie le code source du guide de programmation de Nvidia CUDA C il me donne toujours l'erreur. Je suis assez nouveau à CUDA, alors n'hésitez pas à signaler tout ce que vous pourriez penser serait évident qui pourrait causer le problème.

Voici le code exact je me réfère à:

int width = 64, height = 64; 
    float* devPtr; 
    size_t pitch; 
    cudaMallocPitch(&devPtr, pitch, 
        width * sizeof(float), height); 

Tout commentaire est très apprécié, acclamations.

+0

Il compile cependant? –

Répondre

1

Le deuxième paramètre est supposé être un size_t*, mais vous passez un size_t. Essayez ceci:

cudaMallocPitch(&devPtr, &pitch, width * sizeof(float), height); 

Notez également que le dernier type de paramètre est également size_t. Peut-être height serait mieux comme size_t.

+0

Puisque [cudaMallocPitch] (http://docs.nvidia.com/cuda/cuda-runtime-api/index.html#group__CUDART__MEMORY_1g80d689bc903792f906e49be4a0b6d8db) s'attend à rapporter la tonalité au processus appelant, nous devons lui transmettre l'adresse du terrain variable (c'est-à-dire passer comme un pointeur, par référence) afin qu'il puisse modifier 'pitch 'dans le processus appelant. 'height' comme un' int' plutôt que 'size_t' ne devrait pas avoir d'importance. –

+0

Toujours pas de chance! J'ai essayé votre code, ainsi que l'utilisation de height comme taille_t, mais il a toujours le soulignement rouge et la même erreur – Boyentenbi

+1

Le soulignement rouge peut être un effet secondaire de l'utilisation de CUDA dans VS. Vous pourriez vouloir rechercher "CUDA red underline" pour voir plus d'information à ce sujet. Si le code compile et fonctionne correctement (utilisez [vérification d'erreur !!!] (http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the -cuda-runtime-api)) le soulignement rouge est, bien, un rouge-hareng. Dans le cas contraire, publiez l'erreur renvoyée par ils * compilateur * et/ou l'erreur d'exécution * plutôt que d'utiliser ce qui est retourné par intellisense/visual studio. –

Questions connexes