-
CUDA 编程涉及到在不同的平台上同时运行代码:包含CPU的host 和包含GPU的device. 所以了解host和device的对性能优化是非常重要的。 2.1. Differences between Host and Device Threading resources host 上能同时运行的线程数目比较少(比如24个) device上能同时运行的线程数目比较多(数量级通常为1E3,1E4等) Threads 操作系统必须交换CPU执行通道上和下的线程以提供多线程功能。因此,上下文切换(当交换两个线程时)既慢又昂贵。 相比之下,GPU上的线程非常轻量级。在典型的系统中,成千上万的线程排队等待工作(每个线程有32个线程)。如 …
Read More -
由于发现cuda c++ 的 debug方式和c++ 差别很大,因此打算再开一篇,专门记录一些和error checking 以及debug有关的内容. Error checks in CUDA code can help catch CUDA errors at their source. There are 2 sources of errors in CUDA source code: 1. Errors from CUDA **API** calls. For example, a call to `cudaMalloc()` might fail. 2. Errors from CUDA **kernel** …
Read More -
基本全文照搬了:关于C++ const 的全面总结 总结全面还是要一点时间的orz..感谢原作者,暂时没发现有什么错误(? 其中对我而言比较陌生的是“const修饰成员函数”的用法。。已经加粗。 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。 Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 ** **如下表所示: **No.** **作用** **说明** **参考代码** 1 可以定义const …
Read More -
回想起大一的时候打cf...那个时候对C++还不怎么熟悉。。。用sort不会自定义排序方式。。 于是手写快排。。。直接取中间元素没加随机化。。。跪了。。。 后来知道sort怎么写以后。。发现sort是可以通过的。。。 于是我就一直以为sort是带随机化的快排。。。 然而实际上是: sort在数据量比较大的时候用quick_sort...当分段后的数据量小于某个门槛,为了避免对此递归带来的额外负担。。采取插入排序的策略。。 以及。。。快排在最快情况下还是会到达平方的复杂度。。。 于是有人发明了introsort...中文翻译叫内省排序。。。? 维基百科_introsort 这个算法其实就是。。对于数据量大的时候。。。一开始还是快 …
Read More -
起因是百度实习二面的时候被问了一道类似这样的题: 给我下面的代码,问有没有什么问题。 1 /* *********************************************** 2Author :111qqz 3Created Time :2017年02月28日 星期二 14时49分37秒 4File Name :vector.cpp 5************************************************ */ 6 #include <cstdio>7 #include <vector>8 #include <ctime>9 using namespace …
Read More