程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> GPGPU OpenCL中如何使用結構體數據

GPGPU OpenCL中如何使用結構體數據

編輯:關於C++

OpenCL編程中可以使用結構體,只需要在核函數kernel中提供同樣的結構體申明就可以啦。

如果在主函數中定義了結構體:

1 typedef struct studentNode{

2     int age;

3     float height;

4 }student;

主函數中定義數據,並傳輸給OpenCL kernel:

student *stu_input=(student*)malloc(sizeof(studentNode));
    stu_input->age=25;
    stu_input->height=1.8l;
    student *stu_output=(student*)malloc(sizeof(studentNode));
    
    cl_mem inputBuffer = clCreateBuffer(context, CL_MEM_READ_ONLY|CL_MEM_COPY_HOST_PTR, sizeof(studentNode),(void *)stu_input, NULL);
    cl_mem outputBuffer = clCreateBuffer(context, CL_MEM_WRITE_ONLY ,sizeof(studentNode), NULL, NULL);
    
    cl_kernel kernel = clCreateKernel(program,"structTest", NULL);
    
    status = clSetKernelArg(kernel, 0, sizeof(cl_mem), (void *)&inputBuffer);
    status = clSetKernelArg(kernel, 1, sizeof(cl_mem), (void *)&outputBuffer);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved