Articles of gpgpu

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 […]

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 = […]

envoi d’un tableau 3d au kernel CUDA

J’ai pris le code donné comme réponse pour Comment puis-je additionner deux tableaux 2d (pitchés) en utilisant des boucles nestedes? et essayé de l’utiliser pour la 3D au lieu de la 2D et modifier légèrement d’autres parties, maintenant, il se présente comme suit: __global__ void doSmth(int*** a) { for(int i=0; i<2; i++) for(int j=0; j<2; […]

Ne fonctionne pas dans le kernel CUDA

Ok, je suis assez nouveau dans CUDA, et je suis un peu perdu, vraiment perdu. J’essaie de calculer pi en utilisant la méthode de Monte Carlo, et à la fin, je ne reçois qu’un ajout au lieu de 50. Je ne veux pas “faire le temps” pour appeler le kernel, car il est trop lent. […]

utilisation de magma_dysevd dans le fichier mex matlab

J’essaie d’écrire use magma library dans matlab, donc j’écris une fonction mexfunction qui incorpore du code c à l’aide de la fonction magma, puis je la comstack en fichier mexa64. Le code mexfunction ou source c est ci-dessous: (appelé eig_magma) #include #include #include #include #include #include // includes, project #include “flops.h” #include “magma.h” #include “magma_lapack.h” […]

Générer un index en utilisant CUDA-C

J’essaie de générer un ensemble d’indices ci-dessous: J’ai un bloc cuda composé de 20 blocs (blockIdx: de 0 à 19), chaque bloc étant divisé en 4 blocs (sous-bloc Idx: 0,1,2 et 3). J’essaie de générer un motif d’index comme ceci: threadIdx (id), SubBlockIdxA (SA), SubBlockIdxB (SB), BlockIdxA (BA), BlockIdxB (BB) Required Obtained tid SBA SBB […]

clGetProgramBuildInfo n’imprime pas le journal de génération

J’ai écrit un code dans OpenCL. Il y a une erreur lors de la construction du programme du kernel. Le code d’erreur est -11. J’ai essayé d’imprimer le BUILD LOG mais il n’imprime pas un journal approprié mais génère des variables aléatoires. Voici cette partie //these are variable declarations cl_device_id* devices; cl_program kernelprgrm; size_t size; […]

Amélioration de l’access aléatoire à la mémoire lorsqu’un access aléatoire est nécessaire

Le concept de base de ce que je fais Problème complet de formation de la structure de coalition / Ventes aux enchères combinatoires. Étant donné un ensemble de N agents, les sous-ensembles disjoints de l’ensemble d’agents donnent le meilleur résultat. Par exemple, Agents = {a,b} et leurs valeurs {a} = 2 {b} = 3 {a,b} […]

Effet __forceinline__ dans les fonctions CUDA C __device__

Il existe de nombreux conseils pour savoir quand utiliser les fonctions inline et quand l’éviter dans le codage C normal. Quel est l’effet de __forceinline__ sur les fonctions CUDA C __device__ ? Où devraient-ils être utilisés et où être évités?

Comment allouer dynamicment des tableaux à l’intérieur d’un kernel?

J’ai besoin d’allouer dynamicment des tableaux à l’intérieur de la fonction du kernel. Comment puis-je faire ça? Mon code est quelque chose comme ça: __global__ func(float *grid_d,int n, int nn){ int i,j; float x[n],y[nn]; //Do some really cool and heavy computations here that takes hours. } Mais ça ne marchera pas. Si cela se trouvait […]