单边jacobi算法大家都非常熟悉,就是不停地计算旋转矩阵,简单说就是计算c和s,然后旋转。然而其中做一轮旋转(任何两列都需要旋转一次)需要n*(n-1)/2次单独的旋转,这样的旋转其实是可以并行来实现的,这也就是为何jacobi算法最近比较热门的原因了。
通过这几天研究jacobi算法,我选择了从奇偶序列着手来实现其并行算法。
下面是8*8的矩阵,其中for循环可以做并行实现的,但是pc机上不支持并行,只有FPGA上面可以实现并行,所以下一步打算从FPGA上面入手,实现并行jacobi算法的硬件。
void jacobi()
{
double a[Matrix_M][Matrix_M]={
{0.4218 , 0.6787, 0.2769 , 0.4387 , 0.7094 , 0.9597 , 0.8909 , 0.8143}
,{ 0.9157 , 0.7577 , 0.0462 , 0.3816 , 0.7547 , 0.3404, 0.9593 , 0.2435}
,{ 0.7922 , 0.7431 , 0.0971 , 0.7655 , 0.2760 , 0.5853 , 0.5472