这几天正在研究神经网络,但是背无比缓慢的计算速度折磨的痛苦不堪,但是口袋空空不能换机器,所以想到不玩游戏的时候显卡正闲的没事干,所以折磨完CPU后转而折磨GPU起来。
GPU计算当然不能凭空做起,否则要非常了解那些DirectX或者OpenGL的指令,然后自己把数据搞成图像让GPU来渲染,那个实在是太困难了。现在已经有了一个GPU的编译器,可以把专门为GPU计算而设计的一种变异的C/C++编译成传统的C/C++,然后再用普通的编译器编译成机器代码。
下面就来详细讲解如何得到GPU编译器。
这个编译器是叫BrookGPU,是 Stanford University Graphics Lab开发的,现在只是0.4版。
下面是主页http://graphics.stanford.edu/projects/brookgpu/。
Setp 0到http://sourceforge.net/projects/brook下载BrookGPU源码,里面也有英文的Quick Start,不过没有我这么详细。
Step 1 到http://www.cygwin.com/下载Cygwin。
1.1 默认安装Setup,在选择服务器的时候随便选,不管不同的服务器速度略有差别,有些甚至打不开,要碰运气了。
1.2 添加下面的包,尽量选择一样的版本,不过Interpreters / Perl没有
5.8.5-3,我随便选了一个也没出问题,不过我建议选择高版本的那个。
Devel / Make (3.80-1)
Devel / Bison (20030307-1)
Devel / Flex (
2.
5.4a-3)
Interpreters / Perl (
5.8.5-3)?
Setp 2 安装Microsoft Visual C++编译器。
相信大家大都安装了Visual Studio.Net 2003,Visual Studio.Net 2002也可以,不过后面的路径设置略有不同。好像Visual Studio 6.0也可以,不过没有试过。
安装了Visual Studio.Net 2003/2002的朋友可以跳过Setp 2了。
如果你什么也没有,你就只好下载免费的Visual C++ Toolkit 2003。
http://msdn.microsoft.com/visualc/vctoolkit2003/
然后还需要安装Microsoft Windows latform SDK,XP和2003都能装。
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Step 3 安装DirectX 9 SDK,最近的版本是2005 August。
http://msdn.microsoft.com/directx/sdk/
Step4 安装Nvdia CGC编译器
http://developer.nvidia.com/object/cg_toolkit.html
Step 5 设置系统环境变量
右击“我的电脑”à“属性”à“高级”à“环境变量”。
如果你安装了VS.net 2003,安照下面的提示添加环境变量,注意下面的路径都是默认的安装路径,请根据个人的设置进行改动。
INCLUDE
C:/Program Files/Microsoft Visual Studio .NET 2003/SDK/v1.1/include
C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/include
C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Include
LIB
C:/Program Files/Microsoft Visual Studio .NET 2003/SDK/v1.1/Lib/
C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/lib
C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/PlatformSDK/Lib
PATH
C:/Program Files/Microsoft Visual Studio .NET 2003/Vc7/bin
C:/Program Files/Microsoft Visual Studio .NET 2003/Common7/IDE
如果你安装了Visual Studio Toolkit,安照下面的提示添加环境变量,注意下面的路径都是默认的安装路径,请根据个人的设置进行改动。
INCLUDE
C:/Program Files/Microsoft Platform SDK for Windows XP SP2/Include
C:/Program Files/Microsoft Visual C++ Toolkit 2003/include
LIB
C:/Program Files/Microsoft Platform SDK for Windows XP SP2/Lib
C:/Program Files/Microsoft Visual C++ Toolkit 2003/lib
PATH
C:/Program Files/Microsoft Visual C++ Toolkit 2003/bin
无论你安装了哪个编译器,都要再添加下面的环境变量,注意根据个人的设置进行改动。
INCLUDE
C:/Program Files/Microsoft DirectX 9.0 SDK (August 2005)/Include
LIB
C:/Program Files/Microsoft DirectX 9.0 SDK (August 2005)/Lib/x86
PATH
C:/Program Files/NVIDIA Corporation/Cg/bin
C:/cygwin/bin
C:/Program Files/Microsoft DirectX 9.0 SDK (August 2005)/Utilities/Bin//x86
Setp 6 下载最新的Ati和Nvdia的显卡驱动
Setp 7 生成Brook
进入命令行,进入你解压缩Brook的目录,执行“make”,然后就会自动生成BRCC编译器,Brook运行环境和所有的Brook的例子。
输入“make brcc”只生成Brook编译器。
输入“make runtime”只生成运行环境。
现在所有的Brook应用程序都在bin目录下。
Step 8 运行GPU程序
你需要在环境变量中添加BRT_RUNTIME = cpu或者BRT_RUNTIME = ogl或BRT_RUNTIME = dx9。
Step 9 编译GPU程序
以brook/prog/tests/sum为例。
仍然在命令行中,在brook/bin目录下,运行“brcc ../ /prog/tests/sum/sum.br”,就会在同一目录下生成传统C/C++源代码“sum.cpp”,当然几乎看不懂。
方法1 仍然在命令行中,在brook目录下,运行“make”,就会自动生成sum的可执行文件。
方法2 运行VS.net 2003,新建C++命令行工程,把“sum.cpp”中的内容复制粘贴进来。
把brook/bin目录下brook.lib复制到工程目录下。
在VS.net菜单中,“项目”à“属性”à“C/C++”à“常规”中,添加附加包含目录“d:/brook/include”(请根据个人设置进行相应的改变)。
在VS.net菜单中,“项目”à“属性”à“链接器”à“输入”中,添加附加依赖项“brook.lib opengl32.lib d3d9.lib d3dx9.lib”。
编译,运行。
BrookGPU的效率仍然不令人满意,在我的Raedon9550上不敌P4 1.5G,而且慢了2个数量级,也许只有最新的6或者7系列的Nvida或者R5xx的Ati显卡才能够有令人满意的速度,不过一切都是从零开始的。我们期待BrookGPU有更新的版本推出,提高运行效率。
BrookGPU语言的语法请参考:
http://www.bios.net.cn/Article/wzpd/DNJS/Linuxkf/0551118520791145.htm
03-07
2007

05-10
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交