<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[GabrielGu的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/GabrielGu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GabrielGu]]></copyright><item><title><![CDATA[C++注意事项]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/54799225</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/54799225</guid><author>GabrielGu</author><pubDate>Tue, 31 Jan 2017 14:01:17 +0800</pubDate><description><![CDATA[写这个主要是为了记录一些自己觉得有用但不一定记得住的东西。
1.freopen在vs2013之后已有改变，改用freopen_s,示例：FILE*stream;freopen_s(&stream,"C:\\temp\\test.txt","r",stdin);
不定期更]]></description><category></category></item><item><title><![CDATA[Learning Java（二）applet]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/53426063</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/53426063</guid><author>GabrielGu</author><pubDate>Thu, 01 Dec 2016 20:09:32 +0800</pubDate><description><![CDATA[第一个Java applet，我们选择绘制简单的字符串。]]></description><category></category></item><item><title><![CDATA[Learning Java(一)引言]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/53425584</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/53425584</guid><author>GabrielGu</author><pubDate>Thu, 01 Dec 2016 19:39:31 +0800</pubDate><description><![CDATA[想着系统地学一下Java也不是一天两天了。以前做项目也用到过，当然只是边百度边在别人的基础上改改。现在系统地学一下，当然也是以项目为基础，这样能够理解得更深入一些，况且我的主要方向也不是对某个语言特别精通，没这个必要，只要保证以后能用，能随手做个东西出来就行。
在此将我一步步学习Java的经历记录下来，一是方便初学者，二是方便我自己以后梳理这段经历。
国外许多著名高校计算机系学的第一门语言都是]]></description><category></category></item><item><title><![CDATA[《基于CUDA的并行程序设计》阅读笔记（一）]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/53047905</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/53047905</guid><author>GabrielGu</author><pubDate>Sat, 05 Nov 2016 21:15:32 +0800</pubDate><description><![CDATA[一个完整的CUDA工程由主机代码和设备代码组成。主机代码在CPU上串行执行，是普通的c代码。设备代码在设备端GPU上并行执行，称为内核。kernel并不是一个完整的程序，而是任务中全部可分解并行执行的步骤的集合。并行就层次而言主要指block间并行和thread间并行。]]></description><category></category></item><item><title><![CDATA[CUDA8.0thrust编程报错]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/53026134</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/53026134</guid><author>GabrielGu</author><pubDate>Thu, 03 Nov 2016 21:17:26 +0800</pubDate><description><![CDATA[首先讲一下最近在thrust上遇到的坑吧，记住，现在千万不要用CUDA8.0做，我试了一下，7.5是可以的。
在对着官方Toolkit:Documention敲程序时老是卡壳，反馈的原因总是bas_alloc:what():unknown，这就让人很不解了。我还特地打开bad_alloc.h看了一下，那个头文件自己都没写全。。
所幸程序换到7.5上跑还是可以的，大家注意一下，8.0上thrus]]></description><category></category></item><item><title><![CDATA[class template   std::vector]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52972014</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52972014</guid><author>GabrielGu</author><pubDate>Sun, 30 Oct 2016 14:54:33 +0800</pubDate><description><![CDATA[Vectors are sequence containers representing arrays that can change in size.

Just like arrays, vectors use contiguous storage locations for their elements, which means that their elements can also ]]></description><category></category></item><item><title><![CDATA[CUDA中编译时显示helper_functions.h：No such file的解决办法]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52971177</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52971177</guid><author>GabrielGu</author><pubDate>Sun, 30 Oct 2016 11:11:05 +0800</pubDate><description><![CDATA[看到网上不少人说自己在CUDA编程时会遇到这样一个问题，对拷贝过来的.cu文件执行nvcc命令时会显示error helper_functions.h:No such file的错误。困难的是连helper_functions.h这个头文件在哪都不知道。
这个问题其实很好解决，我以最简明扼要的文字来给出一个解决方案：
1.首先，改正直接用nvcc命令编译程序的习惯，换成makefile。
2]]></description><category></category></item><item><title><![CDATA[main函数的参数列表]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52957236</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52957236</guid><author>GabrielGu</author><pubDate>Fri, 28 Oct 2016 16:11:06 +0800</pubDate><description><![CDATA[我们在学习编程时，总会看见main(),或main(int argc,char *argv[])。这些参数是可省略吗，具体意思又是什么呢？
这也许是国内接触编程语言时碰到的几乎最基础的知识了，这里还是解释一下比较好。
argc表示总的命令参数，              
char *argv[]是一个字符数组，大小是argc，它总是不为空的，第0个元素一般为程序的全名。
一般写程序时都会]]></description><category></category></item><item><title><![CDATA[gprof]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52931560</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52931560</guid><author>GabrielGu</author><pubDate>Wed, 26 Oct 2016 09:56:44 +0800</pubDate><description><![CDATA[先空着，以后码]]></description><category></category></item><item><title><![CDATA[CUDA库之Thrust篇]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52931417</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52931417</guid><author>GabrielGu</author><pubDate>Wed, 26 Oct 2016 09:42:12 +0800</pubDate><description><![CDATA[哈哈哈]]></description><category></category></item><item><title><![CDATA[关于size_t类型的整理]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52931148</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52931148</guid><author>GabrielGu</author><pubDate>Wed, 26 Oct 2016 09:40:05 +0800</pubDate><description><![CDATA[因为用的比较多，所以我决定整理一下size_t的知识点。
其实说白了就是一种数据类型，在标准C库中定义的，应为unsigned int，在64位系统中为 long unsigned int。
size_t为什么麻烦呢，因为它引起了我程序的问题，也是一种玄学的bug：Typename is not allowed.
这个报错经常是与size_t一起出现的，所以当发现这个错误时，就必须弄懂siz]]></description><category></category></item><item><title><![CDATA[CUDA卷积加速(一)]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52931006</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52931006</guid><author>GabrielGu</author><pubDate>Wed, 26 Oct 2016 09:03:45 +0800</pubDate><description><![CDATA[保存]]></description><category></category></item><item><title><![CDATA[网上找到的一篇适合初学者看的CUDA使用说明，良心干货]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52902741</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52902741</guid><author>GabrielGu</author><pubDate>Sun, 23 Oct 2016 16:43:39 +0800</pubDate><description><![CDATA[CUDA是什么
        CUDA，Compute Unified Device Architecture的简称，是由NVIDIA公司创立的基于他们公司生产的图形处理器GPUs（Graphics Processing Units,可以通俗的理解为显卡）的一个并行计算平台和编程模型。
        通过CUDA，GPUs可以很方便地被用来进行通用计算（有点像在CPU中进行的数值计算等等）]]></description><category></category></item><item><title><![CDATA[GPU中基于CUDA计算SM中active block和active warp及普遍优化流程]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52900274</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52900274</guid><author>GabrielGu</author><pubDate>Sun, 23 Oct 2016 10:39:46 +0800</pubDate><description><![CDATA[CUDA优化第一要义是设计block和thread的dimension，这时active block和active warp就必须要考虑了。（一维的同学请回避谢谢）
首先通俗地讲一些CUDA优化的常识吧
accurancy：只在关键步骤使用双精度，其他部分仍然使用单精度浮点以获得指令吞吐量和精度的平衡；建议将双精度放在CPU里计算。异构并行会给项目加分哦
latency：降低延迟需要考虑缓冲]]></description><category></category></item><item><title><![CDATA[基于CUDA的GPU优化方法]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52851745</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52851745</guid><author>GabrielGu</author><pubDate>Tue, 18 Oct 2016 19:44:15 +0800</pubDate><description><![CDATA[初学CUDA，往往拿到代码无从下手，也没有什么明确的思路。我想有必要把前人的经验总结拿出来，便于后来者更快掌握这门技术。
对于block和thread的分配问题，有这么一个技巧，每个block里面的thread个数最好是32的倍数，因为，这样可以让计算效率更高，促进memory coalescing。其实，每个grid里面block的dimension维度和size数量，以及每个block里面的]]></description><category></category></item><item><title><![CDATA[DLL文件概述及安装方法]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52841078</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52841078</guid><author>GabrielGu</author><pubDate>Mon, 17 Oct 2016 19:40:34 +0800</pubDate><description><![CDATA[在日常生活中，我们经常在浏览电脑文件，特别是安装某款软件寻找bin文件夹里的setup时（这里专指使用windows系统的用户，linux大神别处走），碰到.dll文件。看懂世界需要一双善于怀疑的眼睛，那么，这个.dll文件到底是什么，有什么用呢？
“DLL(Dynamic Link Library)文件为动态链接库文件，又称“应用程序拓展”，是软件文件类型。在Windows中，许多应用程序并不]]></description><category></category></item><item><title><![CDATA[extern "C"]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52840887</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52840887</guid><author>GabrielGu</author><pubDate>Mon, 17 Oct 2016 19:09:45 +0800</pubDate><description><![CDATA[大家在学习C语言或C++时一定都学过extern关键字，它是用来声明一个函数或变量在本模块和其他模块中皆可用。除此之外，还可以进行链接指定。也就是说，当编译器编译时遇到了，不会立即报错，而是在链接阶段到目标模块找到。
虽然说C++和C有许多相似的地方，但C++毕竟还是面向对象的语言，它支持函数重载，而C则不支持。细节上体现在编译后在函数库中保存的名字不同，同一个函数名C++会在名字后面加上变量的]]></description><category></category></item><item><title><![CDATA[关于内存分配时malloc()和calloc()的区别]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52691985</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52691985</guid><author>GabrielGu</author><pubDate>Wed, 28 Sep 2016 17:09:14 +0800</pubDate><description><![CDATA[动态分配内存空间，较为熟悉的是malloc()，但有时也会用calloc()。两者有何区别呢？
先写一下两者的常规用法示例吧。
void *malloc(size_t
 size);

void *calloc(size_t
 count,size_t
 size);
可见两者使用时参数不同。
malloc(0有一个参数，代表着要分配的内存大小
calloc()函数有两个参数,]]></description><category></category></item><item><title><![CDATA[关于CUDA5之后cutil.h不可用的问题]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/52678220</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/52678220</guid><author>GabrielGu</author><pubDate>Tue, 27 Sep 2016 10:38:16 +0800</pubDate><description><![CDATA[用CUDA进行GPU加速开发的同学在移植一些代码片段时应该都有过这样的经历，如果自己用的是高版本的CUDA，系统有时会报错：CANNOT FIND CUTIL.H。查看代码才发现原来是多了CUTIL.H,CUTIL_MATH.H,CUTIL_INLINE.H的头文件。这种报错该如何处理呢？
可以先尝试着注释掉这三个头文件，再运行一下，看看到底是哪里调用到。不出意外的话，系统弹出的error总是C]]></description><category></category></item><item><title><![CDATA[Android Studio 2上利用NDK进行OpenCV 3.1开发]]></title><link>https://blog.youkuaiyun.com/GabrielGu/article/details/51888893</link><guid>https://blog.youkuaiyun.com/GabrielGu/article/details/51888893</guid><author>GabrielGu</author><pubDate>Tue, 12 Jul 2016 14:41:31 +0800</pubDate><description><![CDATA[原创一个链接，哈哈哈。
http://johnhany.net/2016/07/opencv-3-1-ndk-dev-on-android-studio-2/]]></description><category></category></item></channel></rss>