智慧的老鸟

一个程序员需要有一棵Gank的心,Dota能培养我。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2012年11月21日

摘要: Parallel Programming Patterns1.根据设计需求,找出可以并行设计程序的空间A.找出并发的内容a) 域分解b) 任务分解B.算法结构设计空间设计出的算法具有:效率,简单,可移植,可测量C.支持结构a) 程序结构SPMD – Same Program Multiple Dataloop parallelismboss/workerfork joinb) 数据结构i. 共享数据ii. 共享队列iii. 分布数组D.落实机器处理空间2.改进设计A.任务,数据,部分程序的顺序B.线程,进程,时间清单C.源代码的组织,共享数据D.消息,同步机制,结果并行任务分析任务分解Exam 阅读全文
posted @ 2012-11-21 14:13 智慧的老鸟 阅读(214) 评论(0) 推荐(0) 编辑

摘要: 因为蒙特卡罗算法求圆周率这个问题没有数据相关性,完全可以用并行计算来模拟之。首先回顾下蒙特卡罗算法求圆周率,扔了几颗“豆子”,就是说需要执行多少次的随机数产生。比如我们扔了10000次,那么我们要创新获取10000次随机数;我们容忍不了,完全没有数据相关性的事情,完全可以一起做的事情,何必呢!拉出10000人的队伍,没人同时扔一颗不就完事儿了。对的,我们用gpu吧。开10000个线程,一起来做这件事情!算法如下,这是《并行计算》里面给出的一个任务分配,很好就用了。npoints = 10000circle_count = 0p = number of tasksnum = npoints/pf 阅读全文
posted @ 2012-11-21 14:09 智慧的老鸟 阅读(1038) 评论(0) 推荐(0) 编辑

摘要: 蒙特卡罗算法是我在算法学习中最喜欢的算法之一,不知道什么原因,就是很欣赏,那种感觉就像你喜欢在雨中散步一样,没有什么能给你的,但是你享受到雨中的浪漫或者优雅。我一直觉得,像蒙特卡罗和拉斯维加斯这样的算法,在解决一些近视计算问题上,能提供给程序员很快捷和巧妙的方法。下面给出用蒙特卡洛计算圆周率的程序,很简单,但是,要说明的是它的并行算法,看《蒙特卡罗算法并行计算》#include#include#include#includeusing namespace std;#define pear 50000//扔的“黄豆”数目int isInCir(double x,double y){if ((x* 阅读全文
posted @ 2012-11-21 14:03 智慧的老鸟 阅读(657) 评论(0) 推荐(0) 编辑

摘要: 看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦。左边是mongodb查询语句,右边是sql语句。对照着用,挺方便。db.users.find() select*fromusersdb.users.find({"age":27}) select*fromuserswhereage=27db.users.find({"username":"joe","age":27}) select*fromuserswhere"username"="joe"anda 阅读全文
posted @ 2012-11-21 13:27 智慧的老鸟 阅读(54494) 评论(0) 推荐(4) 编辑

摘要: 在linux下开发自己的服务器客户端程序,我们追求一切程序从最小模型开始,就是最简单最容易扩展的一种应用框架。习惯,我喜欢将自己需要g++的文件编写在sh文件中,每次,我只需要 sh g++.sh就ok了,在一切的可能情况下提高自己的工作效率。linux客户端模型#include <iostream>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <arpa/inet.h>#define MAXLINE 100#define SA str 阅读全文
posted @ 2012-11-21 13:17 智慧的老鸟 阅读(654) 评论(0) 推荐(0) 编辑

摘要: 并行程序的开发有其不同于单核程序的特殊性,算法是重中之重。根据不同业务设计出不同的并行算法,直接影响到程序的效率。因此,如何设计并行程序的算法,似乎成为并行编程的最大难点。观其算法,包括cuda sdk的例子和网上的牛人,给出的一些例子,以矩阵和矢量处理为主,深入点的包括fft和julia等数学公式,再高级一点的算是图形处理方面的例子。学习这些算法的思想,免不了有自己的一点点总结。之前学习过omp编程,结合现在的cuda,我觉得要理解并行编程,首先理解划分和规约这两个概念。也许你的算法学的更加扎实。划分是《算法》里面的一个重要思想,将一个大的问题或任务,分解成小问题小任务,各个击破,最后归并结 阅读全文
posted @ 2012-11-21 10:36 智慧的老鸟 阅读(5449) 评论(0) 推荐(0) 编辑

2012年11月17日

摘要: 一.生成静态lib#ifdef_STATIC_LIB_H_#define_STATIC_LIB_H_#ifdef __cplusplusextern"C"{#endifintadd(inta,intb);intsubtract(inta,intb);#ifdef __cplusplus{#endif#endif--------------------------------------#include"StaticLib.h"intadd(inta,intb){returna+b;}intsubtract(inta,intb){returna-b;}二. 阅读全文
posted @ 2012-11-17 19:11 智慧的老鸟 阅读(405) 评论(0) 推荐(0) 编辑

摘要: 一,生成动态链接库//DynamicLib.h#ifndef_DYNAMIC_LIB_INCLUDE_H_#define_DYNAMIC_LIB_INCLUDE_H_#ifdef__cplusplusextern"C"{#endif_declspec(dllexport)intadd(inta,intb);_declspec(dllexport)intsub(inta,intb);#ifdef__cplusplus};#endif#endif------------------------------------------------------//DynamicLib. 阅读全文
posted @ 2012-11-17 19:11 智慧的老鸟 阅读(714) 评论(0) 推荐(0) 编辑

摘要: 1关键字inline:调用Inline函数直接嵌入代码,避免因为调用而造成的开销。注意,内联函数应该放入头文件中。extern:使用时候,也必须声明,应用应在cpp文件中。const:A.h中定义的全局变量inta;能被别的cpp文件访问,只要externinta;如果不想被访问,则定义成constinta;&引用:引用是一种复合类型,必须用对象初始化,是对象的别名。int&i=10;errorint&i=j;rightconst&是指向const对象的引用。constinti=10;constint&j=i;rightint&k=i;error 阅读全文
posted @ 2012-11-17 19:10 智慧的老鸟 阅读(264) 评论(0) 推荐(0) 编辑

2012年11月16日

摘要: 原文地址:CUDA统计时间作者:handsomefriend转载:http://blog.csdn.net/jdhanhua/article/details/4843653<1>使用cutil.h中的函数unsigned int timer=0;//创建计时器cutCreateTimer(&timer);//开始计时cutStartTimer(timer);{ //统计的代码段 …………}//停止计时cutStopTimer(timer);//获得从开始计时到停止之间的时间cutGetTimerValue( timer);//删除timer值cutDeleteTimer( 阅读全文
posted @ 2012-11-16 10:46 智慧的老鸟 阅读(747) 评论(0) 推荐(0) 编辑