上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 61 下一页
  2012年3月21日
摘要: ReductionsReduction算法使用二元操作将输入序列规约为一个单值。例如,需要获得一数列的和,可以通过加运算规约此数组得到。相似的,数列的最大值,可以通过由两个输入值返回一个最大值的运算子规约得到。数列的求和的规约操作可以由thrust::reduce如下实现:[cpp] view plaincopyprint?intsum=thrust::reduce(D.begin(),D.end(),(int)0,thrust::plus<int>());int sum = thrust :: reduce (D. begin () , D. end () , ( int ) 0 阅读全文
posted @ 2012-03-21 11:25 carekee 阅读(2746) 评论(0) 推荐(0) 编辑
摘要: CUDA 4.0 已经发布了RC版本,处于网友与新人的要求,我讲解下如何配置环境与工程的问题。要完整的使用CUDA 4.0功能与开发工具,建议使用windows 7 64bit或者windows 2008 R2 64bit系统。我的电脑是win7。首先登陆到NVIDIA的开发者页面下载最新的驱动、toolkit、SDK与新增的tools SDK安装文件。首先安装驱动需要注意的是在安装过程中建议勾选"Perform a clean installtion"。下面安装toolkit完了之后就是SDK在CUDA 4.0 NV增加了一个tools SDK,最好也安装下吧,反正不大~ 阅读全文
posted @ 2012-03-21 11:24 carekee 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 谨以此文想给那些被Linux搞得折翼的小盆友们,当然还有我自己……首先下载驱动,toolkit 还有SDK……安装前确认这些文件都是可执行的,如果不是运行以下命令:sudo chmod a+x [文件名]然后是安装驱动的问题,估计很多人十分头疼……按下Ctrl加Alt加F1进入纯命令模式,登陆后运行以下命令关闭Gnomesudo /etc/init.d/gdm -stop然后运行驱动安装文件需要加上sudo,基本按回车就好。安装完毕后运行以下命令打开Gnomesudo /etc/init.d/gdm -start按下Ctrl加Alt加F7回到GUI下面安装SDK,依然需要root权限,记得加上 阅读全文
posted @ 2012-03-21 11:24 carekee 阅读(186) 评论(0) 推荐(0) 编辑
摘要: Thrust提供了丰富的常用并行算法。这算法的功能与STL中的非常相似,于是我们使用了相同的名称(例如thrust::sort 与 std::sort)。所有的Thrust算法均提供了主机端和设备端。特别指出,当转入主机端迭代器时,将会调度主机端方法,相似的,当使用设备端迭代器时将使用设备端实现。trust::copy是一个例外,他可以任意的拷贝主机端和设备端的数据。但是所有的迭代器参数必须符合算法的要求,要与之对应。当不能满足要求的时候,编译器会报错。TransformationsTransformations算法作用是用来将目标容器赋上特定值(例如零)或者特定数列。之前的例子我们已经使用过 阅读全文
posted @ 2012-03-21 11:24 carekee 阅读(3404) 评论(0) 推荐(0) 编辑
摘要: Trust 提供了两个vector容器:host_vector 与 device_vector。按照命名规则,host_vector位于主机端,device_vector位于GPU设备端。Trust的vector容器与STL中的容器类似,是通用的容器,可以存储任何数据类型,可以动态调整大小。以下源代码展示如何使用Thrust的vector容器。[cpp] view plaincopyprint?#include<thrust/host_vector.h> #include<thrust/device_vector.h> #include<iostream> 阅读全文
posted @ 2012-03-21 11:23 carekee 阅读(5749) 评论(0) 推荐(1) 编辑
摘要: 在这节中我们曾使用了这样的表达式,H.begin() 、H.end()、D.begin() + 7。begin()与end()的返回值在C++中被称为迭代器。vector的迭代器类似于数组的指针,用于指向数组的某个元素。H.begin()是指向H容器中数组第一个元素的迭代器。类似,H.end()指向H容器中的最后一个元素。 虽然说迭代器类似于指针,但它有着更丰富的作用。可以注意到在使用thrust::fill的时候我们并不需要指明这是device_vector的迭代器。这些信息包含在了D.begin()的返回值的迭代器类型中,其类型不同于H.begin()的返回值。当Thrust中的函数调用时 阅读全文
posted @ 2012-03-21 11:23 carekee 阅读(1471) 评论(0) 推荐(1) 编辑
摘要: 在CUDA新版中内置了对Visual Studio 2010的支持,而且测试发现nvcc竟然对vs100编译器也给予了支持。这点在官方的简介中并没有提及。下面来看下如何在VS2010中正确配置新建一个CUDA项目。首先在正常安装CUDA toolkit和SDK后,会自动配置好IDE。如果没有可以在Toolkit的安装目录下找到下面的这些文件。 将MsBuildExtension 文件夹下的所有文件拷贝至 C:/Program Files/MSBuild/Microsoft.Cpp/v4.0/BuildCustomizations (C:/Program Files (x86)/MSBuild/ 阅读全文
posted @ 2012-03-21 11:22 carekee 阅读(633) 评论(0) 推荐(0) 编辑
摘要: Thrust 是一个类似于STL的针对CUDA的C++模板库。Trust提供与CUDA C完全兼容的接口,可以使我们高效地编写高性能并行程序。Thrust提供了丰富的数据并行算法,例如scan、sort、reduce等,可以简单快捷地构成复杂算法,并使得代码获得更高的可读性。使用这些高度抽象的方法来表达计算,可以隐藏细节,并且Trust会自动选择最有效率的算法实现。因此,程序员得以快速构建CUDA程序,并能够获得极高的稳定性和性能与精度。此文档简述了如何使用Trust开发CUDA程序。即使你的C++与CUDA经验有限,也能够顺利学习该指导。安装与版本在安装CUDA Toolkit时,Trust 阅读全文
posted @ 2012-03-21 11:22 carekee 阅读(1013) 评论(0) 推荐(0) 编辑
摘要: 近日,CUDA 4.0已经对注册开发者开放,其中增加了不少的功能。其中P2P(Peer-to-Peer )与UVA(UnifiedVirtual Address Space )的引进最为大家关心。这里与大家一起分享下SDK中的simpleP2P这个例子,他展示了如何使用这两个功能。 代码如下: [cpp] view plaincopyprint?/**Copyright1993-2011NVIDIACorporation.Allrightsreserved.**PleaserefertotheNVIDIAenduserlicenseagreement(EULA)associated*witht 阅读全文
posted @ 2012-03-21 11:21 carekee 阅读(1874) 评论(0) 推荐(0) 编辑
摘要: 前几天写一个DirectUIDraw部分, 有一段编码的思路是这样的: 为了防止闪烁采用双缓存后hMemDC, 为了方便绘制png图标, 采用GDI+, 简单的绘制都是GDI绘制的, 为了更有效利用hMemDC, 每次生成hMemDC生成的位图是Clipbox大小的, 在SetViewportorgex调整视窗坐标, 在绘制对象过程中, 通过RectVisible判断是否可进行绘制, 开始用用bmp皮肤的时候(此时没有必要使用GDI+) 绘制效率很高, 而且没有任何bug, 但采用了GDI+之后, 总是有绘制不到的地方, 尤其是反复invalidaterect效果更差, 后来发现问题出现的原因 阅读全文
posted @ 2012-03-21 09:25 carekee 阅读(899) 评论(0) 推荐(0) 编辑
  2012年3月19日
摘要: 做项目终于遇到精度产生的问题了,由于免费的CULA库只能用float精度,所以程序里有些数组是float的,然后在做累加运算的时候问题就出来了——计算小节点系统就收敛,大节点系统发散,明显是精度问题。于是研究了一下Kahan 求和公式,这货果然厉害,能将累加的精度保持在float级别。以下是我用VC写的演示程序:#include "stdafx.h"int _tmain(int argc, _TCHAR* argv[]){int i;float x=0.001;float y;float t;float sum;float eps=0;printf("\n理论值: 阅读全文
posted @ 2012-03-19 15:01 carekee 阅读(1963) 评论(1) 推荐(1) 编辑
  2012年3月16日
摘要: Windows Server 2003 Enterprise Edition(企业版)* 支持8节点集群、NUMA;支持8路SMP * 内存支持: (i386)32位版支持32GB内存 (X64) 64位版支持64GB内存 windows 2003 默认只支持小内存模式(最大3G)大于3G需要编辑Boot.ini加 /pae 参数开启大内存模式才能支持3G以上内存,按以上操作编辑Boot.ini重新启动仍有问题就是你内存兼容有问题.下面给出一个2003 boot.ini 的例子: [boot loader] timeout=0 default=multi(0)disk(0)rdisk(0)pa 阅读全文
posted @ 2012-03-16 13:49 carekee 阅读(8328) 评论(0) 推荐(0) 编辑
  2012年3月15日
摘要: 问题描述平面坐标系中,已知三点坐标,求出任意两点组成的线段之间的夹角。使用向量夹角公式cos<夹角> = 两向量之积 / 两向量模的乘积<夹角> = arccos( 两向量之积 / 两向量模的乘积 ) 1 #include <cmath> 2 using std::acos; // 反余弦函数 3 using std::sqrt; // 平方根函数 4 //--------------------------------------------------------------------------- 5 6 // 点结构体的定义 7 struct TP 阅读全文
posted @ 2012-03-15 09:44 carekee 阅读(8329) 评论(0) 推荐(1) 编辑
  2012年3月14日
摘要: 1.VC6中使用CxImage这个库. 编译了他的源代码,得到几个.lib我在VC6中引入这几个lib.然后编译,没报错!create一个cximage的时候,编译就报错。下面是错误信息:Creating library Debug/Test.lib and object Debug/Test.expcximage.lib(ximaraw.obj) : error LNK2001: unresolved external symbol _dcr_cleanup_dcrawcximage.lib(ximaraw.obj) : error LNK2001: unresolved external 阅读全文
posted @ 2012-03-14 13:29 carekee 阅读(3534) 评论(1) 推荐(0) 编辑
  2012年3月13日
摘要: APIHOOK实例剖析 关于APIHOOK的基础知识有很多,如dll的相关知识、Hook的相关知识、系统进程与线程之间的联系等。具体可以看我的另两篇文章:"我的Dll(动态链接库)学习笔记" 和 "我的Hook学习笔记"。:)下面进入这篇文章的重点,根据APIHook源码进行APIHook的剖析。一、APIHOOK之dll部分//////////////////////////////// APIHook_Dll.cpp ////////////////////////////////////////// rivershan写于2002.9.23 /// 阅读全文
posted @ 2012-03-13 18:01 carekee 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 关于Hook一、基本概念: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。二、运行机制:1、钩子链表和钩子子程: 每一个Hook都有一个与. 阅读全文
posted @ 2012-03-13 18:00 carekee 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 在DLL中使用资源(一) 在CSDN论坛上最常看见的关于DLL的问题就是如何在DLL中使用对话框,这是一个很普遍的关于如何在DLL中使用资源的问题。这里我们从Win32 DLL和MFC DLL两个方面来分析并解决这个问题。1.Win32 DLL 在Win32 DLL中使用对话框很简单,你只需要在你的DLL中添加对话框资源,而且可以在对话框上面设置你所需要的控件。然后使用DialogBox或者CreateDialog这两个函数(或相同作用的其它函数)来创建对话框,并定义你自己的对话框回调函数处理对话框收到的消息。下面通过一个具体实例来学习如何在Win32 DLL中使用对话框,可以按照以下步骤来完 阅读全文
posted @ 2012-03-13 17:58 carekee 阅读(1529) 评论(0) 推荐(0) 编辑
摘要: 2、动态链接到MFC的DLL 在讨论关于动态链接到MFC的DLL的模块状态问题之前,先来看一个例子。本例可以通过如下步骤来完成:1)在VC菜单中File->New新建一个命名为DLLShared的MFC AppWizard的工程,下一步选择Regular DLL using shared MFC DLL。2)在工程中添加一个对话框资源,其ID为:IDD_ABOUTBOX。并在resource.h之中将IDD_ABOUTBOX 的数值改为100。3)在DLLShared.cpp中定义如下函数:void ShowDlg(){ CDialog dlg(IDD_ABOUTBOX); dlg.Do 阅读全文
posted @ 2012-03-13 17:58 carekee 阅读(302) 评论(0) 推荐(0) 编辑
摘要: DLL中调用约定和名称修饰(三)2、C++编译时函数(非类成员函数)名称修饰当函数使用__cdecl调用约定时,编译器进行以下工作:1.以?标识函数名的开始,后跟函数名;2.函数名后面以@@YA标识开始,后跟返回值和参数表;3.当函数的返回值或者参数与C++类无关的时候,返回值和参数表以下列代号表示: B:constD:charE:unsigned charF:shortG:unsigned shortH:intI:unsigned intJ:longK:unsigned longM:floatN:double_N:boolPA:指针(*,后面的代号表明指针类型,如果相同类型的指针连续出现,以 阅读全文
posted @ 2012-03-13 17:57 carekee 阅读(390) 评论(0) 推荐(0) 编辑
摘要: DLL中调用约定和名称修饰(一)调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议。这种协议规定了该语言的函数中的参数传送方式、参数是否可变和由谁来处理堆栈等问题。不同的语言定义了不同的调用约定。在C++中,为了允许操作符重载和函数重载,C++编译器往往按照某种规则改写每一个入口点的符号名,以便允许同一个名字(具有不同的参数类型或者是不同的作用域)有多个用法,而不会打破现有的基于C的链接器。这项技术通常被称为名称改编(Name Mangling)或者名称修饰(Name Decoration)。许多C++编译器厂商选择了自己的名称修饰方案。因此, 阅读全文
posted @ 2012-03-13 17:56 carekee 阅读(236) 评论(0) 推荐(1) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 61 下一页