CN116107640B - 针对dsmc算法缓存以及simd向量化的系统性优化系统 - Google Patents
针对dsmc算法缓存以及simd向量化的系统性优化系统 Download PDFInfo
- Publication number
- CN116107640B CN116107640B CN202310125566.6A CN202310125566A CN116107640B CN 116107640 B CN116107640 B CN 116107640B CN 202310125566 A CN202310125566 A CN 202310125566A CN 116107640 B CN116107640 B CN 116107640B
- Authority
- CN
- China
- Prior art keywords
- simd
- cache
- collision
- grid
- particles
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000005457 optimization Methods 0.000 title claims abstract description 29
- 238000004422 calculation algorithm Methods 0.000 title abstract description 20
- 230000009897 systematic effect Effects 0.000 title description 4
- 239000002245 particle Substances 0.000 claims abstract description 100
- 238000000034 method Methods 0.000 claims abstract description 30
- 238000004364 calculation method Methods 0.000 claims abstract description 26
- 230000015654 memory Effects 0.000 claims abstract description 25
- 230000008569 process Effects 0.000 claims abstract description 9
- 230000006399 behavior Effects 0.000 claims abstract description 6
- 230000000694 effects Effects 0.000 claims description 4
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000001133 acceleration Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000035939 shock Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/15—Vehicle, aircraft or watercraft design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/25—Design optimisation, verification or simulation using particle-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/28—Design optimisation, verification or simulation using fluid dynamics, e.g. using Navier-Stokes equations or computational fluid dynamics [CFD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2111/00—Details relating to CAD techniques
- G06F2111/08—Probabilistic or stochastic CAD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2113/00—Details relating to the application field
- G06F2113/08—Fluids
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/14—Force analysis or force optimisation, e.g. static or dynamic forces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/454—Vector or matrix data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Evolutionary Computation (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Aviation & Aerospace Engineering (AREA)
- Automation & Control Theory (AREA)
- Multimedia (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Fluid Mechanics (AREA)
- Mathematical Physics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种针对DSMC的缓存优化以及SIMD指令集向量化系统,包括:SIMD缓存加载单元加载待交叉计算的网格中的粒子信息,SIMD碰撞单元根据每个网格在当前时间步长下的预期碰撞数以及来自不同的网格的不同通道粒子的碰撞行为进行向量化计算,SIMD移动单元对待交叉计算的网格中的粒子的移动行为进行向量化计算并对粒子位置进行更新,双缓冲粒子调整单元为粒子所属的每个网格配置两个缓冲区轮流进行读取以及存储以进行全局粒子调整以保证粒子具备正确的网格归属。本发明以优化的算法结构、数据结构以及相互匹配的双缓冲缓存优化以及交错网格SIMD向量化碰撞算法,提高程序缓存命中率,降低内存访问次数的同时避免SIMD向量化过程中的数据依赖。
Description
技术领域
本发明涉及的是一种流体力学领域的技术,具体是一种可用于微观湍流问题计算的直接模拟蒙特卡洛(DSMC)算法的互匹配的缓存优化方法以及单指令多数据(SIMD)指令集向量化系统。
背景技术
随着对再入飞行器高超声速流场以及粒子尺度湍流机理研究的需求,直接模拟蒙特卡洛(DSMC)算法的应用不断加强。但是作为一种粒子算法,DSMC巨大的计算量阻碍他的推广应用。因此有效地提升DSMC算法一直是研究的重点。目前针对主流CPU实现DSMC算法缓存优化以及SIMD向量化的方法缺少具体实现。如何利用好现在CPU上的缓存以及SIMD拓展指令集是必要且迫切的。
发明内容
本发明针对现有DSMC算法缓存利用率低下以及粒子碰撞模块无法向量化的问题,提出一种针对DSMC算法缓存以及SIMD向量化的系统性优化系统,通过分析DSMC算法内存访问的特点,得出DSMC算法模块数据流方向,以优化的算法结构、数据结构以及相互匹配的双缓冲缓存优化以及交错网格SIMD向量化碰撞算法,提高程序缓存命中率,降低内存访问次数的同时避免SIMD向量化过程中的数据依赖,极大地提高系统计算效率。缓存优化方法与SIMD向量化方法互相匹配,避免性能冲突。
本发明是通过以下技术方案实现的:
本发明涉及一种针对DSMC算法缓存以及SIMD向量化的系统性优化系统,包括:SIMD缓存加载单元、SIMD碰撞单元、SIMD移动单元和双缓冲粒子调整单元,其中:SIMD缓存加载单元加载待交叉计算的网格中的粒子信息,SIMD碰撞单元根据每个网格在当前时间步长下的预期碰撞数以及来自不同的网格的不同通道粒子的碰撞行为进行向量化计算,SIMD移动单元对待交叉计算的网格中的粒子的移动行为进行向量化计算并对粒子位置进行更新,双缓冲粒子调整单元为粒子所属的每个网格配置两个缓冲区轮流进行读取以及存储以进行全局粒子调整以保证粒子具备正确的网格归属。
当前时间步长内部分粒子移动至其他网格,将这部分粒子保存到对应移入网格充当存储功能的缓冲区。开始全局粒子调整以保证粒子具备正确的网格归属。
所述的全局粒子调整是指:在每次所有粒子移动结束后,将跨越当前网格边界进入其他网格的粒子放置回对应网格的内存中。
优选地,在每次交叉计算开始前以每个网格的预期碰撞数为键值进行一次桶排序,以保证SIMD不同通道处理的网格具备相近的粒子数,以达到SIMD向量通道间的负载均衡。
所述的一次桶排序是指:根据每个网格的碰撞数,对所有网格仅进行一次桶排序,桶排序的结果为碰撞数相近的网格放置在同一个桶内,桶内是无序的。
所述的预期碰撞数Ncoll=.5×v×Δt×Vcell得到,其中:v为网格内的平均碰撞率,Δt为时间步长,Vcell为网格体积。
所述的不同网格的所有粒子信息满足结构体数组(SOA)形式的数据结构;
所述的缓存命中率h=nh/(nh+nm),其中:nh为所访问数据在缓存中的次数,即缓存命中次数,nm为缓存缺失次数,即所访问数据不在缓存中。
所述的轮流进行读取以及存储是指:在为粒子属性存储申请内存空间时,内存地址时64字节对齐的,为采用SIMD向量指令集预留好空间;在进行SIMD向量化时,保持缓存优化的效果,且在设置SIMD宽度时,充分考虑L2层缓存大小,确保SIMD向量的同时,高速缓存仍有足够空间实现数据重用。
技术效果
与现有DSMC程序相比,本发明只采用缓存优化方法时可以实现2.1倍加速,只采用SIMD向量化方法可以实现2.51倍加速,两种方法一起使用可以实现3.92倍加速。
附图说明
图1为实施例流程图;
图2为双缓冲方法示意图;
图3为交错网格SIMD向量化方法示意图;
图中:a为交错网格中一次计算所需的粒子碰撞对的选择过程;b为根据粒子碰撞对讲碰撞所需粒子信息复制到临时内存对齐的缓冲数组中的过程;c为SIMD方式的碰撞过程的计算;d为根据粒子碰撞对属性计算出的概率决定是否对粒子速度进行更新;
图4计算区域示意图;
图5计算结果云图与线图示意图。
具体实施方式
本实施例涉及一种针对DSMC的缓存优化以及SIMD指令集向量化系统,包括:SIMD缓存加载单元、SIMD碰撞单元、SIMD移动单元和双缓冲粒子调整单元。
所述的SIMD缓存加载单元包括:数据加载模块、粒子移除模块以及粒子添加模块,其中:数据加载模块根据已排序的网格信息,对序号相邻的网格的粒子进行向量化加载处理,使得这些网格的数据都保存到高速缓存中,粒子移除模块根据粒子所属网格信息,对不属于当前网格的粒子进行移除处理,使得每个网格中的粒子所属网格不存在所属网格为其他网格的粒子,粒子添加模块将网格对应缓冲区的粒子拷贝到对应的网格内存区域,并将该缓冲区粒子数目设置为0。每个网格中所有粒子的某一属性采用Struct OfArray(SOA)方式,每个数组相对于64字节内存对齐。
所述的向量化加载处理是指:将粒子属性信息加载到缓存时,以SIMD向量化的方式进行。
所述的SIMD碰撞单元包括:粒子选择模块、碰撞计算模块以及碰撞写入模块,其中:粒子选择模块根据网格预期碰撞数以向量化的方式生成若干随机数,然后采用随机数向量化选择网格中的粒子碰撞对,碰撞计算模块根据选择的粒子碰撞对信息,对粒子碰撞过程进行SIMD向量化计算,碰撞生效指示结果以及碰撞后速度结果写入临时变量,碰撞写入模块将有效碰撞的结果写入对应网格对应的粒子信息中。
所述的SIMD移动单元包括:粒子移动模块以及粒子缓冲模块,其中:粒子移动模块SIMD的方式,对对应网格中的粒子进行移动,将移动后位置速度等信息写入内存,粒子缓存模块将不在输入当前网格的粒子写入待移入网格的缓冲区中。
所述的内存对齐是指:数组的首地址可以内存一次加载字节数整除从而可以减少内存读取次数。
如图1所示,为本实施例涉及上述系统的基于缓存优化的SIMD指令集向量化方法,包括以下步骤:
步骤1:粒子数据向量化加载,以保证一次迭代所需的计算数据都在高速缓存中,具体包括:
1.1将待交错计算网格的粒子所占内存全部加载到L3缓存中;
1.2将所加载的粒子中不再属于当前网格的粒子从内存中移除;
1.3从上个迭代中的存储缓冲区将上个时间步长内移入到对应新网格粒子加载到内存中。
步骤2:交错网格SIMD碰撞:具有相近预期碰撞数的网格交错以SIMD的方式计算网格内的碰撞,每个网格各占一个SIMD通道,具体包括:
2.1根据预期碰撞数,选择粒子碰撞对,并将其对应的粒子信息复制到计算缓冲数组中;
2.2以SIMD向量化方式计算碰撞后速度;
3.3根据粒子碰撞对物理信息决定是否写入更新后的速度。
步骤3:SIMD粒子移动:对步骤2中交错碰撞的网格,依次以SIMD的方式计算其粒子移动,并将待更新网格的粒子放置在缓冲区,具体包括:
3.1以SIMD向量化方式计算粒子移动后位置
3.2如果粒子移动轨迹与固体边界或者对称边界存在相交,则将粒子位置回退到初始状态;
3.3对回退到初始位置的粒子采用Ray-Trace算法计算其移动后位置。
如图3a所示,为待交错计算的网格选择粒子碰撞对;
如图3b所示,将选择的粒子碰撞对的信息复制到一个内存对齐的数组中;
如图3c所示,以SIMD方式计算粒子碰撞对碰后速度;
如图3d所示,根据粒子碰撞对信息决定是否将更新后速度写回。
步骤4:采用双缓冲的方法进行全局粒子调整,减少内存访问次数,即为每个网格准备两个缓冲区A和B,两个缓冲区分别轮流用于读取以及存入的功能,实现从内存中读取2次缓冲粒子数据,相对与直接单缓冲区的3次内存访问,可以有效降低全局粒子调整带来的开销。
在对碰撞模块进行SIMD处理器时,为避免相同粒子同时参数SIMD操作中的多次碰撞带来的写冲突,采用交错网格方法,实现不同网格的碰撞以SIMD的方式进行,具体操作包括:每轮迭代开始对以预期碰撞数为键值对网格进行排序,使得具有相近碰撞数的网格在计算粒子碰撞时以SIMD方式进行计算。
缓存优化与SIMD向量化相互匹配。在对数据进行内存对齐操作时,为采用SIMD向量指令集预留好空间,具体操作包括:在采用SOA数据结构时,每个网格不同粒子属性的数据为64字节地址对齐。在进行SIMD向量化时,保持缓存优化的效果,且在设置SIMD宽度时,充分考虑L2层缓存大小,确保SIMD向量的同时,高速缓存仍有足够空间实现数据重用。
经过具体实际实验,在CentOS Linux release 7.9.2009(Core),其中:内核为version 3.10.0-1160.45.1.el7.x86_64。编译器为Intel(R)ICC(version19.0.0.117),采用-O2级别优化,同时采用-xCOMMON-AVX512生成支持SIMD操作的可执行文件,CPU为Intel(R)Xeon(R)Gold 6230 CPU@2.10GHz的环境下。进行模拟典型的激波气泡相互作用的计算优化。在一个计算区域长5×10-4宽为7.5×10-4m的区域,边界条件按照左右下上的以此为来流,对称,出口以及自由流。计算网格维度为1000×150。激波将流场区域以及气泡分为3个区域,示意图如图4所示,图中d=2.5×10-6。该问题是一个典型的可以用于湍流机理研究的物理问题,快速准确的计算该问题,对于探究湍流机理和实际NS湍流计算具有重要意义。
上述计算区域中流场中三个区域的气体种类以及具体物理参数分布如下表所示:
如图5所示,为采用优化方案后的计算结果与基准程序相比相差不超过5%。从密度分布云图来看,气泡的变化符合重气泡变化规律。综上分析,该模拟结果符合理论结果,即采用优化方案后的程序可以准确模拟流场结果。
在上述硬件条件已算例设置下,将初始网格最小粒子数设置为100,时间步长设置为4.0×10-10s,迭代步数设置为1000。所得计算时间和计算所得加速比如表1所示。
表1采用优化策略的DSMC算法与原始DSMC计算时间与加速比
Version | Time(s) | SpeedupRatio |
Original | 1468.6 | 1.0 |
缓存优化 | 699.5 | 2.1 |
SIMD向量化方法 | 586.0 | 2.51 |
缓存优化+SIMD向量化 | 375.0 | 3.92 |
如表1所示,本系统可以有效地加速DSMC算法计算速度将近4倍,可见在保证精度不变的前提下,使用系统优化方法可以使得效率得到很大提升。
与现有技术相比,本发明通过双缓冲全局调整方案,为减少全局粒子调整带来的开销,为每个网格设置两个缓冲区,两个缓冲区轮流发挥不同的功能,可以有效地减少内存访问;通过交错网格算法,使得不同网格内碰撞以SIMD的形式进行计算,且采用一次桶排序的方法实现良好的负载均衡以实现SIMD向量化;通过缓存优化与SIMD向量方法相互匹配,不会产生彼此抑制行为。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
Claims (4)
1.一种针对DSMC的缓存优化以及SIMD指令集向量化系统,其特征在于,包括:SIMD缓存加载单元、SIMD碰撞单元、SIMD移动单元和双缓冲粒子调整单元,其中:SIMD缓存加载单元加载待交叉计算的网格中的粒子信息,SIMD碰撞单元根据每个网格在当前时间步长下的预期碰撞数以及来自不同的网格的不同通道粒子的碰撞行为进行向量化计算,SIMD移动单元对待交叉计算的网格中的粒子的移动行为进行向量化计算并对粒子位置进行更新,双缓冲粒子调整单元为粒子所属的每个网格配置两个缓冲区轮流进行读取以及存储以进行全局粒子调整以保证粒子具备正确的网格归属;
所述的全局粒子调整是指:在每次所有粒子移动结束后,将跨越当前网格边界进入其他网格的粒子放置回对应网格的内存中;在每次交叉计算开始前以每个网格的预期碰撞数为键值进行一次桶排序,以保证SIMD不同通道处理的网格具备相近的粒子数,以达到SIMD向量通道间的负载均衡;
所述的轮流进行读取以及存储是指:在为粒子属性存储申请内存空间时,内存地址时64字节对齐的,为采用SIMD向量指令集预留好空间;在进行SIMD向量化时,保持缓存优化的效果,且在设置SIMD宽度时,充分考虑L2层缓存大小,确保SIMD向量的同时,高速缓存仍有足够空间实现数据重用。
2.根据权利要求1所述的针对DSMC的缓存优化以及SIMD指令集向量化系统,其特征是,所述的一次桶排序是指:根据每个网格的碰撞数,对所有网格仅进行一次桶排序,桶排序的结果为碰撞数相近的网格放置在同一个桶内,桶内是无序的。
3.根据权利要求1所述的针对DSMC的缓存优化以及SIMD指令集向量化系统,其特征是,所述的预期碰撞数Ncoll=0.5·v·Δt·Vcell得到,其中:v为网格内的平均碰撞率,Δt为时间步长,Vcell为网格体积。
4.根据权利要求1所述的针对DSMC的缓存优化以及SIMD指令集向量化系统,其特征是,所述的缓存的命中率h=nh/(nh+nm),其中:nh为所访问数据在缓存中的次数,即缓存命中次数,nm为缓存缺失次数,即所访问数据不在缓存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310125566.6A CN116107640B (zh) | 2023-02-17 | 2023-02-17 | 针对dsmc算法缓存以及simd向量化的系统性优化系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310125566.6A CN116107640B (zh) | 2023-02-17 | 2023-02-17 | 针对dsmc算法缓存以及simd向量化的系统性优化系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116107640A CN116107640A (zh) | 2023-05-12 |
CN116107640B true CN116107640B (zh) | 2023-12-26 |
Family
ID=86254019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310125566.6A Active CN116107640B (zh) | 2023-02-17 | 2023-02-17 | 针对dsmc算法缓存以及simd向量化的系统性优化系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116107640B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5377129A (en) * | 1990-07-12 | 1994-12-27 | Massachusetts Institute Of Technology | Particle interaction processing system |
CN108549763A (zh) * | 2018-04-09 | 2018-09-18 | 电子科技大学 | 一种用于离子推进器数值模拟的电荷交换碰撞mcc方法 |
CN114490011A (zh) * | 2020-11-12 | 2022-05-13 | 上海交通大学 | N体模拟在异构架构的并行加速实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100082939A1 (en) * | 2008-09-30 | 2010-04-01 | Jike Chong | Techniques for efficient implementation of brownian bridge algorithm on simd platforms |
-
2023
- 2023-02-17 CN CN202310125566.6A patent/CN116107640B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5377129A (en) * | 1990-07-12 | 1994-12-27 | Massachusetts Institute Of Technology | Particle interaction processing system |
CN108549763A (zh) * | 2018-04-09 | 2018-09-18 | 电子科技大学 | 一种用于离子推进器数值模拟的电荷交换碰撞mcc方法 |
CN114490011A (zh) * | 2020-11-12 | 2022-05-13 | 上海交通大学 | N体模拟在异构架构的并行加速实现方法 |
Non-Patent Citations (5)
Title |
---|
Packed SIMD Vectorization of the DRAGON2-CB;Riadh Ben Abdelhamid等;《2022 IEEE 15th International Symposium on Embedded Multicore/Many-core Systems-on-Chip (MCSoC)》;全文 * |
三维宏观拟颗粒模拟程序计算代码优化研究与实现;严历;郭力;;计算机与应用化学(第12期);全文 * |
严历 ; 郭力 ; .三维宏观拟颗粒模拟程序计算代码优化研究与实现.计算机与应用化学.2009,(第12期),全文. * |
动态碰撞网格的DSMC及其并行化;陈颖骝;刘洪;李明禄;;计算机应用与软件(第10期);全文 * |
直接模拟蒙特卡洛问题的并行化方法;花嵘, 傅游, 康继昌;计算机工程(第05期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116107640A (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10346507B2 (en) | Symmetric block sparse matrix-vector multiplication | |
CN112835627B (zh) | 用于单指令多线程或单指令多数据类型处理器的近似最近邻域搜索 | |
KR20200082617A (ko) | 메모리 장치를 이용한 계산 방법 및 이를 수행하는 메모리 장치 | |
KR20160140394A (ko) | 신경망을 실행하는 방법 및 장치 | |
CN114490011B (zh) | N体模拟在异构架构的并行加速实现方法 | |
Chen et al. | A flow-guided file layout for out-of-core streamline computation | |
CN112236784A (zh) | 修改机器学习模型以改善局部性 | |
CN105808339A (zh) | 大数据并行计算方法及装置 | |
CN106484532B (zh) | 面向sph流体模拟的gpgpu并行计算方法 | |
CN116107640B (zh) | 针对dsmc算法缓存以及simd向量化的系统性优化系统 | |
CN112149269A (zh) | 优化设备、优化设备的控制方法和记录介质 | |
US8539207B1 (en) | Lattice-based computations on a parallel processor | |
CN115827511A (zh) | 设置缓存的方法以及装置 | |
CN114218136A (zh) | 一种面向脉动阵列的面积友好存储地址映射方法 | |
CN112989683A (zh) | 一种sph的向量化并行计算方法及装置 | |
Meng et al. | Acceleration of a high order finite-difference WENO scheme for large-scale cosmological simulations on GPU | |
US20160140034A1 (en) | Devices and methods for linked list array hardware implementation | |
CN113010112B (zh) | 一种基于可变电阻式存储器的数据分配优化方法 | |
Donath et al. | Optimizing performance of the lattice Boltzmann method for complex structures on cache-based architectures | |
EP4105837A1 (en) | Computer program, data processing apparatus, and data processing method | |
JP2023001055A (ja) | プログラム、データ処理装置及びデータ処理方法 | |
CN111338974A (zh) | 用于矩阵数学指令集的图块化算法 | |
CN112100099B (zh) | 一种面向多核向量处理器的格子玻尔兹曼优化方法 | |
Agullo et al. | A preliminary out-of-core extension of a parallel multifrontal solver | |
EP4361898A2 (en) | Data processing device, data processing method, and data processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |