opencl吧 关注:528贴子:1,573
  • 8回复贴,共1

【入门】内存分布图解

只看楼主收藏回复



1楼2012-02-15 16:16回复
    opencl内存模型:
    OpenCL定义了一种多级内存模型,涉及从仅单独计算单元可见的私有内存到设备上的所有计算单元均可见的全局内存这一范围内的各种内存。不同内存空间可重叠在一起,具体取决于实际的内存子系统。
    OpenCL 1.0定义了4种内存空间:私有、局部、常数和全局。表2,下表显示了OpenCL定义的内存层次结构图。
    私有内存是仅供单一计算单元使用的内存。这与单一计算单元或单一CPU核心中的寄存器相似。
    局部内存是供工作组中的工作项使用的内存。这与当前一代的AMD GPU上提供的局部数据共享相似。
    常数内存是指在内核执行过程中可用来存储常数数据,供设备中的所有计算单元进行只读访问的内存。主机处理器负责分配和初始化驻留在此内存空间内的存储对象。这与AMD GPU上提供的常数缓存相似。
    最后,全局内存是一种可供设备上的所有计算单元使用的内存。这与AMD GPU上提供的片外GPU内存相似。

    


    2楼2012-02-15 16:18
    回复
      kernel中内存的分布



      3楼2012-02-15 16:20
      回复
        内存在设备中的相应位置



        4楼2012-02-15 16:21
        回复
          上图中:
          以HD6970为例,
          global memory 对应着显存 2G,constant memory也在这里
          local memory 对应着local data share 32k,这个空间很小,速度最快,所以编程时注意不要使用过多的data share,否则进行交换的话,速度反而会下降
          private memory 对应着register file,也不是很大,但是基本够用,只要不用很大的结构体
          


          5楼2012-02-15 16:26
          回复
            关于HD6970解释显卡核心数(core)和流处理器(sp)之间的关系
            一般情况下
            sp数 = core * VLIW * sp
            一个core一般有16个VILW,而一个VLIW中有4,5个sp
            所以以HD5770为例,有core 10个,sp 800个,因为
            800 = 10 *16 *5
            而HD6970中,有24个core,一个VLIW中4个sp,所以共有sp
            24*16*4个
            N卡构架不同,所以sp数量是相当性能的四五分之一,但是二者的流处理单元数是相当的,因为A卡中每个流处理器单元有四五个流处理器。
            


            6楼2012-02-15 16:36
            回复
              查看自己显卡的核心个流处理器,可以使用,GPU-Z和clinfo


              7楼2012-02-15 16:38
              回复
                吧主能不能留个qq,新手初学OPENCL,求带领


                8楼2012-09-12 09:41
                回复
                  这都21年了,还有人玩opencl波


                  IP属地:北京9楼2021-12-07 18:50
                  回复