GPGPU OpenCL使用结构体数据

简介: OpenCL编程中可以使用结构体,只需要在核函数kernel中提供同样的结构体申明就可以啦。  如果在主函数中定义了结构体: 1 typedef struct studentNode{ 2 int age; 3 float height; 4 }student; ...

OpenCL编程中可以使用结构体,只需要在核函数kernel中提供同样的结构体申明就可以啦。

 如果在主函数中定义了结构体:

1 typedef struct studentNode{
2     int age;
3     float height;
4 }student;

 主函数中定义数据,并传输给OpenCL kernel:

 1     student *stu_input=(student*)malloc(sizeof(studentNode));
 2     stu_input->age=25;
 3     stu_input->height=1.8l;
 4     student *stu_output=(student*)malloc(sizeof(studentNode));
 5 
 6     cl_mem inputBuffer = clCreateBuffer(context, CL_MEM_READ_ONLY|CL_MEM_COPY_HOST_PTR, sizeof(studentNode),(void *)stu_input, NULL);
 7     cl_mem outputBuffer = clCreateBuffer(context, CL_MEM_WRITE_ONLY ,sizeof(studentNode), NULL, NULL);
 8 
 9     cl_kernel kernel = clCreateKernel(program,"structTest", NULL);
10 
11     status = clSetKernelArg(kernel, 0, sizeof(cl_mem), (void *)&inputBuffer);
12     status = clSetKernelArg(kernel, 1, sizeof(cl_mem), (void *)&outputBuffer);

下面是具体的OpenCL kernel,可以对学生的年龄、身高进行修改:

 1 typedef struct studentNode{
 2     int age;
 3     float height;
 4 }student;
 5 
 6 int growUp(__global student *stu_input ,__global student *stu_output)
 7 {
 8     stu_output->age=stu_input->age+1;
 9     stu_output->height=stu_input->height + 0.1;
10     return 0;
11 }
12 
13 __kernel void structTest(__global student *stu_input ,__global student *stu_output)
14 {
15     growUp(stu_input,stu_output);
16 }

执行输出:

注意:

  OpenCL中不支持字符串,如char string[32]="Hello World"。OpenCL不能确定字符串中有多少个有效字符,必须给定字符数量。

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
存储 缓存 算法
HLS介绍 - 01 - FPGA的架构、结构以及硬件设计相关概念(二)
HLS介绍 - 01 - FPGA的架构、结构以及硬件设计相关概念
406 0
HLS介绍 - 01 - FPGA的架构、结构以及硬件设计相关概念(二)
|
2月前
|
机器学习/深度学习 并行计算 流计算
【GPU】GPU CUDA 编程的基本原理是什么?
【GPU】GPU CUDA 编程的基本原理是什么?
48 0
|
缓存 openCL 算法
关于实现Halcon算法加速的基础知识(2)(多核并行/GPU)
关于实现Halcon算法加速的基础知识(多核并行/GPU)
2563 0
关于实现Halcon算法加速的基础知识(2)(多核并行/GPU)
|
存储 缓存 算法
HLS介绍 - 01 - FPGA的架构、结构以及硬件设计相关概念(一)
HLS介绍 - 01 - FPGA的架构、结构以及硬件设计相关概念
468 0
HLS介绍 - 01 - FPGA的架构、结构以及硬件设计相关概念(一)
|
人工智能 并行计算 Ubuntu
英伟达正式宣布开源 GPU 内核模块代码
近日,英伟达(NVIDIA)宣布,将 Linux GPU 内核模块作为开放源代码发布。早在几天前,NVIDIA 开始在 GitHub 上陆续公开相关代码,目前该项目已经收获 7.7k star,众多网友对本次开源纷纷表示难以置信。
285 0
英伟达正式宣布开源 GPU 内核模块代码
|
算法 openCL 异构计算
AMD力挺OpenCL 用GPU打造通用计算神话
本文讲的是AMD力挺OpenCL 用GPU打造通用计算神话,日前,中国高性能计算年会在长沙召开,展会公布了2009年最新的中国TOP 100,国防科技大学研制的天河一号超级计算机以1 PFlops(千万亿次)的计算速度夺得了中国超算排行榜的第一名。
1749 0
|
并行计算 openCL 算法
OpenCV算法加速(3)使用OpenCL
OpenCV算法加速(3)使用OpenCL
1344 0
|
算法 安全 程序员
关于实现Halcon算法加速的基础知识(1)(多核并行/GPU)
关于实现Halcon算法加速的基础知识(多核并行/GPU)
1060 0
关于实现Halcon算法加速的基础知识(1)(多核并行/GPU)
|
编解码 算法 openCL
FFmpeg在Intel GPU上的硬件加速与优化
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/83572780 ...
5928 0
|
并行计算 异构计算 编译器