<?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 Function &amp;quot;ReadSources()&amp;quot; to read .cl source file in OpenCL* for CPU</title>
    <link>https://community.intel.com/t5/OpenCL-for-CPU/Function-quot-ReadSources-quot-to-read-cl-source-file/m-p/777775#M277</link>
    <description>I read sample programs with Intel OpenCL SDK 1.5. In a sample of "BitonicSort", funtion name"ReadSources()" is used for reading .cl source file. This is the first time to find out this function. Please tell me where this function is defined and described. Is the function included to any API?&lt;BR /&gt;</description>
    <pubDate>Wed, 04 Apr 2012 09:22:39 GMT</pubDate>
    <dc:creator>kerotankcn_ne_jp</dc:creator>
    <dc:date>2012-04-04T09:22:39Z</dc:date>
    <item>
      <title>Function "ReadSources()" to read .cl source file</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/Function-quot-ReadSources-quot-to-read-cl-source-file/m-p/777775#M277</link>
      <description>I read sample programs with Intel OpenCL SDK 1.5. In a sample of "BitonicSort", funtion name"ReadSources()" is used for reading .cl source file. This is the first time to find out this function. Please tell me where this function is defined and described. Is the function included to any API?&lt;BR /&gt;</description>
      <pubDate>Wed, 04 Apr 2012 09:22:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/Function-quot-ReadSources-quot-to-read-cl-source-file/m-p/777775#M277</guid>
      <dc:creator>kerotankcn_ne_jp</dc:creator>
      <dc:date>2012-04-04T09:22:39Z</dc:date>
    </item>
    <item>
      <title>Function "ReadSources()" to read .cl source file</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/Function-quot-ReadSources-quot-to-read-cl-source-file/m-p/777776#M278</link>
      <description>ReadSources is a helper function which is common for all samples. You can find ReadSources functionimplementation in&lt;A&gt;\\common\\utils.cpp&lt;/A&gt; source file. The function declaration is in&lt;A&gt;\\common\\utils.h&lt;/A&gt;.This helperfunctionjust opens source .cl file and reads content in a char buffer for furtherOpenCL program creation usingclCreateProgramWithSource.</description>
      <pubDate>Wed, 04 Apr 2012 11:01:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/Function-quot-ReadSources-quot-to-read-cl-source-file/m-p/777776#M278</guid>
      <dc:creator>Dmitry_B_Intel1</dc:creator>
      <dc:date>2012-04-04T11:01:59Z</dc:date>
    </item>
    <item>
      <title>Function "ReadSources()" to read .cl source file</title>
      <link>https://community.intel.com/t5/OpenCL-for-CPU/Function-quot-ReadSources-quot-to-read-cl-source-file/m-p/777777#M279</link>
      <description>&lt;DIV&gt;Dear Sir,&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;Thank you. I can confirm a description of "ReadSource()" in \\common\\utils.cpp.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Then, does a program of NVIDIA OpenCL work in Intel OpenCL SDK 1.5? Is there the copatiblity between two? Because I find out the different descriptions of a procedure before .cl file reading compared between "BitonicSort" in Intel OpenCL SDK 1.5 sample program and a below program.&lt;/DIV&gt;&lt;DIV&gt;Here, I attach a sample program for NVIDIA OpenCL which includes "Hello.cpp" and "Hello.cl". As a result of running this program, a kernel program cannot be loaded.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Regards,&lt;/DIV&gt;&lt;DIV&gt;Noriko Etani&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;----------&lt;/DIV&gt;&lt;DIV&gt;Hello.cpp&lt;/DIV&gt;&lt;DIV&gt;----------&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;STDIO.H&gt;&lt;/STDIO.H&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;STDLIB.H&gt;&lt;/STDLIB.H&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#ifdef __APPLE__&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;OPENCL&gt;&lt;/OPENCL&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#else&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#include &lt;CL&gt;&lt;/CL&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#endif&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#define MEM_SIZE (128)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;#define MAX_SOURCE_SIZE (0x100000)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;int main()&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;{&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_device_id device_id = NULL;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_context context = NULL;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_command_queue command_queue = NULL;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_mem memobj = NULL;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_program program = NULL;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_kernel kernel = NULL;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_platform_id platform_id = NULL;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_uint ret_num_devices;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_uint ret_num_platforms;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; cl_int ret;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; char string[MEM_SIZE];&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; FILE *fp;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; char fileName[] = "./hello.cl";&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; char *source_str;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; size_t source_size;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; fp = fopen(fileName, "r");&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; if (!fp) {&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  fprintf(stderr, "Failed to load kernel.\n");&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  exit(1);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; }&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; source_str = (char*)malloc(MAX_SOURCE_SIZE);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; source_size = fread( source_str, 1, MAX_SOURCE_SIZE, fp);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; fclose( fp );&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clGetPlatformIDs(1, &amp;amp;platform_id, &amp;amp;ret_num_platforms);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clGetDeviceIDs( platform_id, CL_DEVICE_TYPE_DEFAULT, 1, &amp;amp;device_id, &amp;amp;ret_num_devices);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; context = clCreateContext( NULL, 1, &amp;amp;device_id, NULL, NULL, &amp;amp;ret);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; command_queue = clCreateCommandQueue(context, device_id, 0, &amp;amp;ret);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; memobj = clCreateBuffer(context, CL_MEM_READ_WRITE,MEM_SIZE * sizeof(char), NULL, &amp;amp;ret);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; program = clCreateProgramWithSource(context, 1, (const char **)&amp;amp;source_str,&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;				           (const size_t *)&amp;amp;source_size, &amp;amp;ret);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clBuildProgram(program, 1, &amp;amp;device_id, NULL, NULL, NULL);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; kernel = clCreateKernel(program, "hello", &amp;amp;ret);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clSetKernelArg(kernel, 0, sizeof(cl_mem), (void *)&amp;amp;memobj);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clEnqueueTask(command_queue, kernel, 0, NULL,NULL);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clEnqueueReadBuffer(command_queue, memobj, CL_TRUE, 0,&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;			        MEM_SIZE * sizeof(char),string, 0, NULL, NULL);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; puts(string);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clFlush(command_queue);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clFinish(command_queue);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clReleaseKernel(kernel);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clReleaseProgram(program);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clReleaseMemObject(memobj);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clReleaseCommandQueue(command_queue);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; ret = clReleaseContext(context);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; free(source_str);&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt; return 0;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;}&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;---------&lt;/DIV&gt;&lt;DIV&gt;Hello.cl&lt;/DIV&gt;&lt;DIV&gt;---------&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;__kernel void hello(__global char* string)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt; string[0] = 'H';&lt;/DIV&gt;&lt;DIV&gt; string[1] = 'e';&lt;/DIV&gt;&lt;DIV&gt; string[2] = 'l';&lt;/DIV&gt;&lt;DIV&gt; string[3] = 'l';&lt;/DIV&gt;&lt;DIV&gt; string[4] = 'o';&lt;/DIV&gt;&lt;DIV&gt; string[5] = ',';&lt;/DIV&gt;&lt;DIV&gt; string[6] = ' ';&lt;/DIV&gt;&lt;DIV&gt; string[7] = 'W';&lt;/DIV&gt;&lt;DIV&gt; string[8] = 'o';&lt;/DIV&gt;&lt;DIV&gt; string[9] = 'r';&lt;/DIV&gt;&lt;DIV&gt; string[10] = 'l';&lt;/DIV&gt;&lt;DIV&gt; string[11] = 'd';&lt;/DIV&gt;&lt;DIV&gt; string[12] = '!';&lt;/DIV&gt;&lt;DIV&gt; string[13] = '\0';&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;-----------------------------&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 09 Apr 2012 06:03:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/OpenCL-for-CPU/Function-quot-ReadSources-quot-to-read-cl-source-file/m-p/777777#M279</guid>
      <dc:creator>kerotankcn_ne_jp</dc:creator>
      <dc:date>2012-04-09T06:03:02Z</dc:date>
    </item>
  </channel>
</rss>

