IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCL Discussion :

Initiation à OpenCL, violation mémoire


Sujet :

OpenCL

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2016
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Initiation à OpenCL, violation mémoire
    Bonjour,
    je tente de construire un programme basique pour m'initier à la programmation avec OpenCL.

    Voici le programme en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
     
    #include <CL/cl.h>
     
    int main(int argc, char* argv[])
    {
    	cl_int error;
     
    	cl_platform_id platformID;
    	clGetPlatformIDs(1, &platformID, nullptr);
     
    	cl_device_id deviceID;
    	clGetDeviceIDs(platformID, CL_DEVICE_TYPE_GPU, 1, &deviceID, nullptr);
     
    	char name[100];
    	clGetDeviceInfo(deviceID, CL_DEVICE_NAME, 100, name, nullptr);
     
    	std::cout << "Device: " << name << std::endl;
     
    	const cl_context_properties contextProperties[] =
    	{
    		CL_CONTEXT_PLATFORM,
    		reinterpret_cast<cl_context_properties> (platformID),
    		0, 0
    	};
     
    	cl_context context = clCreateContext(contextProperties, 1, &deviceID, nullptr, nullptr, &error);
     
    	if (error != CL_SUCCESS)
    	{
    		//error
    	}
     
    	cl_command_queue queue = clCreateCommandQueue(context, deviceID, 0, &error);
     
    	if (error != CL_SUCCESS)
    	{
    		//error
    	}
     
    	//Allocation d'une image sur le GPU
    	static const cl_image_format format = { CL_RGBA, CL_FLOAT };
    	cl_mem outputImage = clCreateImage2D(context, CL_MEM_WRITE_ONLY, &format, WIDTH, HEIGHT, 0, nullptr, &error);
     
    	if (error != CL_SUCCESS)
    	{
    		//error
    	}
     
    	//chargement du fichier contenant le code du kernel OpenCL
    	FILE* file = fopen("kernel1.cl", "rb");
     
    	fseek(file, 0, SEEK_END);
    	const size_t size = ftell(file);
    	rewind(file);
     
    	char* source = new char[size];
    	fread(source, sizeof(char), size, file);
    	fclose(file);
     
    	// la violation semble se produire lors de cet appel
    	cl_program program = clCreateProgramWithSource(context, 1, reinterpret_cast<const char**>(source), &size, &error);
     
    	if (error != CL_SUCCESS)
    	{
    		//error
    	}
     
    	clBuildProgram(program, 1, &deviceID, nullptr, nullptr, nullptr);
     
    	[...]
     
    	//libération de la mémoire
    	delete[] source;
    	clReleaseProgram(program);
    	clReleaseMemObject(outputImage);
    	clReleaseCommandQueue(queue);
    	clReleaseContext(context);
    }
    La violation mémoire semble se produire lors de la creation du programme.
    Sauriez-vous quelles en sont les causes? Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 37
    Points : 72
    Points
    72
    Par défaut
    il doit y avoir un problème avec le contenu du fichier source kernel1.cl, mais comme tu ne l'a pas fourni, je ne peux pas essayer de t'aider plus...

Discussions similaires

  1. Violation Mémoire composant
    Par Kriboo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/08/2009, 14h35
  2. Affichage d'images : Violation d'adresse mémoire
    Par BnouK dans le forum Débuter
    Réponses: 5
    Dernier message: 14/05/2009, 10h07
  3. violation d'acces mémoire
    Par yesil08 dans le forum C++Builder
    Réponses: 15
    Dernier message: 03/04/2008, 15h25
  4. Violation de la Mémoire ?!
    Par Korko Fain dans le forum Delphi
    Réponses: 8
    Dernier message: 06/05/2007, 11h53
  5. Violation accès mémoire
    Par BenjaminLustrement dans le forum C
    Réponses: 9
    Dernier message: 09/06/2006, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo