- 博客(14)
- 资源 (3)
- 收藏
- 关注
原创 Libb64:c/c++实现的base64编码解码库函数
base64编码解码本身也不复杂,但要自己写,还是得花点时间,如果能找到现成的可靠的代码,抄来最好,节省了测试的时间。 libb64就是实现base64编码解码的开源库,还提供了C++封装,用起来也挺方便代码下载地址 https://sourceforge.net/projects/libb64/下面是使用libb64 C++封装接口进行base64编码解码的调用代码/* * b64_wrapp
2016-03-31 12:11:41 8079 1
原创 zlib库内存压缩解压缩函数的C++便利性封装
zlib是提供数据压缩用的函数库,由Jean-loup Gailly与Mark Adler所开发,初版0.9版在1995年5月1日发表,普遍为许多软件所使用。 在使用zlib进行内存压缩解压缩的的时候主要用到的函数就是两个compress/uncompress。为了在C++中使用更方便,做一些便利性封装是非常必要的。 下面的代码中主要对zlib的内存压缩和解压缩进行了C++封装,出错以异常抛出。
2016-03-29 17:19:43 6738 2
原创 C++11:for_each_file遍历目录处理文件
经常我们需要对某个目录下的所有文件进行处理,这里我们需要列出目录下的文件,并找出符合要求的文件,然后才开始真正的处理工作。大部分情况下,这个流程都差不多,只是文件处理的内容不同,可不可以做一个类似#include<algorithm>中的for_each一样的函数,来把把这个过程抽象化呢? 基于这个想法,实现了for_each_file函数 代码如下:#include <functional>
2016-03-29 14:42:55 5890 3
原创 windows下MSVC兼容的dirent.h
dirent.h是一个应用程序接口,主要用于文件系统的目录读取操作,主要提供了几个目录数据读取函数,参见opengroup.orgint closedir(DIR *);//关闭目录DIR *opendir(const char *);//打开目录struct dirent *readdir(DIR *);//读取目录int
2016-03-29 13:33:38 10647 4
原创 c++:改造cmdline用于MSVC下的命令行参数解析
cmdline是一个轻量级的c++命令行参数解析工具,全部源码只有一个cmdline.h头文件,使用起来非常方便,关于如何使用它,不是本文讨论的重点,本文要说的是如何解决cmdline在MSVC下不能编译的问题。
2016-03-25 18:10:09 6550 4
原创 OpenCL: kernel中的向量关系运算符和等价运算符(>,<,>=,<=,==,!=)
opencl的kernel编程语言是C99标准的一个子集,在C99的基础上opencl增加了向量数据类型(Scalar Data Types):charn,ucharn,shortn,ushortn,intn,uintn,longn,ulongn,floatn,doublen(n=2,4,8,16)。 这些向量类型与基础的标量类型(Vector Data Types)一样支持各种算术和逻辑运算符。
2016-03-20 10:51:39 2431
原创 opencl C++接口: 关于CL_KERNEL_FUNCTION_NAME的一个坑
我的项目中所有的kernel在程序初始化时就被编译生成了,存放在一个std::unordered_map类型的map表中(kernel name为key),以后程序需要调用的时候,就通过kernel name来获取指定的cl::Kernel对象。 建这个表的时候,要创建cl::Kernel。常用的创建cl::Kernel的途径有两个:cl::Pro
2016-03-13 12:32:54 2425 1
原创 基于OpenCL的图像积分图算法实现
积分图的概念图像积分图算法在图像特征检测中有着比较广泛的应用,主要用于规则区域特征值的计算。 积分图的概念可用下图表示: 坐标A(x,y)的积分图是其左上角的所有像素之和(图中的阴影部分)。定义为: 在上图中,A(x,y)表示点(x,y)的积分图;s(x,y)表示点(x,y)的y方向的所有原始图像之和。积分图算法在CPU上的串行实现在CPU上串行实现积分图计算的典型代码如下: /*
2016-03-12 16:51:50 3917 2
原创 C++11:如何判断一个类是另一个模板类的子类?
我有一个模板类memory_cl,我需要判断另一个类是否为它的子类,怎么实现呢? 开始我问了度娘,在知乎上找到了答案 —>《如何判断一个类是否为一个模板类的实例?》 上面这个链接中给出了完整的答案:struct is_kind_of_{ template static std::true_type che
2016-03-10 12:45:19 5476
原创 opencl:cl::make_kernel的进化
我之前的一篇博客《opencl:C++ 利用cl::make_kernel简化kernel执行代码》详细说明了如何使用OpenCL C++接口(cl.hpp)提供cl::make_kernel算子来简化kernel执行代码。/* 缩放图像(双线性插值) */gray_matrix_cl gray_matrix_cl::zoom(size_t dst_width, size_t dst_height
2016-03-10 12:18:19 2504 1
原创 C++11:利用模板简化重载右值引用参数的函数
C++11标准中引入了右值的概念,是个非常好的东东,使用得当可以大大减少对象间无谓的复制(关于右值,左值的概念请自行问度娘)。左值引用版本和右值引用版本的函数下面是matrix_cl类的两个重载的构造函数,这两个构造函数除了最后一个参数不同,其他的参数都完全一样,只有最后一个参数不同(分别为右值和左值引用)。 当调用该构造函数时,如果最后一个参数为右值引用的时候,会优先调用第一个构造函数,使用移动
2016-03-08 17:05:43 1968 1
原创 opencl::kernel中获取local memory size
在OpenCL设备中一个workgroup中的所有work-item可以共用本地内存(local memory),在OpenCL kernal编程中,合理的利用local memory,可以提升系统的整体效率。 但是,根据OpenCL的标准,不论在kernel代码的编译期还是运行时,kernel程序在不借助主机端程序的帮助下,是无法知道当前设备(device)的local memory容量的。也就
2016-03-04 15:22:39 3739
原创 opencl:改造C++接口增加对内存编译(compile)的支持
OpenCL 1.2以前的标准(1.0,1.1),只支持单个源文件编译成可执行程序(Executable Program),所以只提供了clBuildProgram函数。 从OpenCL 1.2以后,可以将complie/link两个动作分开,增加了clCompileProgram, clLinkProgram函数,允许将多个源码编译成一个可执行程序,clCompileProgram将一段内核代码
2016-03-03 16:38:39 2016 3
原创 C++代码设计:向Java借鉴Builder模式塈OpenCL内核代码编译
Builder模式所谓的builder模式是指在设计Java代码时,当方法调用的参数过多的时候,可以用builder模式将所有参数封装在一个类中,然后将这个类的实例做为参数传递给方法。这样以来方法只需要接收一个类参数,就能获取所有想要的参数,尤其是对于多个类似方法,都需要差不多相同的参数的情况下,这种设计就更加有效率,可以减少方法调用的复杂度,减少出错的机会,如果你还不懂什么叫builder模式,这
2016-03-03 12:30:22 1377 1
CMake脚本在ultraedit中的语法高亮支持
2023-06-08
erpcgen-windows-x86_64.zip
2020-09-17
windows下MSVC兼容的dirent.h
2016-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人