OpenCL讀取內核cl文件

普遍上的OpenCL編程都分爲兩個部分,一個爲主機端代碼,一個爲設備端代碼。
主機端代碼的作用是:主要是負責設置設備執行代碼的環境,以及與設備端的通信。
設備端代碼的作用是:設備上所要執行的功能函數。

在主機端和設備端通信的過程中,會有一個讀取設備端代碼的過程。通常就是讀取cl文件。
因爲在創建程序對象program時,需要用到這個cl文件。創建程序對象就會把這個cl文件包括進程序對象中。然後生成內核對象kernel,最後發送到命令隊列,等待發送到設備上執行。

因此,讀取cl文件的目的是將文件融入到程序對象中,以便之後發送到設備上執行。

  /* Read program file and place content into buffer */
FILE *program_handle;
size_t program_size;
char *program_buffer;
program_handle = fopen(PROGRAM_FILE, "r");
   if(program_handle == NULL) {
      perror("Couldn't find the program file");
      exit(1);   
   }
   fseek(program_handle, 0, SEEK_END);
   program_size = ftell(program_handle);
   rewind(program_handle);
   program_buffer = (char*)malloc(program_size + 1);
   program_buffer[program_size] = '\0';
   fread(program_buffer, sizeof(char), program_size, program_handle);
   fclose(program_handle);

通過上面的代碼,將cl文件讀取到了program_buffer中,然後調用clCreateProgramWithSource來生成所需的程序對象。

注意:在創建完程序對象後,要記得釋放前面的program_buffer.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章