一种多GPU环境下的数据通信性能优化方法技术

技术编号:17596672 阅读:32 留言:0更新日期:2018-03-31 09:58
本发明专利技术公开了一种多GPU环境下数据通信性能优化方法,具体为:针对GPU内存非规则访问,采用数据重组的方法对数据进行预处理,在CPU端将数据重新组合成适合GPU访问的新数据然后传输给GPU内存;针对在多GPU环境下冗余的数据重组,采用缓存的思想,将重组后的新数据在CPU端缓存起来,而在后续有其它GPU访问时才回传给CPU以及通过点对点技术传送给其它访问GPU。本发明专利技术大大减少了GPU的非规则内存访问和冗余的数据通信,从而提高了单CPU—多GPU环境下的数据通信性能。

A method of data communication performance optimization in multi GPU environment

The invention discloses a multi GPU data communication performance optimization method considering GPU irregular memory access methods, data regrouping preprocessing of the data in the CPU end of the data will be re combined into new data for GPU access and then transmitted to the GPU memory; for redundancy in multi GPU environment the data reorganization, the cache of thought, the new data on the CPU side after the reorganization of the cached, and in subsequent GPU access only to return to CPU and by point-to-point transmission to other GPU access technology. The invention greatly reduces the irregular memory access and redundant data communication of GPU, thus improving the performance of data communication in a single CPU multi GPU environment.

【技术实现步骤摘要】
一种多GPU环境下的数据通信性能优化方法
本专利技术属于数据通信性能优化
,更具体地,涉及一种多GPU环境下的数据通信性能优化方法。
技术介绍
随着图形处理器GPU的提出,GPU越来越多地被应用于高性能计算、科学计算、机器学习和图算法等众多领域中。得益于GPU高度并行的体系结构和强大的计算能力,GPU可以显著地加速许多数据并行的应用,而且随着多GPU卡技术的成熟,越来越多地在单一节点上配置多个GPU进一步加速应用。然而很多研究表明,对于大部分应用,GPU的加速效果在很大程度上受限于CPU-GPU以及GPU-GPU间的数据通信,因此研究如何高效地在多GPU环境下进行数据通信具有重要意义。非规则应用导致的低效内存访问是严重降低通信效率的一个重要方面,因为GPU的内存结构以及非规则的数据结构,低效的内存访问会导致多次内存访问事务。目前,国内外学者已经对单GPU环境下优化非规则内存访问的方法进行了大量的研究工作。大多数的研究关注的是静态非规则内存访问,只有极少数的研究关注动态非规则内存访问。而在实际应用中,特别是分子动力学和图应用等,往往存在的是动态非规则内存访问,传统地通过改变数据存储结构等静态方法不再适用,因此,研究一种在多GPU环境下有效避免动态非规则内存访问的优化方法具有重大意义。目前,优化动态非规则内存访问的方法,主要利用动态地在GPU端数据重组和数据访问重定向来将非规则内存访问转化为规则内存访问,例如在GPU端创建规则的数据副本,将访问重定向到该数据副本;或者利用共享内存重组数据等。现存的这些优化方法,虽然一定程度上避免了动态非规则内存访问,但仍然存在一些问题,主要包括:1)在GPU端创建副本,大量浪费了GPU有限的内存资源;2)在多GPU环境下,在GPU端实时创建副本,会导致多个GPU访问同一段非规则数据时冗余的数据重组。
技术实现思路
针对现有技术的缺陷,本专利技术的目的在于提供一种多GPU环境下优化动态非规则内存访问的方法,旨在解决现有方法中存在的浪费GPU有限的内存资源和冗余的数据重组的技术问题。为实现上述目的,本专利技术提供了一种多GPU环境下优化动态非规则内存访问的方法,包括以下步骤。CPU数据重组步骤:CPU将数据划分为多段,对各数据段进行数据重组生成数据段副本,并仅将各GPU第一次需访问数据段的数据段副本传送给对应的GPU;GPU数据访问步骤:各GPU进行第一次数据段访问时,直接访问本地的数据段副本;各GPU进行余下数据段访问时,从CPU的内存中访问数据段副本。进一步地,所述余下数据段第一次被访问的具体实施方式为:当数据段D被第一次访问,CPU为请求GPU分配GPU端首地址,将数据段D的数据段副本传送给请求GPU,请求GPU按照新分配的GPU端首地址存储数据段副本。进一步地,所述余下数据段第n,n>1次被访问的具体实施方式为:当数据段F被第n,n>1次访问,CPU判定请求GPU是否是首次访问该数据段,如果是进入首次访问步骤,否则进入非首次访问步骤;首次访问步骤:若CPU存储的是最新数据段副本,CPU将最新数据段副本传送给请求GPU;若CPU存储的是不是最新数据段副本,则CPU通知最近更新过数据段副本的GPU将最新数据段副本回传以及传送给请求GPU;非首次访问步骤:若GPU存储的是最新数据段副本,请求GPU直接本地读取数据段副本;若GPU存储的是不是最新数据段副本,则CPU通知最近更新过数据段副本的GPU将最新数据段副本回传以及传送给请求GPU。进一步地,还为GPU访问数据段设置副本缓存记录,记录包括的信息有:数据段原始首地址、数据段副本首地址、GPU端首地址和状态位。进一步地,所述各GPU进行余下数据段访问的具体实施方式为:(1)请求GPU向CPU发出包含待访问数据段原始首地址信息的访问请求;(2)CPU查询对应的副本缓存记录,从中提取GPU端首地址信息;若GPU端首地址信息为空,进入步骤(3);若GPU端首地址信息不为空,进入步骤(4);(3)CPU为第一次访问该数据段的请求GPU分配GPU端首地址,并从副本缓存记录中的CPU端首地址读取数据段副本,将数据段副本传送给请求GPU,请求GPU按照新分配的GPU端首地址存储数据段副本,CPU更新缓存记录中的GPU端首地址信息,结束本次访问;(4)CPU进一步判定记录中的CPU端首地址是否是请求GPU地址,如果是,进入步骤(5),如果不是,进入步骤(9);(5)CPU进一步查询状态位,若状态位表明CPU存储的是最新数据段副本,则通知请求GPU直接访问本地访问数据段副本,进入步骤(6);若状态位表明某一GPU最新更新过该数据段副本,CPU存储的并不是最新数据段副本,此时需要启动数据更新操作,进入步骤(8);(6)请求GPU执行本地数据段副本访问,若本次访问是写操作,进入本步骤(7),若本次访问是读操作,结束本次访问;(7)请求GPU本地存储写操作后的最新数据段副本,暂时不回传新数据,仅仅通知CPU修改该数据段对应的所有副本缓存记录,即将状态位更新为GPU的ID号,表示该数据段副本被该GPU更新,结束本次访问;(8)CPU通知状态位指定ID的GPU将最新数据段副本回传以及传送给请求GPU,CPU更新请求GPU的副本缓存记录和指定ID的GPU访问该数据段的副本缓存记录,即将记录中状态位更新为数据为最新状态,结束本次访问;(9)CPU进一步查询状态位,若状态位表明CPU存储的是最新数据段副本,则进入步骤(10),若状态位表明某一GPU最新更新过该数据段副本,进入步骤(11);(10)CPU为第一次访问该数据段的GPU分配GPU端首地址,并从副本缓存记录中的CPU端首地址读取待访问的数据段副本,将数据段副本传送给GPU,GPU按照新分配的GPU端首地址存储数据段副本;CPU为请求GPU访问该数据段新增一条缓存记录,新增缓存记录中的GPU端首地址信息为此次分配的地址信息,结束本次访问;(11)CPU为第一次访问该数据段的GPU分配GPU端首地址,通知状态位指定ID的GPU将最新数据段副本回传以及传送给请求访问的GPU,GPU按照新分配的GPU端首地址存储数据段副本;CPU为请求GPU访问该数据段新增一条缓存记录,新增缓存记录中的GPU端首地址信息为此次分配的地址信息,结束本次访问。进一步地,所述对各数据段进行数据重组生成数据段副本的具体实施方式为:创建与数据段A相同大小的新数组A';对于数据段A的每一元素,创建重组映射规则f:A[B[tid]]→A'[i],其中tid为GPU线程ID,B[tid]为数据段A中的元素索引值,i为新数组A'中的元素索引;根据映射规则f填充数组A’,生成数据段副本。通过本专利技术所构思的以上技术方案,与现有技术相比,本专利技术具有以下的有益效果:(1)针对GPU端进行数据重组严重浪费GPU有限内存资源,通过将数组重组offload到CPU端进行,大大提高了GPU的内存资源利用率,避免了GPU内存的浪费。(2)进一步地针对多GPU环境下多次迭代或者多GPU访问同一非规则数据造成的冗余数据重组问题,通过缓存重组后的数据副本,并采用一致性原则维护一个记录表和迟写回方式,大大降低了冗余的数据重组和不必要的即时传输。(3)针对数据重组本文档来自技高网
...
一种多GPU环境下的数据通信性能优化方法

【技术保护点】
一种多GPU环境下数据通信性能优化方法,其特征在于,包括以下步骤:CPU数据重组步骤:CPU将数据划分为多段,对各数据段进行数据重组生成数据段副本,并仅将各GPU第一次需访问数据段的数据段副本传送给对应的GPU;GPU数据访问步骤:各GPU进行第一次数据段访问时,直接访问本地的数据段副本;各GPU进行余下数据段访问时,从CPU的内存中访问数据段副本。

【技术特征摘要】
1.一种多GPU环境下数据通信性能优化方法,其特征在于,包括以下步骤:CPU数据重组步骤:CPU将数据划分为多段,对各数据段进行数据重组生成数据段副本,并仅将各GPU第一次需访问数据段的数据段副本传送给对应的GPU;GPU数据访问步骤:各GPU进行第一次数据段访问时,直接访问本地的数据段副本;各GPU进行余下数据段访问时,从CPU的内存中访问数据段副本。2.根据权利要求1所述的多GPU环境下数据通信性能优化方法,其特征在于,所述余下数据段第一次被访问的具体实施方式为:当数据段D被第一次访问,CPU为请求GPU分配GPU端首地址,将数据段D的数据段副本传送给请求GPU,请求GPU按照新分配的GPU端首地址存储数据段副本。3.根据权利要求1所述的多GPU环境下数据通信性能优化方法,其特征在于,所述余下数据段第n,n>1次被访问的具体实施方式为:当数据段F被第n,n>1次访问,CPU判定请求GPU是否是首次访问该数据段,如果是进入首次访问步骤,否则进入非首次访问步骤;首次访问步骤:若CPU存储的是最新数据段副本,CPU将最新数据段副本传送给请求GPU;若CPU存储的是不是最新数据段副本,则CPU通知最近更新过数据段副本的GPU将最新数据段副本回传以及传送给请求GPU;非首次访问步骤:若GPU存储的是最新数据段副本,请求GPU直接本地读取数据段副本;若GPU存储的是不是最新数据段副本,则CPU通知最近更新过数据段副本的GPU将最新数据段副本回传以及传送给请求GPU。4.根据权利要求1或2或3所述的多GPU环境下数据通信性能优化方法,其特征在于,还为GPU访问数据段设置副本缓存记录,记录包括的信息有:数据段原始首地址、数据段副本首地址、GPU端首地址和状态位。5.根据权利要求4所述的多GPU环境下数据通信性能优化方法,其特征在于,所述各GPU进行余下数据段访问的具体实施方式为:(1)请求GPU向CPU发出包含待访问数据段原始首地址信息的访问请求;(2)CPU查询对应的副本缓存记录,从中提取GPU端首地址信息;若GPU端首地址信息为空,进入步骤(3);若GPU端首地址信息不为空,进入步骤(4);(3)CPU为第一次访问该数据段的请求GPU分配GPU端首地址,并从副本缓存记录中的CPU端首地址读取数据段副本,将数据段副本传送给请求GPU,请求GPU按照新分配的GPU端首地址存储数据段副本,CPU更新缓存记录中的GPU端首地址信息,结束...

【专利技术属性】
技术研发人员:廖小飞郑然刘元栋金海
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1