博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCL 获取Program信息
阅读量:7119 次
发布时间:2019-06-28

本文共 1716 字,大约阅读时间需要 5 分钟。

本程序生成一个OpenCL Program,然后获取Program的source,事实上它的source就是一个char[],能够打印出来。

然后我们把这些内容和原来文本的内容对照,看看是否是我们想要读入的内容。

还能够測试是否编译正确,假设不对会有输出提示的。

以下程序执行例如以下:

前面都是读入的函数代码。然后后面检查这些函数是否正确,能够看到第二个函数不对,由于*r未定义。

以下是完整代码:

#define _CRT_SECURE_NO_WARNINGS#include 
#include
#include
#ifdef MAC#include
#else#include
#endifnamespace program_build{const static int NUM_FILES = 2;const char PROGRAM_FILE_1[] = "good.cl";const char *PROGRAM_FILE_2 = "bad.cl";int run(){ /*program能够包括多个kernel,一个kernel相当于一个功能函数,由program包括在内存中,然后就能够使用kernel的功能了。 1 须要使用kernel,创建program,把kernel读入内存 2 须要把program和device连接起来 Host/device data structures */ cl_platform_id platform; cl_device_id device; cl_context context; cl_int i, err; /* Program data structures */ cl_program program; FILE *program_handle; char *program_buffer[NUM_FILES]; char *program_log; const char *file_name[] = {PROGRAM_FILE_1, PROGRAM_FILE_2}; const char options[] = "-cl-finite-math-only -cl-no-signed-zeros"; size_t program_size[NUM_FILES]; size_t log_size; /* Access the first installed platform */ err = clGetPlatformIDs(1, &platform, NULL); if(err < 0) { perror("Couldn't find any platforms"); exit(1); } /* Access the first GPU/CPU */ err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_GPU, 1, &device, NULL); if(err == CL_DEVICE_NOT_FOUND) { err = clGetDeviceIDs(platform, CL_DEVICE_TYPE_CPU, 1, &device, NULL); } if(err < 0) { perror("Couldn't find any devices"); exit(1); } /* Create a context */ context = clCreateContext(NULL, 1, &device, NULL, NULL, &err); if(err < 0) { perror("Couldn't create a context"); exit(1); } /* Read each program file and place content into buffer array */ for(i=0; i

你可能感兴趣的文章
【Python】supervisor 工具介绍
查看>>
浅谈嵌入式软件的未来发展
查看>>
Spark源码分析之二:Job的调度模型与运行反馈
查看>>
C#——await与async实现多线程异步编程
查看>>
如何找到一个好的Joomla主机提供商
查看>>
Dockerfile最佳实践(二)
查看>>
T-SQL Enhancement in SQL Server 2005[下篇]
查看>>
杀毒软件可能令企业用户陷入更大危机
查看>>
澳政府投资光伏发电 内外资项目角逐高额补助
查看>>
《从问题到程序:用Python学编程和计算》——2.4 字符串
查看>>
《AngularJS实战》——3.2 过滤器的应用
查看>>
《贝叶斯思维:统计建模的Python学习法》——2.5 封装框架
查看>>
《Cisco安全防火墙服务模块(FWSM)解决方案》——2.7 软件架构
查看>>
《R与Hadoop大数据分析实战》一2.6 小结
查看>>
微软重写 Windows 10 激活规则
查看>>
程序员的生存技巧 —— 搜索技巧
查看>>
《Scala机器学习》一一
查看>>
《版式设计——日本平面设计师参考手册》—第1章段落样式和字符样式的基础知识...
查看>>
为什么说选择正确的编程语言很重要,以及如何正确的选择
查看>>
2016 年:勒索病毒造成损失预估超过 10 亿美元
查看>>