Je suis novice dans SYCL / OpenCL / GPGPU. J’essaie de construire et d’exécuter un exemple de code du programme d’addition constante , #include #include #include #include namespace sycl = cl::sycl; //<> template class ConstantAdder { public: ConstantAdder(Acc accessor, T val) : accessor(accessor) , val(val) {} void operator() () { for (size_t i = 0; […]
Je souhaite obtenir la version du pilote de la carte vidéo nVidia. J’ai donc utilisé WMI et extrait les données de l’object “DriverVersion” de la classe “Win32_VideoController”. Mais c’était comme “9.18.13.1106” (version du fichier) et ce que je voulais, c’est quelque chose comme “311.06” (version imprimée). Où puis-je obtenir cette information? Si c’est impossible sur […]
Je travaille sur une application de stéréoscopie en C ++ et OpenGL (pour la visualisation d’images médicales). D’après ce que j’ai compris, la technologie était une grande nouvelle il y a environ 10 ans, mais elle semble s’être éteinte depuis. Il semble que de nombreuses entresockets investissent dans la technologie … y compris nVidia . […]
J’essaie de copier les données d’un cv::cuda::GpuMat dans une variable uint8_t* qui doit être utilisée dans un kernel. Le GpuMat contient des données d’image de résolution 752×480 et de type CV_8UC1. Voici l’exemple de code: uint8_t *imgPtr; cv::Mat left, downloadedLeft; cv::cuda::GpuMat gpuLeft; left = imread(“leftview.jpg”, cv::IMREAD_GRAYSCALE); gpuLeft.upload(left); cudaMalloc((void **)&imgPtr, sizeof(uint8_t)*gpuLeft.rows*gpuLeft.cols); cudaMemcpyAsync(imgPtr, gpuLeft.ptr(), sizeof(uint8_t)*gpuLeft.rows*gpuLeft.cols, cudaMemcpyDeviceToDevice); // […]
J’étais certain que si vous liez un tampon via glBindBuffer() , vous pouvez supposer en toute sécurité qu’il rest lié jusqu’à ce que la cible soit rebondie via un autre appel à glBindBuffer() . J’ai donc été assez surpris lorsque j’ai découvert que l’appel de glBindVertexArray() définit le tampon lié à la cible GL_ELEMENT_ARRAY à […]
J’ai implémenté la classe suivante en utilisant les stream CUDA class CudaStreams { private: int nStreams_; cudaStream_t* streams_; cudaStream_t active_stream_; public: // default constructor CudaStreams() { } // streams initialization void InitStreams(const int nStreams = 1) { nStreams_ = nStreams; // allocate and initialize an array of stream handles streams_ = (cudaStream_t*) malloc(nStreams_*sizeof(cudaStream_t)); for(int i […]
Quelqu’un peut-il me donner une bonne explication sur la nature de CUDA C et C ++? Si je comprends bien, CUDA est censé être C avec les bibliothèques de GPU de NVIDIA. Pour l’instant, CUDA C prend en charge certaines fonctionnalités C ++ mais pas d’autres. Quel est le plan de NVIDIA? Vont-ils s’appuyer sur […]
J’ai besoin d’utiliser le polymorphism dans mes kernelx. La seule façon de procéder consiste à créer ces objects sur le périphérique (pour qu’une table de méthode virtuelle soit disponible sur le périphérique). Voici l’object en cours de création class Production { Vertex * boundVertex; } class Vertex { Vertex * leftChild; Vertex * rightChild; } […]
J’écris un programme CUDA mais j’obtiens l’avertissement odieux: Warning: Cannot tell what pointer points to, assuming global memory space cela vient de nvcc et je ne peux pas le désactiver. Existe-t-il un moyen de filtrer les avertissements d’outils tiers (comme nvcc)? Je demande un moyen de filtrer hors de la fenêtre de sortie le journal […]
Supposons que j’ai un appel du kernel avec une grid 2D, comme ceci: dim3 dimGrid(x, y); // not important what the actual values are dim3 dimBlock(blockSize, blockSize); myKernel <<>>(); Maintenant, j’ai lu que les grids multidimensionnelles sont simplement destinées à faciliter la programmation – le matériel sous-jacent n’utilisera jamais que la mémoire 1D mise en […]