<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic OpenCL.lib is missing  in OpenCL* for CPU</title>
    <link>https://community.intel.com/t5/OpenCL-for-CPU/OpenCL-lib-is-missing/m-p/1142295#M5920</link>
    <description>&lt;P&gt;Good evening,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm new to the forum and the hole OpenCL development. i installed the intel sdk intelFPGA_lite v 18.1. I'm using VS 2019.&lt;/P&gt;&lt;P&gt;it gave me this error :&lt;/P&gt;
&lt;PRE class="brush:cpp; class-name:dark;"&gt; // ConsoleApplication3.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include "CL/opencl.h"
#define QTE_DONNEES 60
int main(int argc, const char* argv[])
{
	// Variables pour la Plateforme de travail
	cl_platform_id  plateformeID;
	cl_uint qtePlateformes;
	cl_int  codeErreur;



	// Variables pour les périphériques contenant des unités de calcul
	cl_device_id    TOUS_peripheriqueID;
	cl_uint TOUS_qtePeripheriques;


	// Variables pour les contextes de travail
	cl_context  contexte;
	cl_context_properties   proprietes[3];


	// Variable pour les files d'exécution des commandes
	cl_command_queue    file_execution;

	// Variable pour la fonction à paralléliser
	cl_program  programme;

	const char* maFonctionAuCarre = {
		"__kernel void auCarre(__global int *input, __global int *output)\n"
		"{\n""int id = get_global_id(0);\n"
		"output[id] = input[id] * input[id];"
		"}\n"
	};
	// Variable pour le noyau qui exécutera
	// le programme contenant la fonction parallèle.
	cl_kernel   noyau;

	// Variables qui contiendront les données.
	int* inputData;
	int* outputData;
	cl_mem  input_buffer;
	cl_mem  output_buffer;

	// Initialisation des variables de données
	inputData = (int*)malloc(QTE_DONNEES * sizeof(int));
	outputData = (int*)malloc(QTE_DONNEES * sizeof(int));
	for (int i = 0; i &amp;lt; QTE_DONNEES; i++) {
		inputData&lt;I&gt; = i;
		outputData&lt;I&gt; = 0;
	}
	// --------------------------------------------------------------------
	// ----------------- Fin de la section des variables ------------------
	// --------------------------------------------------------------------// Création de la plateforme de travail
	codeErreur = clGetPlatformIDs(1, &amp;amp;plateformeID, &amp;amp;qtePlateformes);
	// Rechercher les PÉRIPHÉRIQUES dans le système, tout type confondu.
	codeErreur = clGetDeviceIDs(plateformeID,
		CL_DEVICE_TYPE_ALL,
		1,
		&amp;amp;TOUS_peripheriqueID,
		&amp;amp;TOUS_qtePeripheriques);
	// Création du contexte de travail
	proprietes[0] = (cl_context_properties)CL_CONTEXT_PLATFORM;
	proprietes[1] = (cl_context_properties)plateformeID;
	proprietes[2] = 0;
	contexte = clCreateContext(proprietes,
		TOUS_qtePeripheriques,
		&amp;amp;TOUS_peripheriqueID,
		NULL,
		NULL,
		&amp;amp;codeErreur);
	// Création de la file d'exécution pour le CPU
	file_execution = clCreateCommandQueue(contexte,
		TOUS_peripheriqueID,
		0,
		&amp;amp;codeErreur);
	// Construire le programme avec la fonction auCarre pour le CPU
	programme = clCreateProgramWithSource(contexte,
		1,
		(const char**)&amp;amp; maFonctionAuCarre,
		NULL,
		&amp;amp;codeErreur);

	// Compilation du programme
	codeErreur = clBuildProgram(programme,
		TOUS_qtePeripheriques,
		&amp;amp;TOUS_peripheriqueID,
		NULL,
		NULL,
		NULL);
	if (codeErreur != CL_SUCCESS) {
		// Si erreur de compilation, alors... Affichage du LOG de compilation
		char logErreurs[4096];
		size_t longueur_Log;
		clGetProgramBuildInfo(programme,
			TOUS_peripheriqueID,
			CL_PROGRAM_BUILD_LOG,
			sizeof(logErreurs),
			logErreurs,
			&amp;amp;longueur_Log);
		printf("\n[IMPRESSION DU JOURNAL DE COMPILATION]\n\n");
		printf("%s\n\n", logErreurs);
		printf("[FIN DU JOURNAL]\n\n"); return 1;
	}
	// Association des variables de données avec le tampon d'échange

	input_buffer = clCreateBuffer(contexte,
		CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
		sizeof(int) * QTE_DONNEES,
		inputData,
		&amp;amp;codeErreur);
	output_buffer = clCreateBuffer(contexte,
		CL_MEM_WRITE_ONLY | CL_MEM_COPY_HOST_PTR,
		sizeof(int) * QTE_DONNEES,
		outputData,
		&amp;amp;codeErreur);
	// Construire le noyau
	noyau = clCreateKernel(programme, "auCarre", &amp;amp;codeErreur);
	// Associer les tampons d'échanges avec
	// les arguments des fonctions à paralléliser
	codeErreur = clSetKernelArg(noyau,
		0,
		sizeof(input_buffer),
		&amp;amp;input_buffer);
	codeErreur = clSetKernelArg(noyau,
		1,
		sizeof(output_buffer),
		&amp;amp;output_buffer);
	// Mettre le noyau dans la file d'execution
	size_t dimensions_globales[] = { QTE_DONNEES, 0, 0 };
	codeErreur = clEnqueueNDRangeKernel(file_execution,
		noyau,
		1,
		NULL,
		dimensions_globales,
		NULL,
		0,
		NULL,
		NULL);

	// Récupération des résultats dans le tampon
	clEnqueueReadBuffer(file_execution,
		output_buffer,
		CL_TRUE,
		0,
		sizeof(int) * QTE_DONNEES,
		outputData,
		0,
		NULL,
		NULL);// Affichage des résultats
	printf("\n\n\n&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Affichage des resultats &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;");
	printf("\n\nContenu de la variable --inputData--\n");
	for (int i = 0; i &amp;lt; QTE_DONNEES; i++) {
		printf("%d; ", inputData&lt;I&gt;);
	}
	printf("\n\nContenu de la variable --outputData--\n");
	printf("Fonction --auCarre--\n");
	for (int i = 0; i &amp;lt; QTE_DONNEES; i++) {
		printf("%d; ", outputData&lt;I&gt;);
	}
	// Libération des ressources
	free(inputData);
	free(outputData);
	clReleaseMemObject(input_buffer);
	clReleaseMemObject(output_buffer);
	clReleaseProgram(programme);
	clReleaseKernel(noyau);
	clReleaseCommandQueue(file_execution);
	clReleaseContext(contexte);
	return 0;
}



&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Error&amp;nbsp;&amp;nbsp; &amp;nbsp;LNK1104&amp;nbsp;&amp;nbsp; &amp;nbsp;cannot open file 'OpenCl.lib'&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 10 Aug 2019 12:38:22 GMT</pubDate>
    <dc:creator>Abbes__Marwen</dc:creator>
    <dc:date>2019-08-10T12:38:22Z</dc:date>
    <item>
      <title>OpenCL.lib is missing</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/OpenCL-lib-is-missing/m-p/1142295#M5920</link>
      <description>&lt;P&gt;Good evening,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm new to the forum and the hole OpenCL development. i installed the intel sdk intelFPGA_lite v 18.1. I'm using VS 2019.&lt;/P&gt;&lt;P&gt;it gave me this error :&lt;/P&gt;
&lt;PRE class="brush:cpp; class-name:dark;"&gt; // ConsoleApplication3.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#define CL_USE_DEPRECATED_OPENCL_1_2_APIS
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include "CL/opencl.h"
#define QTE_DONNEES 60
int main(int argc, const char* argv[])
{
	// Variables pour la Plateforme de travail
	cl_platform_id  plateformeID;
	cl_uint qtePlateformes;
	cl_int  codeErreur;



	// Variables pour les périphériques contenant des unités de calcul
	cl_device_id    TOUS_peripheriqueID;
	cl_uint TOUS_qtePeripheriques;


	// Variables pour les contextes de travail
	cl_context  contexte;
	cl_context_properties   proprietes[3];


	// Variable pour les files d'exécution des commandes
	cl_command_queue    file_execution;

	// Variable pour la fonction à paralléliser
	cl_program  programme;

	const char* maFonctionAuCarre = {
		"__kernel void auCarre(__global int *input, __global int *output)\n"
		"{\n""int id = get_global_id(0);\n"
		"output[id] = input[id] * input[id];"
		"}\n"
	};
	// Variable pour le noyau qui exécutera
	// le programme contenant la fonction parallèle.
	cl_kernel   noyau;

	// Variables qui contiendront les données.
	int* inputData;
	int* outputData;
	cl_mem  input_buffer;
	cl_mem  output_buffer;

	// Initialisation des variables de données
	inputData = (int*)malloc(QTE_DONNEES * sizeof(int));
	outputData = (int*)malloc(QTE_DONNEES * sizeof(int));
	for (int i = 0; i &amp;lt; QTE_DONNEES; i++) {
		inputData&lt;I&gt; = i;
		outputData&lt;I&gt; = 0;
	}
	// --------------------------------------------------------------------
	// ----------------- Fin de la section des variables ------------------
	// --------------------------------------------------------------------// Création de la plateforme de travail
	codeErreur = clGetPlatformIDs(1, &amp;amp;plateformeID, &amp;amp;qtePlateformes);
	// Rechercher les PÉRIPHÉRIQUES dans le système, tout type confondu.
	codeErreur = clGetDeviceIDs(plateformeID,
		CL_DEVICE_TYPE_ALL,
		1,
		&amp;amp;TOUS_peripheriqueID,
		&amp;amp;TOUS_qtePeripheriques);
	// Création du contexte de travail
	proprietes[0] = (cl_context_properties)CL_CONTEXT_PLATFORM;
	proprietes[1] = (cl_context_properties)plateformeID;
	proprietes[2] = 0;
	contexte = clCreateContext(proprietes,
		TOUS_qtePeripheriques,
		&amp;amp;TOUS_peripheriqueID,
		NULL,
		NULL,
		&amp;amp;codeErreur);
	// Création de la file d'exécution pour le CPU
	file_execution = clCreateCommandQueue(contexte,
		TOUS_peripheriqueID,
		0,
		&amp;amp;codeErreur);
	// Construire le programme avec la fonction auCarre pour le CPU
	programme = clCreateProgramWithSource(contexte,
		1,
		(const char**)&amp;amp; maFonctionAuCarre,
		NULL,
		&amp;amp;codeErreur);

	// Compilation du programme
	codeErreur = clBuildProgram(programme,
		TOUS_qtePeripheriques,
		&amp;amp;TOUS_peripheriqueID,
		NULL,
		NULL,
		NULL);
	if (codeErreur != CL_SUCCESS) {
		// Si erreur de compilation, alors... Affichage du LOG de compilation
		char logErreurs[4096];
		size_t longueur_Log;
		clGetProgramBuildInfo(programme,
			TOUS_peripheriqueID,
			CL_PROGRAM_BUILD_LOG,
			sizeof(logErreurs),
			logErreurs,
			&amp;amp;longueur_Log);
		printf("\n[IMPRESSION DU JOURNAL DE COMPILATION]\n\n");
		printf("%s\n\n", logErreurs);
		printf("[FIN DU JOURNAL]\n\n"); return 1;
	}
	// Association des variables de données avec le tampon d'échange

	input_buffer = clCreateBuffer(contexte,
		CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
		sizeof(int) * QTE_DONNEES,
		inputData,
		&amp;amp;codeErreur);
	output_buffer = clCreateBuffer(contexte,
		CL_MEM_WRITE_ONLY | CL_MEM_COPY_HOST_PTR,
		sizeof(int) * QTE_DONNEES,
		outputData,
		&amp;amp;codeErreur);
	// Construire le noyau
	noyau = clCreateKernel(programme, "auCarre", &amp;amp;codeErreur);
	// Associer les tampons d'échanges avec
	// les arguments des fonctions à paralléliser
	codeErreur = clSetKernelArg(noyau,
		0,
		sizeof(input_buffer),
		&amp;amp;input_buffer);
	codeErreur = clSetKernelArg(noyau,
		1,
		sizeof(output_buffer),
		&amp;amp;output_buffer);
	// Mettre le noyau dans la file d'execution
	size_t dimensions_globales[] = { QTE_DONNEES, 0, 0 };
	codeErreur = clEnqueueNDRangeKernel(file_execution,
		noyau,
		1,
		NULL,
		dimensions_globales,
		NULL,
		0,
		NULL,
		NULL);

	// Récupération des résultats dans le tampon
	clEnqueueReadBuffer(file_execution,
		output_buffer,
		CL_TRUE,
		0,
		sizeof(int) * QTE_DONNEES,
		outputData,
		0,
		NULL,
		NULL);// Affichage des résultats
	printf("\n\n\n&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Affichage des resultats &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;");
	printf("\n\nContenu de la variable --inputData--\n");
	for (int i = 0; i &amp;lt; QTE_DONNEES; i++) {
		printf("%d; ", inputData&lt;I&gt;);
	}
	printf("\n\nContenu de la variable --outputData--\n");
	printf("Fonction --auCarre--\n");
	for (int i = 0; i &amp;lt; QTE_DONNEES; i++) {
		printf("%d; ", outputData&lt;I&gt;);
	}
	// Libération des ressources
	free(inputData);
	free(outputData);
	clReleaseMemObject(input_buffer);
	clReleaseMemObject(output_buffer);
	clReleaseProgram(programme);
	clReleaseKernel(noyau);
	clReleaseCommandQueue(file_execution);
	clReleaseContext(contexte);
	return 0;
}



&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Error&amp;nbsp;&amp;nbsp; &amp;nbsp;LNK1104&amp;nbsp;&amp;nbsp; &amp;nbsp;cannot open file 'OpenCl.lib'&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 10 Aug 2019 12:38:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/OpenCL-lib-is-missing/m-p/1142295#M5920</guid>
      <dc:creator>Abbes__Marwen</dc:creator>
      <dc:date>2019-08-10T12:38:22Z</dc:date>
    </item>
    <item>
      <title>Hello MarwenA,</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/OpenCL-lib-is-missing/m-p/1142296#M5921</link>
      <description>&lt;P&gt;Hello MarwenA,&lt;/P&gt;&lt;P&gt;OpenCL applications typically use the OpenCL ICD Loader Library (OpenCL.dll). The link time stub library used on Windows* OS is OpenCL.lib. It allows&amp;nbsp;the Windows OS dynamic&amp;nbsp;loader can use the selection capabilities of OpenCL.dll. In turn thet application can&amp;nbsp;use OpenCL implementations available on the target system.&lt;/P&gt;&lt;P&gt;On my system, OpenCL.lib is located in&amp;nbsp;C:\Program Files (x86)\IntelSWTools\OpenCL\sdk\lib\x64 or&amp;nbsp;C:\Program Files (x86)\IntelSWTools\OpenCL\sdk\lib\x86 for 64bit and 32bit applicaitons respectively.&lt;/P&gt;&lt;P&gt;Check to make sure it's in the project-&amp;gt;properties-&amp;gt;linker-&amp;gt;input tab underneath Additional Dependencies if you are using the gui to build.&lt;/P&gt;&lt;P&gt;Unfortunately, on my triage system I don't have disk space&amp;nbsp;for the FPGA lite deployment right now to check it's directory structure to confirm OpenCL.lib location.&lt;/P&gt;&lt;P&gt;Can you share from where you've accessed that sample?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;-MichaelC&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 12 Aug 2019 22:17:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/OpenCL-lib-is-missing/m-p/1142296#M5921</guid>
      <dc:creator>Michael_C_Intel1</dc:creator>
      <dc:date>2019-08-12T22:17:10Z</dc:date>
    </item>
  </channel>
</rss>

