Articles of cuda

Cuda mémoire unifiée entre gpu et hôte

J’écris un programme basé sur cuda qui doit périodiquement transférer un ensemble d’éléments du GPU vers la mémoire de l’hôte. Afin de garder le processus asynchrone, j’espérais utiliser l’UMA de cuda pour avoir un tampon de mémoire et un indicateur dans la mémoire de l’hôte (afin que le GPU et le CPU puissent y accéder). […]

Poussée – Comment utiliser mon tableau / donnée – modèle

Je suis nouveau sur cuda et je veux effectuer quelques opérations sur les baies, mais je ne trouve aucun exemple similaire sur Internet. J’ai deux tableaux suivants (2d): a = { {1, 2, 3}, {4} } b = { {5}, {6, 7} } Je veux que la poussée calcule ce tableau: c = { {1, […]

problème cuPrintf

J’essaye de copier un tableau de struct sur device.Je travaille avec un atm de GPU et j’ai un problème avec la fonction cuPrintf que j’utilise pour déboguer mon code Ma définition de struct est comme ci-dessous: struct Node { char Key[25]; char ConsAlterKey[25]; char MasterKey[3]; int VowelDeletion; char Data[6]; char MasterData[6]; int Children[35]; int ChildCount; […]

Parallélisation d’une boucle for (convolution naïve 1D) dans CUDA

Quelqu’un peut-il m’aider à convertir une boucle nestede en un kernel CUDA? Voici la fonction que je tente de convertir en kernel CUDA: // Convolution on Host void conv(int* A, int* B, int* out) { for (int i = 0; i < N; ++i) for (int j = 0; j < N; ++j) out[i + […]

erreur de référence non définie pour la liaison de la bibliothèque statique ou partagée CUDA avec gcc

question gcc et cuda Salut, J’ai compilé une bibliothèque partagée CUDA mais je ne peux pas le lier au programme principal qui l’utilise. Je comstack le programme principal avec gcc. Le code: simplemain.c #include #include void fcudadriver(); int main() { printf(“Main \n”); fcudadriver(); return 0; } test.cu __global__ void fcuda() { } void fcudadriver() { […]

La carte GPU se réinitialise après 2 secondes

J’utilise une carte NVIDIA geforce qui génère une erreur après 2 secondes si j’essaie d’exécuter un programme CUDA dessus. J’ai lu ici que vous pouvez utiliser la clé TDRlevel dans HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers . Cependant, je ne vois pas de clé de ce type dans le registre. A-t-il besoin d’être ajouté vous-même? Quelqu’un d’autre a-t-il rencontré ce […]

utiliser free pour l’hôte entraîne une erreur de segmentation

J’ai un fichier cu avec le kernel comme: __global__ void kernel(float* A,float *B, curandState* globalState,int Asize,int Bsize) { …. } void kernel_wrapper(float** A_host,float** B_host, int Asize ,int Bsize) { … //allocate host memory *A_host=(float*)malloc(Asize*sizeof(float)); *B_host=(float*)malloc(Bsize*sizeof(float)); //allocate device memory float* A_dev,*B_dev; gpuErrchk(cudaMalloc((void**) &A_dev,Asize* sizeof(float))); gpuErrchk(cudaMalloc((void**) &B_dev,Bsize* sizeof(float))); // copy arrays from host to device gpuErrchk(cudaMemcpy(A_dev, *A_host,Asize* […]

Est-il possible de mettre des instructions d’assemblage dans le code CUDA?

Je souhaite utiliser le code assembleur dans le code CUDA C afin de réduire les exécutions coûteuses, comme nous le faisons avec la programmation asm in c. C’est possible?

CUDA: Multiplication masortingce-masortingce en mosaïque avec mémoire partagée et taille de masortingce non multiple de la taille de bloc

J’essaie de me familiariser avec la programmation CUDA et de passer un bon moment. Je regarde actuellement ce pdf qui traite de la multiplication masortingcielle, faite avec et sans mémoire partagée. Le code complet pour les deux versions peut être trouvé ici . Ce code est presque identique à celui contenu dans les échantillons de […]

Barrière entre blocs sur CUDA

Je souhaite implémenter une barrière interbloc sur CUDA, mais je rencontre un problème sérieux. Je ne peux pas comprendre pourquoi cela ne fonctionne pas. #include #include #include #define SIZE 10000000 #define BLOCKS 100 using namespace std; struct Barrier { int *count; __device__ void wait() { atomicSub(count, 1); while(*count) ; } Barrier() { int blocks = […]