2017年8月9日

关于float的低精度问题

摘要: float作为单精度浮点,是存在较大精度损失的。这里的精度损失大小和阶数有关系,当阶数很大时,精度损失也很大。 double也有精度损失,但由于位数多,所以精度更高。 在处理有精度损失的数据时,要关注精度损失对计算结果的影响。 常见情况为 大数吞小数 的情况 即 大数 + 小数 时,小数的值 < 大 阅读全文

posted @ 2017-08-09 13:00 d神 阅读(366) 评论(0) 推荐(0) 编辑

2017年7月20日

profile

摘要: 今天算是切身体会到nvcc编译器的坑爹了,真心在瞎编。对于这点,可以用nv的profile 反汇编出nvcc编译出的目标代码,若想和源码对应,则需加上-lineinfo编译选项。 在profile的individual kernel——perform computing analysis——inst 阅读全文

posted @ 2017-07-20 21:09 d神 阅读(186) 评论(0) 推荐(0) 编辑

2017年7月10日

关于内存带宽的疑问

摘要: 64位机一次访存的内存大小为64bit。而float、int 均为32bit,所以当进行计算时,每次取和存2个float,撑满带宽,(不清楚这里是否需要2个float内存连续,不连续是不是性能没有提升)。 然而我在进行稀疏矩阵向量乘时,采用的csr格式,每两个一组计算比每个元素单独计算反而会慢一点。 阅读全文

posted @ 2017-07-10 21:00 d神 阅读(131) 评论(0) 推荐(0) 编辑

2016年12月1日

GDB调试

摘要: 程序出现core dump: 可在gdb中用 bt 查看堆栈,栈里出来的第一项就是dump发生的地方。如果还无法定位,可以用gdb调试core文件。 gdb <可执行文件> (注:要为debug版本,同时 库 也要是debug版本) set args <arg1><arg2><arg3>... 设置 阅读全文

posted @ 2016-12-01 20:04 d神 阅读(302) 评论(0) 推荐(0) 编辑

2016年11月27日

look up error: undefined symbol:......解决过程

摘要: 今天遇到个很郁闷的问题,运行程序时报错:look up error: undefined symbol:... 首先运行时报错找不到,一般就是动态库里没有这个符号。所以我用 nm命令 并用管道结合grep命令(nm .so | grep 'pattern') 查找了下那个未定义符号。结果发现,动态库 阅读全文

posted @ 2016-11-27 20:21 d神 阅读(18010) 评论(0) 推荐(0) 编辑

2016年10月22日

【转】CMAKE

摘要: CMAKE的使用 Version 1.0 2009-3-18 一、 基本使用 安装:下载二进制包后可直接解压使用 从源码安装则执行命令:./bootstrap; make; make install——尝试执行bootstrap失败 使用:cmake dir_path,生成工程文件或makefile 阅读全文

posted @ 2016-10-22 22:27 d神 阅读(808) 评论(0) 推荐(0) 编辑

2016年8月20日

access violation

摘要: 昨晚重新换了一个思路写的mmp的代码,结果有bug,每次访问share_a是说access violation,详情就是访问out of range,但我检查来检查去发现逻辑上并没有错啊,没有访问超出范围啊,想了一个下午都没想出来,最后就自己想重新把share_a的定义写一遍,写的时候突然发现——是 阅读全文

posted @ 2016-08-20 20:12 d神 阅读(379) 评论(0) 推荐(0) 编辑

2016年8月9日

基于cuda的mmp的bug调试

摘要: 程序初稿出来后,有这样几个bug: 1、内存访存超出范围 2、每次循环后,用于周转的寄存器tmp没有重置为零 3、将数据拷贝到sharedmemory后的第一次迭代数据不对。数据结果每次运行不一样,但是一个有限集。 针对第一个bug,是指针的使用上混乱了。mmp这个kernel中用到的指针有点多,且 阅读全文

posted @ 2016-08-09 21:44 d神 阅读(254) 评论(0) 推荐(0) 编辑

导航