利用GPU实现通用计算

        这几天正在研究神经网络,但是背无比缓慢的计算速度折磨的痛苦不堪,但是口袋空空不能换机器,所以想到不玩游戏的时候显卡正闲的没事干,所以折磨完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 0http://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 2003Visual 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 SDKXP2003都能装。
        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 下载最新的AtiNvdia的显卡驱动

        Setp 7 生成Brook
        进入命令行,进入你解压缩Brook的目录,执行“make”,然后就会自动生成BRCC编译器,Brook运行环境和所有的Brook的例子。
       
输入“make brcc”只生成Brook编译器。
       
输入“make runtime”只生成运行环境。
       
现在所有的Brook应用程序都在bin目录下。

        Step 8 运行GPU程序
        你需要在环境变量中添加BRT_RUNTIME = cpu或者BRT_RUNTIME = oglBRT_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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
XGBoost (eXtreme Gradient Boosting) 是一种常用的机器学习算法,它通过多轮迭代训练弱分类器,最终将多个弱分类器组合成强分类器,从而提高模型的预测精度。XGBoost 在特征工程、分类、回归、排名等方面均有广泛应用。尤其是在 Kaggle 等数据科学竞赛中,XGBoost 也是常用的算法之一。 为了提高 XGBoost 的训练效率和精度,可以利用 GPU 加速 XGBoost 算法。GPU(Graphics Processing Unit)是图形处理器,也是一种并行计算的设备,相较于 CPU(Central Processing Unit),其具有更强的并行计算能力。在机器学习中,许多算法都具有高度的并行性,因此利用 GPU 加速这些算法可以大大提升计算速度和效率。 在 XGBoost 中,GPU 加速是通过 CUDA(Compute Unified Device Architecture)技术实现的。CUDA 是 NVIDIA 公司开发的并行计算平台和 API,它使得 GPU 可以被用于普通计算任务,而不只是用于图形渲染。利用 CUDA 技术,XGBoost 可以将部分计算任务(如梯度计算)交由 GPU 执行,从而提高计算速度。 相较于 CPU 计算GPU 计算在 XGBoost 中可以提高数倍的计算速度。此外,GPU 加速还可以增加模型的容量,使得 XGBoost 在复杂任务上取得更好的效果。需要注意的是,GPU 加速需要对硬件进行较高的要求,需要具有较高的计算能力和显存容量。 在使用 GPU 加速 XGBoost 时,需要对 XGBoost 进行编译,使得其能够与 CUDA 技术协同工作。在编译完成后,可以通过设置参数来开启 GPU 加速。具体方法可以参考 XGBoost 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raulredondo

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值