随笔分类 -  GPU/OpenCL

GPGPU OpenCL 获取kernel函数编译信息
摘要:使用OpenCL编程时,kernel写成一个单独的文件或者将文件内容保存在一个string中。可以使用clBuildProgram对kernel进行编译链接(compiles & links),如果失败,可以使用clGetProgramBuildInfo获取OpenCL编译器对kernel的编译信息。1.clBuildProgram cl_int clBuildProgram ( cl_program program, //program cl_uint num_devices, //the number of device const cl_device_id *d... 阅读全文

posted @ 2014-04-03 11:07 旭东的博客 阅读(3929) 评论(0) 推荐(0) 编辑

GPGPU OpenCL/CUDA 高性能编程的10大注意事项
摘要:1.展开循环 如果提前知道了循环的次数,可以进行循环展开,这样省去了循环条件的比较次数。但是同时也不能使得kernel代码太大。 循环展开代码例子: 1 #include 2 using namespace std; 3 4 int main(){ 5 int sum=0; 6 for(int i=1;i2 int main()3 {4 int a=SIZE;5 printf("a=%d, SIZE=%d\n",a,SIZE);6 return 0;7 }View Code 编译: g++ -DSIZE=128 -o A Dmacro.cpp4... 阅读全文

posted @ 2014-03-30 21:24 旭东的博客 阅读(9918) 评论(1) 推荐(1) 编辑

GPGPU OpenCL 精确字符串查找
摘要:字符串查找是信息安全、信息过滤领域的重要操作,尤其是对大文本的实时处理。这篇作为实例,使用GPU OpenCL进行精确模式串查找。1.加速方法 (1)将少量常量数据,如模式串长度、文本长度等,保存在线程的private memory中。 (2)将模式串保存在GPU的local memory中,加速线程对模式串的访问。 (3)将待查找的文本保存在global memory中,使用尽可能多线程访问global memory,减小线程平均访存时间。 (4)每个work-group中的线程操作文本中一段,多个work-group并行处理大文本。2.同步 (1)work-group内,使用CL... 阅读全文

posted @ 2014-03-28 14:57 旭东的博客 阅读(2413) 评论(0) 推荐(0) 编辑

GPGPU OpenCL使用结构体数据
摘要: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_o... 阅读全文

posted @ 2014-03-19 15:44 旭东的博客 阅读(3672) 评论(0) 推荐(0) 编辑

GPGPU OpenCL Reduction操作与group同步
摘要:Reduction操作:规约操作就是由多个数生成一个数,如求最大值、最小值、向量点积、求和等操作,都属于这一类操作。有大量数据的情况下,使用GPU进行任务并行与数据并行,可以收到可好的效果。group同步:OpenCL只提供了工作组内的各线程之间的同步机制,并没有提供所有线程的同步。提供组内item-work同步的方法: void barrier (cl_mem_fence_flags flags) 参数说明:cl_mem_fence_flags 可以取CLK_LOCAL_MEM_FENCE、CLK_GLOBAL_MEM_FENCE 函数说明:(1)一个work-group中所有work... 阅读全文

posted @ 2014-03-17 17:14 旭东的博客 阅读(5494) 评论(1) 推荐(0) 编辑

VS2010 OpenCL运行环境配置
摘要:1.安装AMD GPU显卡驱动(安装后重启) 13-12_win7_win8_64_dd_ccc_whql.exe2.安装AMD OpenCL SDK(安装后重启) AMD-APP-SDK-v2.9-Windows-641.exe3.配置VS2010 OpenCL环境 (1)添加外部头文件 在项目->properties ->Configuration Proprtties->C/C++->General中设置。 (2)添加外部依赖OpenCL.lib 添加OpenCL.lib所在路径 在项目->properties ->Configuration Prop 阅读全文

posted @ 2014-03-14 18:15 旭东的博客 阅读(3970) 评论(1) 推荐(0) 编辑

GPGPU OpenCL 获取设备信息
摘要:在使用OpenCL编程中,需要对GPU设备的底层理解,这样才能更好的进行代码优化。比如计算单元CU数量,每个CU的执行单元PE数量,每个CU中的共享内存大小等等。只有了解了这些才能更好的使用共享内存,设计核函数的运行参数等。本文:http://www.cnblogs.com/xudong-bupt/p/3586050.html1.clGetDeviceInfo OpenCL使用clGetDeviceInfo函数获取设备具体,函数原型如下: cl_int clGetDeviceInfo ( cl_device_id device, //设备id号 cl_device_info... 阅读全文

posted @ 2014-03-07 12:11 旭东的博客 阅读(9224) 评论(2) 推荐(1) 编辑

GPGPU OpenCL编程步骤与简单实例
摘要:http://www.cnblogs.com/xudong-bupt/p/3582780.html1.OpenCL概念 OpenCL是一个为异构平台编写程序的框架,此异构平台可由CPU、GPU或其他类型的处理器组成。OpenCL由一门用于编写kernels (在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。 OpenCL提供了两种层面的并行机制:任务并行与数据并行。2.OpenCL与CUDA的区别 不同点:OpenCL是通用的异构平台编程语言,为了兼顾不同设备,使用繁琐。 CUDA是nvidia公司发明的专门在其GPGPU上的编程的框架... 阅读全文

posted @ 2014-03-06 17:37 旭东的博客 阅读(26333) 评论(0) 推荐(1) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示