- 博客(10)
- 资源 (3)
- 收藏
- 关注
原创 CMake Error: ...Missing variable is: CMAKE_FIND_LIBRARY_
今天在使用cmake的find_library命令时,cmake居然报错: CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly. Missing variable is: CMAKE_FIND_LIBRARY_PREFIXES意思就是CMAK
2016-04-29 16:26:26 3041 1
原创 C++11:可变参数模板实现print输出参数
C++11支持可变参数模板的特性,真的是很好用。 下面代码实现的print函数,就利用可变参数模板以及函数模板递归调用,实现将任意多个不同类型的参数顺序输出打印到std::ostream流中。#include /* 终止递归函数 */inline void args_print(std::ostream& steam){}/* 使用可变参数模板实现参数打印到输出流(ost
2016-04-23 15:53:37 4333
原创 opencl:慎用-cl-opt-disable选项编译kernel(可能会导致一些无法解释的问题)
在编译opencl kernel代码时,有一个编译选项-cl-opt-disable。根据opencl 官网的原文描述,使用这个选项可以关闭所有的代码优化,便于调试程序。(默认情况下,编译优化选项是打开的) 参见clBuildProgram 但是今天为了调试kernel代码,实际使用这个选项编译kernel却发现,使用这个选项就是坑。使用之后,kernel参数传递都不正常了。 下面这是个很简单
2016-04-21 15:00:01 2523 1
原创 opencl/msvc:kernel因为指针对齐方式(alignment)造成向量类型(vector data type)读写异常
opencl knernel中对全局内存(__global)向量类型数据的读写有两种方式, 一种是直接用=操作符赋值,一种则是通过vstoren/vloadn函数来实现向量数据读写。 =操作符赋值方式使用简单,但在msvc下以CL_MEM_USE_HOST_PTR模式向kernel传递数据时如果数据对齐方式不对,会造成kernel运行时异常。本文就是针对这种情况分析原因并提出解决方案。
2016-04-19 12:03:55 3179 1
原创 opencl:一个关于向量赋值的异常
在项目中,有一个下面这样的数据结构,storage保存是个float4类型的数组。typedef struct _detected_objects_buffer { cl_float4 storage[MAX_DETECTED_OBJECT_NUM]; cl_int detected_num; kernel_error status;}detected_objects_b
2016-04-17 11:28:17 1994 1
原创 opencl:kernel中两种向量类型转换(convert_T,as_typen)的主要区别
opencl kernel中向量类型转换分为两种方式,explicit conversions和reinterpreting type,中文可以分别直译为"显式转换"和"重新解释类型"。本文讨论这两种类型转换的区别。
2016-04-17 10:53:09 3821 1
原创 C++11:模板实现opencl向量类型(cl_intn,cl_floatn...)的简单运算符(+,-)重载及length,distance函数
opencl内核支持的所有向量数据类型(intn,floatn,doublen….)在主机端都有对应的类型,区别是加了前缀cl_,比如int4对应的主机端类型是cl_int4。 我们知道,在opencl内核代码中,向量类型(vector data type)的数据可以像普通标量类型(scala data type)一样,用各种算术和逻辑运算符进行操作。 比如:int4 p1=int4(4,2,0
2016-04-11 15:10:48 4028 2
原创 C++11模板:如何判断类中是否有指定名称的成员变量?
如何判断类中有指定的成员函数,网上可以找到不少的文章,比如下面这两篇就写得很详细了 《C++11之美》 《C++模板,判断是否存在成员函数,实现差异化操作 》我现在关心的是如何判断一个类中有成员变量?成员变量有可能是数组,也可能是其他的类。 看了上面关于判断成员函数的文章,理解其原理后,判断是否成员变量,也是差不多的道理,实现起来非常简单。
2016-04-10 17:11:16 9014 6
原创 opencl:C++11下使用别名(x,y,z,hi,lo...)访问vector类型(cl_int2,cl_long16...)的元素
在gcc(5.2.0)下使用C++11写opencl的程序时,发现无法像内核代码一样对cl_int2这样的向量(vector)类型用pos.x,pos.y这样的方式来访问向量元素,只能用pos.s[0]这种数组访问的方式。这是为什么?这是platform.h中cl_int2的定义,可以看出,虽然代码中有,x,y名字定义,但编译开关__CL_HAS_ANON_STRUCT__导致这部分代码是灰的
2016-04-10 10:57:12 5423
原创 C++11:MinGW当指定-std=c++11选项时 默认定义了__STRICT_ANSI__
__STRICT_ANSI__的来历__STRICT_ANSI__是gcc编译器的的一个预定义宏,一般来说当使用了-ansi编译选项,就会定义这个宏。 关于__STRICT_ANSI__的来历,参见下面关于gcc编译选项的说明: -ansi 支持符合ANSI标准的C程序. 这样就会关闭GNU C中某些不兼容ANSI C的特性,例如asm, inline和 typeof关键字,以及诸
2016-04-09 16:31:22 10329 1
CMake脚本在ultraedit中的语法高亮支持
2023-06-08
erpcgen-windows-x86_64.zip
2020-09-17
windows下MSVC兼容的dirent.h
2016-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人