代码改变世界

CUDA并行计算框架(二)实例相关。

2011-10-10 11:25 by 熬夜的虫子, 12622 阅读, 7 推荐, 收藏, 编辑
摘要:从这部分开始 结合虫子的demo程序给大家分析下cuda的性能与可行性。一。先概述下实现流程。 CUDA在执行的时候是让host里面的一个一个的kernel按照线程网格(Grid)的概念在显卡硬件(GPU)上执行。每一个线程网格又可以包含多个线程块(block),每一个线程块中又可以包含多个线程(thread)。每一个kernel交给每一个Grid来完成。当要执行这些任务的时候,每一个Grid又把任务分成一部分一部分的block,block再分线程来完成。每个Grid中的任务是一定的。二维线程块的索引关系为如下:unsigned int xIndex = blockDim.x * block. 阅读全文

CUDA并行计算框架(一)概念相关、内容比较抽象。

2011-10-10 11:21 by 熬夜的虫子, 2812 阅读, 0 推荐, 收藏, 编辑
摘要:一. 概念。1. 相关关键字。CUDA(Compute Unified Device Architecture)。GPU英文全称Graphic Processing Unit,中文翻译为“图形处理器”。2. CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。。3. 从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动。开发库是基于CUDA技术所提供的应用开发库。运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调 阅读全文

趣谈.net大型电子商务 亲~ 走过路过不要错过~

2011-10-08 15:45 by 熬夜的虫子, 661 阅读, 0 推荐, 收藏, 编辑
摘要:老衲才不比子建 貌不似潘安 富不及范蠡 ----摘自虫子语录 2011十月刊 既然是趣谈,那就放开传统的逻辑随便扯了。对于电子商务的概念,虫子其实不感兴趣,就当是个履历吧,关于电商的一些琐碎的经验结合.net平台和大家一起分享了。 什么是电子商务?内事问度娘、外事问谷姐。略过! 既然是园子内的文章,那就先把羊头挂上,先简单扯扯一般大型电子商务网站的相关话题。一 先看业务模型: 第一层,货源:招商采购,商品录入,目录发放 第二层,渠道:电话、主站、微博、手机、社区订购 第三层,交易:客户服务,账户交易,退换货处理 第四层,进销存:物流配送,仓库管理,分仓,快递管理 第五层,其他:工作... 阅读全文

结合项目实例 回顾传统设计模式(十一)代理模式

2011-10-07 17:58 by 熬夜的虫子, 552 阅读, 0 推荐, 收藏, 编辑
摘要:所谓的代理,就是代表某个真实的对象。在这个设计模式中,代理可以假装自己是远程对象,但其实只是一个中间角色。客户对象所作的就像是在做远程方法调用,但其实只是调用本地资源中得“代理”对象上得方法,再由代理处理所有网络通信的底层细节。其实其实项目实例神马的 根本就没必要了 看一下Web Service的调用方式大家也许就明白了,它会在客户端生成一个代理类 - - 已经很完美的诠释了代理模式这个概念 虫子放下水 直接拿以前监控项目中客户端采集的代理方法了 --_____--服务器端 [WebMethod]publicvoidMem_handleforM(stringvalue,intmonitorid 阅读全文

结合项目实例 回顾传统设计模式(十)状态模式

2011-10-07 09:34 by 熬夜的虫子, 632 阅读, 0 推荐, 收藏, 编辑
摘要:谈到状态模式我们在这里所谈论的是一个通用的技巧:如何对对象内的状态建模----通过创建一个实例变量来持有状态值,并在方法内书写条件代码来处理不同状态。我们要把一个状态的所有行为放在一个类中。这么一来我们将行为局部化了,并使得事情更容易改变和理解。虫子还是拿订单系统来说事了///<summary>///状态接口///</summary>publicinterfaceSimpleState{//检查购物车voidCheckCart();//检查账号voidCheckAcount();//提交订单voidOrderSumbit();}publicclassOrder{//初始 阅读全文

结合项目实例 回顾传统设计模式(九)迭代器模式

2011-10-06 23:17 by 熬夜的虫子, 499 阅读, 0 推荐, 收藏, 编辑
摘要:关于迭代器模式,我们所需要知道的第一件事情就是它依赖于一个名为迭代器的接口。一旦我们有了这个接口,就可以为各种那个对象集合实现迭代器:数组、列表、散列表。项目实例我们就拿用户角色模块来举例背景1.某用户作为应用管理员获取一组关于管理角色的arraylist权限组2.该用户作为应用开发者获取一组关于开发角色的数组形式的权限组...///<summary>///迭代器接口///</summary>publicinterfaceRoleIterator{//返回一个布尔值,让客户知道是否还有更多的元素boolhasnext();//返回下一个元素Objectnext();}/ 阅读全文

结合项目实例 回顾传统设计模式(八)模板方法模式

2011-10-06 15:32 by 熬夜的虫子, 624 阅读, 0 推荐, 收藏, 编辑
摘要:模板方法定义了一个算法的步骤,并允许子类为一个或多个步骤提供实现。普通的设计算法由实现类直接控制,在很多功能类似的对象中存在重复。并且由于类的组织方式不具有弹性,所以往往新加入新的相似模块时需要作大量冗余的步骤。我们还是那电商的订单提交来说事 ~ ~///<summary>///模板类///</summary>publicabstractclassOrderSubmit{publicOrderSubmit(){//检查购物车CheckCart();//检查支付方式CheckPaytype();//检查用户地址CheckAddress();//提交订单SubmitOrde 阅读全文

结合项目实例 回顾传统设计模式(七)适配器模式(附外观模式)

2011-10-06 09:38 by 熬夜的虫子, 709 阅读, 1 推荐, 收藏, 编辑
摘要:记得以前章节谈过的装饰者模式,我们将对象包装起来,赋予他们新的职责。而现在则是以不同目的,包装某些对象:让他们的接口看起来不像自己而像是别的东西。这样就可以在设计中,将类的接口转换成想要的接口,以便实现不同的接口。在项目中,适配器模式一般扮演者协调者的作用。1.客户通过目标接口调用适配器的方法对适配器发出请求2.适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口3.客户接受到调用的结果,但并未察觉这一切是适配器在起转换作用另外还有一种特殊情况,万一系统新旧并存,旧的部分期望旧的厂商接口,但我们却已经使用新厂商的接口编写了这一部分,这个时候该怎么办?这里使用适配器,那里却使用未包装的 阅读全文

结合项目实例 回顾传统设计模式(六)命令模式

2011-10-05 14:56 by 熬夜的虫子, 564 阅读, 0 推荐, 收藏, 编辑
摘要:命令模式将请求封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。用户程序在使用的时候,只与该命令对象打交道,而不用与一类对象打交道,降低了耦合性,提高了程序设计的灵活性。我们还是那数据库操作为例publicclassDBInstance{publicvoidExecuteNonQuery(){}publicvoidExecuteDataset(){}}publicclassSqlInstance:DBInstance{publicvoidExecuteNonQuery(){Console.WriteLine("thisisaSqlInstanc 阅读全文

结合项目实例 回顾传统设计模式(五)单例模式

2011-10-04 14:05 by 熬夜的虫子, 535 阅读, 0 推荐, 收藏, 编辑
摘要:这个...... 大家应该熟的不能再熟了 虫子就不班门弄斧了 privatestaticobjectLockKey=newobject();privatestaticT_Instance;publicstaticTGetInstance(){returnGetInstance(null);}publicstaticTGetInstance(Func<T>onCreateInstance){if(_Instance==null){lock(LockKey){if(_Instance==null){try{if(onCreateInstance==null)_Instance=newT 阅读全文

结合项目实例 回顾传统设计模式(四)工厂模式(简单工厂、普通工厂、抽象工厂)

2011-10-04 13:19 by 熬夜的虫子, 865 阅读, 2 推荐, 收藏, 编辑
摘要:关于工厂模式和单例模式 大部分项目这2种模式都很常见例如在orm框架中 工厂模式常用来封装数据库的创建 我们分3种case来看 简单工厂模式 普通工厂模式 抽象工厂模式抽象一点的说 工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。直接看实例一般惯性思维 我们遇到分支判断时会这样publicclassNormalCase{privateDBInstancedbInstance;publicNormalCase(stringtype){if(type.Equals("SQL")){dbInstance=newSqlInstance();}elseif 阅读全文

结合项目实例 回顾传统设计模式(三)装饰者模式

2011-10-02 15:09 by 熬夜的虫子, 730 阅读, 1 推荐, 收藏, 编辑
摘要:说到这个模式的项目实例 虫子也满头疼的 所谓装饰者模式说白了动态将职责附加到对象上。如果你在项目某个场景中需要功能扩展根据基类衍生出非常多的子类,那么装饰者模式无疑是很好的。不过其实在实际的项目中,往往大家不直接衍生子类,而是通过组合的方式,根据逻辑讲各种扩展叠加来,对外公布的只是一个标签一个壳而已。所以这个章节,虫子就虚构一个实例了。还拿电商来说、点券赠品系统。背景:1.所有点券、优惠券、赠品券、积分继承同一个基类 基类券2.不用种类的券可以混合搭配 3.积分根据不同的场景可以配置不同的规则4.升级礼券在上层礼券基础上添加一般情况下 大家可以就这样设计了///<summary>/ 阅读全文

结合项目实例 回顾传统设计模式(二)观察者模式

2011-10-02 13:43 by 熬夜的虫子, 696 阅读, 0 推荐, 收藏, 编辑
摘要:观察者模式现在用的不是很多重点看下它的设计思想OK 下面继续消息中心的那点事///<summary>///数据中心///</summary>publicclassMessageData{publicvoidmessageSend(){stringtitle=observer.getTitle();stringcontent=observer.getContent();//针对具体实现编程,会导致我们以后再增加或者删除消息平台时必须要重新维护Platformlist有时甚至还要重构代码foreach(Platformpinobserver.Platformlist){p. 阅读全文

回头再学Asp.net系列--基础篇(三)

2011-09-14 16:20 by 熬夜的虫子, 272 阅读, 0 推荐, 收藏, 编辑
摘要:值类型与引用类型小demo当我们使用引用类型时,我们实际是在处理该类型的指针,而非该类型本身。当我们使用值类型时,我们是在使用值类型本身。听起来很迷糊吧?同样,例子是最好的描述。假如我们执行以下的方法: public int ReturnValue() { int x = new int(); x = 3; int y = new int(); y = x; y = 4; return x; }我们将得到值3,很简单,对吧?假如我们首先使用MyInt类 public class MyInt { public int MyValue; }接着执行以下的方法: public int Retur.. 阅读全文

回头再学Asp.net系列--基础篇(二)

2011-09-14 16:17 by 熬夜的虫子, 326 阅读, 2 推荐, 收藏, 编辑
摘要:栈(Stack)和堆(Heap)。 栈是在程序运行过程中用于保存指令,值类型变量的内存区域(一个线程对应一个栈),栈的结构和数据结构中“栈”的结构是一样的,“先进后出”。堆也就是托管堆(managed heap),进程初始化的时候,CLR要保留一块连续的地址空间,这个地址空间最初并没有对应的物理存储空间。这个地址空间就是托管堆。* 栈vs堆:有什么不同?栈负责保存我们的代码执行(或调用)路径,而堆则负责保存对象(或者说数据,接下来将谈到很多关于堆的问题)的路径。可以将栈想象成一堆从顶向下堆叠的盒子。当每调用一次方法时,我们将应用程序中所要发生的事情记录在栈顶的一个盒子中,而我们每次只能够使用. 阅读全文