-
公开(公告)号:CN105808309A
公开(公告)日:2016-07-27
申请号:CN201610130123.6
申请日:2016-03-08
Applicant: 中国科学院软件研究所
Abstract: 本发明提出了一种基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,针对国产申威SW1600平台,采用“interface接口?driver驱动?kernel汇编核心代码”的三层代码设计框架,使用乘加指令、循环展开、软件流水线指令重排、SIMD向量化运算、寄存器分块技术等与平台架构相关的技术手段,实现汇编级手工优化,解决了编译器针对计算密集型函数GEMM优化不足的问题,大幅提升函数性能,与开源BLAS数学库GotoBLAS相较,平均加速比为4.72,最高加速比为5.61。
-
公开(公告)号:CN113641956A
公开(公告)日:2021-11-12
申请号:CN202110896851.9
申请日:2021-08-05
Applicant: 中国科学院软件研究所
IPC: G06F17/16
Abstract: 本发明公开一种面向SW26010‑Pro处理器的1、2级BLAS函数库的高性能实现方法,包括:对问题进行任务划分,产生若干子问题,其中所述问题的结构包括向量、普通矩阵、对称矩阵或三角矩阵;若为向量、普通矩阵或对称矩阵时,将各子问题的运算分配给相应线程;若为三角矩阵时,将子问题对角部分的运算分给0号线程,非对角部分的运算分配给其他相应线程;拼接各线程的运算结果,获取所述问题的解。本发明实现了BLAS 1、2级函数的并行化,解决了线程间的数据依赖问题,并通过自适应调优机制,进一步提升了函数的性能。
-
公开(公告)号:CN106775594B
公开(公告)日:2019-03-19
申请号:CN201710023923.2
申请日:2017-01-13
Applicant: 中国科学院软件研究所
IPC: G06F9/30
Abstract: 本发明公开了一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法,由于稀疏矩阵的非零元分布很不规则,该方法设计了静态、动态两种不同的任务划分方法,以适应不同的稀疏矩阵;提出了一套动静态的缓存机制,以提升向量x的访存命中率;提出了一套自适应的优化方法,针对输入的稀疏矩阵,可以动态选出最优的执行参数,以提升其运行性能。本发明采用Matrix Market矩阵集中的16个稀疏矩阵进行测试,相比申威处理器单主核运行版SpMV最高有10倍左右加速,平均加速比为6.51。
-
公开(公告)号:CN104731563B
公开(公告)日:2017-07-11
申请号:CN201510157957.1
申请日:2015-04-03
Applicant: 中国科学院软件研究所
Abstract: 一种基于FFT的大整数乘法SSA算法多核并行化实现方法,其是从细粒度的角度对大整数乘法SSA算法进行多核并行优化,其核心是对利用SSA算法求取负循环卷积的四个核心计算过程分别进行并行设计,即分别对分解、FFT正变换、点乘和FFT逆变换四个计算过程进行优化。本发明充分利用硬件的多核资源,提高运行速度,在实际应用中有着十分重要的作用。
-
公开(公告)号:CN104182209B
公开(公告)日:2017-06-16
申请号:CN201410427589.3
申请日:2014-08-27
Applicant: 中国科学院软件研究所
IPC: G06F9/38
Abstract: 本发明公开一种基于PETSc的GCRO‑DR算法并行处理方法,(1)并行进行m步Arnoldi迭代,生成子空间Vm+1和hessenberg矩阵(2)串行求解最小二乘问题特征值问题和Reduced QR分解;(3)开始进行迭代,并行进行m‑k步Arnoldi过程;(4)并行求解(5)串行求解最小二乘问题和Reduced QR分解;(6)进行下一个迭代步,直至收敛;(7)当求解第二个及以后的系统时,先并行更新回收矩阵Ck和Uk,然后开始迭代,直至收敛。本发明提出的并行实现方法通过调用PETSc库能实现多个节点协同计算,进而可以提高GCRO‑DR算法的整体性能。
-
公开(公告)号:CN105653239A
公开(公告)日:2016-06-08
申请号:CN201510996000.6
申请日:2015-12-25
Applicant: 中国科学院软件研究所
IPC: G06F7/53
CPC classification number: G06F7/5324
Abstract: 本发明公开了一种大整数乘法Karatsuba算法的并行实现方法,基于64位无符号长整型整数操作,通过巧妙的公式转换技巧,指针运算以及存储方式,以解决部分积存储与计算的相关性问题,通过OpenMP多线程编程,采用section任务分担策略将算法进行并行化,从而开启8个线程在递归程序的第一层并行求取8个部分积,每个section负责一个部分积的计算任务,待部分积均求取完毕后进行串行归并,从而并行化Karatsuba算法,提高算法效率。
-
公开(公告)号:CN103336758A
公开(公告)日:2013-10-02
申请号:CN201310271126.8
申请日:2013-06-29
Applicant: 中国科学院软件研究所
IPC: G06F17/16
Abstract: 本发明公开一种稀疏矩阵的存储方法CSRL及SpMV实现方法,按行扫描稀疏矩阵A,用数组val顺序存储每个非零元值信息;定义列下标连续的若干个非零元为一个连续非零元段,用数组jas记录每个连续非零元段的第一个元素的列下标,用数组jan记录每个连续非零元段的非零元个数;用数组ptr记录稀疏矩阵A每行第一个连续非零元段的起始索引。本发明的数据存储方法对非零元的列索引合并存储,减小了存储空间需求;充分挖掘了稀疏矩阵的数据局部性,据此可以利用SIMD指令进行存取和计算,并可减少内存访问次数,提高了稀疏矩阵向量乘SpMV的性能。
-
公开(公告)号:CN105808309B
公开(公告)日:2019-04-05
申请号:CN201610130123.6
申请日:2016-03-08
Applicant: 中国科学院软件研究所
Abstract: 本发明提出了一种基于申威平台的基础线性代数库BLAS三级函数GEMM的高性能实现方法,针对国产申威SW1600平台,采用“interface接口‑driver驱动‑kernel汇编核心代码”的三层代码设计框架,使用乘加指令、循环展开、软件流水线指令重排、SIMD向量化运算、寄存器分块技术等与平台架构相关的技术手段,实现汇编级手工优化,解决了编译器针对计算密集型函数GEMM优化不足的问题,大幅提升函数性能,与开源BLAS数学库GotoBLAS相较,平均加速比为4.72,最高加速比为5.61。
-
公开(公告)号:CN104731563A
公开(公告)日:2015-06-24
申请号:CN201510157957.1
申请日:2015-04-03
Applicant: 中国科学院软件研究所
Abstract: 一种基于FFT的大整数乘法SSA算法多核并行化实现方法,其是从细粒度的角度对大整数乘法SSA算法进行多核并行优化,其核心是对利用SSA算法求取负循环卷积的四个核心计算过程分别进行并行设计,即分别对分解、FFT正变换、点乘和FFT逆变换四个计算过程进行优化。本发明充分利用硬件的多核资源,提高运行速度,在实际应用中有着十分重要的作用。
-
公开(公告)号:CN104699449A
公开(公告)日:2015-06-10
申请号:CN201510156109.9
申请日:2015-04-03
Applicant: 中国科学院软件研究所
IPC: G06F7/50
Abstract: 本发明涉及一种基于GMP的大整数加法和减法多核并行化实现方法,首先借助于临时数组来解决加法或减法操作产生的进位或借位带来的数据相关性问题,然后采用将迭代循环for中的运算进行任务划分,基于OpenMP多线程编程实现,使用动态调度策略,多线程并行求取各区域的计算任务的策略解决负载不均衡问题。本发明能借助多核平台,通过充分利用多核条件提高运行速度,在实际应用中有着十分重要的作用。
-
-
-
-
-
-
-
-
-