一种蒙特卡洛逆向求解PageRank问题的加速方法与流程

文档序号:12063821阅读:来源:国知局

技术特征:

1.一种蒙特卡洛逆向求解PageRank问题的加速方法,其特征在于,包括以下步骤:

S1:确定初始方向数,由初始方向数得到拟随机序列的方向数,然后计算得到拟随机数列;

S2:将PageRank迭代公式进行转换,得到新的迭代矩阵G和其对应的线性方程组系数矩阵A,计算矩阵特征值极值,根据特征值的分布得到松弛因子,利用该松弛因子对PageRank迭代公式进行松弛化处理,再利用S1中得到的拟随机数列,对松弛化后的PageRank迭代公式使用马尔科夫蒙特卡洛方法进行仿真,得到求解的目标分量xi的每条马尔科夫链仿真结果;

S3:对求解的目标分量xi的每条马尔科夫链仿真结果,首先申请分配GPU共享内存进行缓存,接着在GPU共享内存中对各个仿真结果进行归约并行求和,然后将汇总的结果除以仿真的链数,求得目标分量xi的期望值。

2.根据权利要求1所述的蒙特卡洛逆向求解PageRank问题的加速方法,其特征在于,所述步骤S1的具体过程如下:

S11:使用T个在二元有限域GF(2)上的本原多项式,其中第i维序列使用的本原多项式为:

Pi(x)=xr+t1,ixr-1+tr-1,ix+1,

其中r为Pi的度数,t1,i,t2,i,…,tr-1,i是取值为0或1的本原多项式的系数;

S12:选取初始方向数,对于一个度数为r的本原多项式Pi有r个初始方向数:v1,i,…,vr,i,其中mj,i为一个小于2j的正奇数;

S13:由初始方向数计算出方向数,公式如下:

<mrow> <msub> <mi>v</mi> <mrow> <mi>j</mi> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>=</mo> <msub> <mi>t</mi> <mrow> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <msub> <mi>v</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>&CirclePlus;</mo> <msub> <mi>t</mi> <mrow> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <msub> <mi>v</mi> <mrow> <mi>j</mi> <mo>-</mo> <mn>2</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <mo>...</mo> <mo>&CirclePlus;</mo> <msub> <mi>t</mi> <mrow> <mi>r</mi> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> <msub> <mi>v</mi> <mrow> <mi>j</mi> <mo>-</mo> <mi>r</mi> <mo>+</mo> <mn>1</mn> <mo>,</mo> <mi>i</mi> </mrow> </msub> </mrow>

S14:初始化序列起始值根据求得的方向数,以及使用格雷码方法求得第i维的序列,公式如下:

<mrow> <msubsup> <mi>x</mi> <mi>n</mi> <mi>i</mi> </msubsup> <mo>=</mo> <msubsup> <mi>x</mi> <mrow> <mi>n</mi> <mo>-</mo> <mn>1</mn> </mrow> <mi>i</mi> </msubsup> <mo>&CirclePlus;</mo> <msub> <mi>v</mi> <msub> <mi>c</mi> <mrow> <mi>n</mi> <mo>-</mo> <mn>1</mn> </mrow> </msub> </msub> <mo>.</mo> </mrow>

3.根据权利要求2所述的蒙特卡洛逆向求解PageRank问题的加速方法,其特征在于,所述步骤S2中计算松弛因子并应用松弛法求解PageRank迭代公式的过程包括以下步骤:

S21:将PageRank迭代公式进行转化:

由公式得,记为x=Gx+b,得到对应的线性方程组为Ax=b。其中相关参数说明如下:x是求解的PageRank值目标向量,α是阻尼系数,M是PageRank迭代矩阵,N是结点个数,E是元素全为1的矩阵,e是元素全为1的列向量,G为αM,b为A=(I-G);

S22:计算矩阵特征值极值,其中为A的对角矩阵的逆矩阵,得到特征值最大值λmax和特征值最小值λmin,根据求出的特征值极值算出松弛因子ω;

S23:应用松弛法求解PageRank迭代公式:

DωAx=Dωb,其中Dω为对角矩阵,对角线的元素为其中ai,j为矩阵A的元素,得到松弛化后的迭代矩阵Gω=I-DωA;

S24:使用步骤S1中得到的拟随机序列来模拟马尔科夫链,将模拟过程分配到GPU的多个线程束warp执行,线程束warp里面的每个线程执行一条马尔科夫链的随机游走,多个线程同时执行,各自求解目标分量的一个解,得到求解的目标分量xi的每条马尔科夫链仿真结果。

4.根据权利要求3所述的蒙特卡洛逆向求解PageRank问题的加速方法,其特征在于,所述步骤S3的具体过程如下:

S31:首先申请分配GPU共享内存,用于保存每个目标分量的一个仿真结果;

S32:将S2中计算得到的各个马尔科夫链随机游走的仿真结果存放在GPU的共享内存中,存放的位置为当前线程独有的线程id对应的共享内存数组下标;

S33:在GPU的共享内存对各个部分解进行reduce并行化求和:

首先在第一轮迭代中,根据GPU的线程块block数blockDimX将归约求解数据分为两个子集,子集大小为然后将线程id=i保存的值与线程id=i+size的值求和,结果保存到线程id=i的对应的共享内存上,接着在下一轮迭代中,将步长size减半,继续进行归约求和;

重复以上过程,直至步长为0时结束,并将最终结果sum除以马尔科夫链的数目求解期望值,即返回该期望值,并将求解结果由GPU内存复制回CPU内存。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1