Je rencontre un problème très étrange: Mu 9800GT ne semble pas calculer du tout. J'ai essayé tous les hello-mondes que j'ai trouvé sur internet, voici l'un d'eux:Cuda ne calcule pas ce que l'on attend, ignore silencieusement mon code
ce programme crée un tableau 1..100 sur les hôtes, l'envoie à l'appareil, calcule un carré de chaque valeur, retourne pour héberger, imprime les résultats.
#include "stdafx.h"
#include <stdio.h>
#include <cuda.h>
__global__ void square_array(float *a, int N)
{
int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx<N) a[idx] = a[idx] * a[idx];
}
// main routine that executes on the host
int main(void)
{
float *a_h, *a_d; // Pointer to host & device arrays
const int N = 100; // Number of elements in arrays
size_t size = N * sizeof(float);
a_h = (float *)malloc(size); // Allocate array on host
cudaMalloc((void **) &a_d, size); // Allocate array on device
// Initialize host array and copy it to CUDA device
for (int i=0; i<N; i++) a_h[i] = (float)i;
cudaMemcpy(a_d, a_h, size, cudaMemcpyHostToDevice);
// Do calculation on device:
int block_size = 4;
int n_blocks = N/block_size + (N%block_size == 0 ? 0:1);
square_array <<< n_blocks, block_size >>> (a_d, N);
// Retrieve result from device and store it in host array
cudaMemcpy(a_h, a_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
// Print results
for (int i=0; i<N; i++) printf("%d %f\n", i, a_h[i]);
// Cleanup
free(a_h); cudaFree(a_d);
}
de sorte que la sortie devrait être:
1 1,000
2 4,000
3 9,000
4 16,000
.. Je jure en 2009, il a parfaitement fonctionné (vista 32, deviceemu)
maintenant je sortie:
1 1,000
2 2,000
3 3,000
4 4.000
donc ma carte ne fait rien. Quel peut être le problème? La configuration est: Win7x64 visual studio 2010 32bit boîte à outils cuda 3.2 64bit
Paramètres de compilation: cuda 3.2 boîte à outils, plate-forme cible 32bit, deviceemu ou non - n'a pas d'importance, les résultats sont les mêmes. Je l'ai également essayé sur mon studio visuel 2008 de vmware xp (32bit). Le résultat est le même.
S'il vous plaît aidez-moi, j'ai à peine fait le programme pour compiler, maintenant j'en ai besoin pour travailler.
Vous pouvez également consulter mon projet avec tout ce qu'il faut de my post at nvidia forums (2,7 kb)
Merci, Ilya
Hey Ilya, Je suis confronté exactement au même problème, je l'ai mis en place d'abord sur mon ordinateur de bureau compatible CUDA où il fonctionne parfaitement, et quand je suis passé sur le super ordinateur, je reçois exactement même sortie. Que pensez-vous que je devrais faire? –