Brook+ Programming (5)

来源:互联网 发布:mac单机游戏怎么安装 编辑:程序博客网 时间:2024/06/06 05:22
 

(接上篇)

        这个例子使kernel函数更完善:

       .使用含向量数据类型的输入流,在这种情况下,float4被用来每次取四个值。

       .kernel函数同时向八个流中写入。通过使用CAL后端,Brook+的每个kernel支持八个输出。每次对kernel函数的调用会计算4x8=32个输出值。减少内存的读取可以极大地提高流处理器的效率。

      .将输入矩阵分解为多个切片。这减少了为寻址而进行的运算。而在优化之前,与不同的输出相关联的矩阵的切片取得的是相同的地址

 

 

    在每次循环的迭代中,从矩阵A中取得一个8x4的子矩阵,从矩阵B取得一个4x4的子矩阵。二者相乘得到一个8x4的矩阵。下一次迭代的时候,行中下一个8x4的子矩阵与列中的下一个4x4子矩阵相乘,这些矩阵和前面的结果相乘,结果得到8x4的矩阵输出到流中。

 

 

 

     2.4 Example of Generated C++ Code for sum.br

 

     (略)

     2.5Building Brook+

        Brook+的编译器和运行时库的Release和Debug版本的构建都已经预构建好,不过它们也可以通过提供的代码生成。

        预构建的SDK(二进制文件、库、头文件)的路径是:<BROOKROOT>/sdk/

        在Windows 系统下,Brook+可以在命令行和Visual Studio下构建。不过都需要安装Cygwin(www.cygwin.com)

     2.5.1 Visual Studio

 

        可以通过使用提供的Visual Studio的解决方案文件来构建brcc和Brook+的运行时库,位置是:<BROOKROOT>/platform/brook.sln

        对Debug和Release的配置可以在“配置”的下拉菜单找到。对Viusal Studio默认的输出文件的位置是:

               brcc.exe: <BROOKROOT>/platform/brcc/bin/xp_x86_32

               brook.lib: <BROOKROOT>/platform/runtime/lib/xp_x86_32

       SDK目录树中的文件不会被新的构建替代。如果make安装了,在<BROOKROOT>/platform下:

 

       .运行make updatesdk将debug文件复制到SDK目录树中;

       .或者运行make updatesdk RELEASE=1 来将release构建的文件复制到SDK目录树

 

   2.5.2 Command Line

       Brook+工具可以通过命令行或者Cygwin shell运行

       1.Viusal Studio的编译器(cl.exe)和连接器(link.exe)必须包含在路径中,注意在路径中,Visual Studio的link.exe必须在Cygwin的link.exe之后

       2.在<BROOKROOT>/platform/运行make构建debug版本,运行make RELEASE=1来构建release版本

       不像Visual Studio的构建,SDK目录树可以被新的Brook+构建文件重新构建或者改写。可以运行make clean清理debug版本、make clean RELEASE=1来清理release版本。

 

 

 

原创粉丝点击