2012年3月24日星期六

U盘FAT32、NTFS格式速度比较

最近用U盘安装Fedora 16,结果安装后无法启动T_T。没辙,U盘还得用啊。可是发现速度降低了不少,原来写入速度可以到5M,现在只有4M左右。想起来格式化时选择的参数是FAT32、块大小4096字节。于是希望缓缓参数来改变速度。于是取不同的分区和块大小分别进行测试。
FAT32分区、块大小4096字节

FAT32分区、块大小8192字节

NTFS分区、块大小16KB


NTFS分区、块大小8192字节
可以看出,块大小为8KB时相比4KB具有很大优势,而块大小为16KB时速度反而下降,而且空间浪费也较大。同时对于8G大小的U盘,有时需要装大于4G的文件,因此选择NTFS格式,块大小为8192字节是最为合适的,可以在速度和空间方面取得平衡。
最后上一张写入速度图:

2012年3月8日星期四

Qt 4.8.0中QAxWidget代码编译不通过的解决办法

    昨天在QtCN上看到Qt的4.8.0版本已发布的消息,决定升级之。QTSDK的升级工具照旧极度不给力(下载太慢了),于是用迅雷以10M/S的速度下载完成后离线安装。安装过程一切正常,但是编译测试以前写的一个QAxWidget项目时出现错误,提示C:\QtSDK\Desktop\Qt\4.8.0\mingw\include\ActiveQt\qaxwidget.h这个文件中所包含的文件不存在,其内容只有一句:#include "../../src/activeqt/container/qaxwidget.h"。其需要在C:\QtSDK\Desktop\Qt\4.8.0\mingw目录下存在src子目录,但是我的Qt安装后并没有这个目录,而4.7.4版本就没有这个问题。

  •    通过SDK升级工具下载安装了QT Sources源码包。此时在QtSDK目录下多出来了一个QtSources文件夹,里面有我们所需的src目录。将其剪切至上述目录后,这回可以编译了。

   但是链接的时候却提示cannot find -lQAxContainerd。大意是在C:\QtSDK\Desktop\Qt\4.8.0\mingw\lib目录下缺少libQAxContainerd.a这个库文件。

  •  因此用QtCreator打开C:\QtSDK\Desktop\Qt\4.8.0\mingw\src\activeqt\activeqt.pro工程,以Debug方式编译后即可生成libQAxContainerd.a库文件(以Release方式生成libQAxContainer.a),复制到C:\QtSDK\Desktop\Qt\4.8.0\mingw\lib,再次编译却出现"Undefiened reference to __SomeFunc@8",这回无解了。

   正在悲伤之际,突然发现了这篇文章,简直如获至宝。大意是说4.8.0有问题,不能使用MingW编译,要使用VS才行。

  • 幸亏安装了VS2010,在左下角点击“计算机”图标后选择VS-调试后再次编译,终于搞定。


   感谢国家,感谢党,感谢谷歌。

2012年3月4日星期日

CUDA 4.1及VS2010 atomicAdd函数未定义的解决办法


测试cuda_by_example的atomicAdd源代码,出现:atomicAdd未定义的错误。这是由于该函数需要显卡支持CUDA 1.1及以上版本。网上流传的方法多是针对CUDA 2.X的,而CUDA 4中似乎将这个标签去掉了,在VS2010中找不到,与现实严重脱节;更有方法要求指定nvcc的参数,这让我们广大VS用户如何吐槽。。。为了节省更多人的时间,故将解决办法贴出。

VS 2010中如下设置:
项目(不是.cu文件)->属性->CUDA C/C++->Device->Code Generation,点击后选择“编辑”,取消“从父级或项目默认设置继承”前面的勾,在编辑框中输入“compute_11,sm_11”(不包含引号)。一路确定后再编译即可通过。