没有合适的资源?快使用搜索试试~ 我知道了~
GPU编码对数据量和数据类型的影响:Numba和CuPy比较
the frequently used packages in Python language [7,20,21]. However,few studies have been done on the comparisons of Numba and CuPypackages. These two single packages are widely used for numericalcomputation [6,22,23].Seeing the increasing tendence of using GPU for scientific compu-tation, we have conducted an in-depth comparison of Numba [18],CuPy [19], and NumPy [24] in various aspects: the data transferringtime from Central Processing Unit(CPU) to GPU, the influence of thedata type (float32 and float64) on the execution time, as well as thetotal execution time with the variation of the grid numbers and timesteps. Our work provides a guidance for those starting to use GPUand writing the CUDA kernels for scientific computation in order tofind the optimal choice of parallel algorithm implementation underdifferent conditions. We hope that researchers in the field of compu-tational physics with less parallel computing background can completethe algorithm parallelization according to their own needs. Our workprovides researchers the parameters in GPU computing to improve thecomputational efficiencies.The paper is organized as follows: In Section 2, we introducethe finite difference method for solving the one dimensional Burgers’equation, and the basic structure and operations of the GPU card. InSection 3, we report the parameter influence of the performance in GPUcomputing. Concluding remarks are in Section 4.0Array 16(2022)1002610mmons.org/licenses/by/4.0/)。0ScienceDirect提供的内容列表0数组0期刊主页:www.elsevier.com/locate/array0数据量、数据类型和GPU编码实现包的影响0Peng Xu a,Ming-Yan Sun a,Yin-Jun Gao a,杜泰娇 b,胡金明 b,张俊杰 c,�0a西安高新技术研究所,中国西安,710025 b中国西北核技术研究所,中国西安710024c中国科学院高能物理研究所,中国北京1000490文章信息0关键词:CUDANumba CuPyBurgers’方程GPU编码0摘要0图形处理单元(GPU)在计算物理学中越来越受欢迎。鉴于物理学界对使用GPU的趋势增加,我们提供了Python语言中用于GPU编码的两个主要包Numba和CuPy的比较。我们讨论了数据量和数据类型对GPU代码性能的影响。还分析了从GPU到CPU的数据传输时间及其对总执行时间的影响。我们发现,当网格数达到10^7时,Numba的速度将快于CuPy。同时,在Numba和CuPy之间的数据传输速度没有明显差异。在Numba程序中将数据类型设置为单精度可以将计算时间提高至少20%。01.介绍0并行计算已成为高性能计算的标准。随着算法架构的复杂性和数值模拟的精度的提高,对处理大量数据的需求激增。同时,电子芯片的不断发展已经提高了计算能力。GPU以其大数据吞吐量、高内存带宽、支持浮点计算和适用于各种语言的编程接口而闻名,使得许多困难的任务成为可能。GPU的这些先进特性在许多学科中引起了巨大的热情,如计算生物物理学[1],微分方程[2],流体力学[3],分子动力学[4],粒子物理学[5,6],电磁学[7],经济物理学,统计物理学[8],地震成像,应用气象学[9]。在计算物理学领域,越来越多的研究人员开始利用GPU的通用计算能力,例如大规模高能粒子模拟过程[10],批量矩阵运算[11,12],复杂方程的快速求解[13]等。尽管GPU并行计算在计算物理学中变得越来越流行,但许多工作主要集中在算法的实现[14,15]和模拟结果的分析[16,17]。为了操作GPU,人们有许多不同的开源包可供选择,其中Numba[18]和CuPy[19]是Python语言中经常使用的包[7,20,21]。然而,对Numba和CuPy包的比较研究很少。这两个单一的包广泛用于数值计算[6,22,23]。鉴于使用GPU进行科学计算的趋势增加,我们对Numba[18]、CuPy[19]和NumPy[24]在各个方面进行了深入比较:从中央处理单元(CPU)到GPU的数据传输时间,数据类型(float32和float64)对执行时间的影响,以及随着网格数和时间步长的变化对总执行时间的影响。我们的工作为那些开始使用GPU并编写CUDA核心进行科学计算的人提供了指导,以便在不同条件下找到并行算法实现的最佳选择。我们希望计算物理领域的研究人员可以根据自己的需求完成算法的并行化。我们的工作为研究人员提供了GPU计算中的参数,以提高计算效率。本文的结构如下:第2节介绍了用于解决一维Burgers’方程的有限差分方法,以及GPU卡的基本结构和操作。第3节报告了GPU计算性能的参数影响。结论在第4节。0� 通讯作者。电子邮件地址:zjacob@mail.ustc.edu.cn(J.-J.张)。0https://doi.org/10.1016/j.array.2022.100261 2022年9月26日收到;2022年11月16日修订后收到;2022年11月17日接受20Array 16(2022)1002610P. Xu等02. 在GPU上的有限差分算法0在本节中,我们描述了在GPU上实现有限差分方法。我们比较了Numba和CuPy在通过有限差分方案解决一维Burgers方程时的性能。对于更复杂的算法,结果原则上应该是类似的。02.1. 一维Burgers方程0我们从一维Burgers方程开始,这是涉及非线性传播和扩散效应的最著名的方程0����0��=10Re�2���2;Re>0,(1)0其中�=�(�,�)是在空间和时间中定义的一般函数。Re是与粘度系数相关的雷诺数,�=1∕Re,并且�用于调整对流项�(��∕��)和扩散项�(�2�∕��2)的比率。当�接近零时,方程(1)简单地成为非线性波传播的不粘性Burgers方程。在这里,我们使用以下初始和边界条件来关闭方程(1):0�(�=0,�)=0�����+4,(2)0其中0� = Exp(−�204�)+Exp(−(�−2�04�),(3)0和0�(�,�=0)=�(�,�=2�)。 (4)0Burgers方程(1)有一个精确的数值解[25]0�(�,�)0�����+4,(5)0其中0�=Exp(−(�04�(�+1))+ Exp(−(�−4�04�(�+1))。 (6)0方程(5)形成了用于与PDE求解器进行比较的标准测试。方程(1)。0为方便起见,我们使用一阶前向差分表示项��∕��,使用一阶后向差分表示对流项��∕�阶扩散项�2�∕��2通过中心差分离散化。因此,方程(1)以以下方案实现0��+0��+������−���0�� = ����+1−2���+0�� 2. (7)0我们进一步明确地写出方程(7)0��+1�=���−�������(���0�� 2(���+1−2���+���−1),(8)0可以在GPU上迭代求解,提供方程(2)和(4)中的初始和边界条件。02.2. 在GPU上的实现0在本节中,我们介绍了在GPU上上述有限差分方案的两种常见实现。这两种方法在数据处理和其他基于Python的CUDA核编码中被广泛使用。0图1.CUDA编程模型。主机代表CPU,设备代表GPU卡。设备由许多线程组成(橙色矩形中的波浪箭头)。通常,2�(其中� >4)个线程形成一个块。同样,许多块形成一个网格。需要在主机上编写核函数(称为CUDA核函数),以便使用GPU卡上的核心(线程)。元组(0,0),(1,0),…表示卡上线程的位置。02.2.1.GPU结构的简要介绍GPU在各个领域都被用于模拟和数值计算。作为单芯片处理器,主要问题是为什么GPU的计算速度比CPU快。区别在于架构。CPU设计用于处理复杂的指令和计算,而GPU用作完全的、并行的可编程处理器,用于大规模的简单数值计算。Nvidia使开发者能够在2006-2007年使用不同的编程接口在计算过程中使用GPU,并引入了一种软件-硬件协处理的并行架构,称为“CUDA”。CUDA使开发者能够专注于用熟悉的编程语言(如Python)设计并行算法。对于开发者来说,CUDA模型是线程的集合,这是并行计算的基础。如图1所示,大量线程在一维、二维或三维中形成一个块,许多块类似地形成一个网格。块内的不同线程可以通过共享内存快速传递数据,这是GPU能够执行快速操作的原因之一。开发者可以设置核函数来定义在每个线程上运行的函数。通常,可以在CPU上设置每个块的线程数(thrds_per_blk)和每个网格的块数(blks_per_grd)以最大化GPU的计算性能。除了GPU自身的计算能力和算法结构外,CPU和GPU之间的数据传输也极大地影响程序的运行速度。从CPU到GPU的数据传输称为主机到设备(HToD),从GPU到CPU的数据传输称为设备到主机(DToH)。最后,许多参数将影响执行时间,例如核函数中变量的数据类型、thrds_per_blk和blks_per_grd的值。在解决一维Burgers方程时,我们发现最耗时的部分是时间和空间项的微分��∕��和��∕��以及�2�∕��2。因此,并行化方案主要集中在这些项的分配上。此外,如果需要高精度的结果,例如从float32到float64,那么GPU内存空间将加倍,这也会增加执行时间。30Array 16(2022)1002610P. Xu等0图2.空间项的并行方法。橙色圆盘表示CUDA内核(线程),其索引为threadIdx.x(圆盘下方的数字)。在这里,我们将32个内核分组为一个块(虚线椭圆)。蓝色矩形表示需要进行差分的输入值,绿色正方形表示差分计算完成后的输出结果。0图3. 本文中CPU和GPU的使用流程图。02.2.2. 基于Numba的实现Numba-CUDA是一个开源的Python包,允许开发人员执行大多数GPU操作。Numba利用即时(JIT)编译器来提高Python编程的执行性能,并允许在Python风格下为CPU和GPU开发高效的应用程序[18]。Numba-CUDA极大地降低了开发人员的学习成本,因此我们可以集中精力实现算法。基于CUDA的内部架构,我们按照方程(7)和(8)的方案对差分方程进行并行化。如图2所示,对于每个内核(线程),使用三个连续值(� � �−1,� � �,� � �+1)来获得� �+1�,其中�∈{0,1,2,…,�},�表示使用的空间网格的总数。请注意,GPU卡通常包含几千个线程。如果离散化网格的数量�远小于GPU线程的数量,则GPU利用率将很低。如果所有线程都完成了计算,CUDA会自动终止代码。我们使用CPU来评估方程(5)的解析解。初始条件在CPU中设置,并将红色传输到GPU进行有限差分计算。一旦GPU上的时间迭代完成,计算结果将通过PCIe传输回CPU0为了方便起见,我们在图3中描述了这个过程,并在算法1和算法2中给出了详细的伪代码。0算法1 Numba_Parallelization_difference01:创建边界条件和初始条件(�,��,�)2:创建无穷小(dt,dx)和时间步长和空间网格的总数(��,��)3:传输数据���←����包括u,un,v,dx,dt,nx,nt4:对于�←1,��做5:�←��6:在网格上调用Numba-Kernel(��,�,��,��,�,��)7:�[0]←��[0]−��[0]���∕���(��[0]−��[−2])+����∕��2�(��[1]−2��[0]+��[−2])�边界条件8:�[−1]←�[0]9:结束循环0算法2 Numba-Kernel(� �,�,��,��,�,��)01:设置Numba编译器,定义输入变量的数据类型2:���←�����������3:如果���<��则4:�[���]←��[���]−��[���]���∕���(��[���]−��[���−1])+����∕��2�(��[���+1]−2��[���]+��[���−1])5:结束如果0请注意,人们可以使用Numba在CUDA内核中编写更复杂的代码,代码可以完全采用Python风格(这是它的优势)。对于方程(8),有一种更简单和简洁的方法可以使用GPU。在第2.2.3小节中,我们将介绍另一个用于并行编程的GPU包CuPy。02.2.3. 基于CuPy的实现另一种实现第2.1节中差分方案的方法是使用CuPy包。CuPy[26]是一个开源库,通过在GPU上进行矩阵运算来提高速度。如果熟悉Python中NumPy的用法,只需要将NumPy替换为CuPy来利用GPU,因为CuPy在许多情况下与NumPy具有相同的语法。与Numba不同,CuPy可以在不编写CUDA内核函数的情况下实现并行操作的效果,这对用户来说更加方便。4GRE3.789 × 10−63.786 × 10−63.789 × 10−6𝐿∞2.110 × 10−32.110 × 10−32.110 × 10−3GRE =,(9)0Array 16 (2022) 1002610P. Xu et al.0图4. 由NumPy、Numba和CuPy包实现的数值结果。0我们提供了CuPy代码的简化版本,如算法3所示。在算法3中,我们通过矩阵运算并行化空间项的差分。这降低了实现的难度。然而,在CuPy中,复杂算法和内核操作的处理会更加困难。总的来说,Numba和CuPy各有优势和劣势。在接下来的章节中,我们将报告Numba和CuPy的性能。03. 数值结果0在本节中,我们基于CPU-NumPy代码解决一维Burgers方程,以比较Numba和CuPy在GPU编码中的性能。我们通过增加空间网格的数量来讨论CPU-NumPy、CUDA-Numba和CuPy的执行时间,并分析可能影响程序性能的因素。所有基准测试都在单个节点上执行。硬件条件为Intel(R) Xeon(R) CPU E5-2620 v3@2.30GHz CPU,带有24个处理器+4个Nvidia Tesla K40 mGPU。我们使用CUDA版本10.1.243,Numba版本0.55.1,CuPy版本8.30和Python 3.9.12 [12]。0算法3 CuPy_PD01:创建微分方程的边界条件和初始条件( �, � � , �)2:创建时间和空间的微分距离( ��, �� )和微分数( ��, �� )3:传输数据 ��包括u,un,v,dx,dt,nx,nt4:对于 � 从 1 到 �� 5: � ← � � 6: � [1 ∶ �� − 1] ∶ �� − 1] − � � [1 ∶ �� − 1] � �� ∕ �� � ( � � [1 ∶ �� −1]− � � [0 ∶ �� ]−2 � � [1 ∶ �� −1]+ � � [0 ∶ �� − 2])7: � [0] ← � � [0] − � � [0] � �� ∕ + � � �� ∕ �� 2 � ( � � [1] − 2 � � [0] + � � [−2]) � 边界条件8: � [−1] ← 03.1. 算法精度分析0在所有的数值实验中,我们采用了100个时间步长和5001个空间网格。根据第2节,实现了Burgers方程(1)的有限差分算法。在图4中,我们给出了上述算法实现的差分方案Eq.(7)的数值结果,这证明了这些包的正确性。可以看出,基于CPU的NumPy和基于CUDA的CuPy/Numba包与解析解相比给出了相同的趋势。0表1 Numba、CuPy和NumPy的误差估计。0NumPy Numba CuPy0为了进一步澄清三种实现和解析解之间的差异,我们使用 ���(全局相对误差)[27]0∑ � ||| � � − � � �|||0∑ � ||| � � �|||0和 � ∞ (范数误差)[28]0� ∞ = ‖ ‖ � � − � � � ‖ ‖ ∞ = max | | � � − � � � | | , (10)0以反映整体误差和最大偏差,其中 � � 和 � � �分别是数值解和解析解。这两个误差在表1中显示。从表1中可以看出,在解决一维Burgers方程的精度方面,数值解和解析解之间存在令人满意的一致性。GPU的使用并没有降低结果的准确性。03.2. 影响程序运行速度的参数分析0为了探究不同策略的性能,我们保持第3.1节的实验参数不变,同时增加空间网格的数量,以观察不同实现的运行时间。空间网格的数量从10^4变化到10^7。为了进一步澄清网格数量在小值和大值时的影响,我们放大了实现的运行时间接近的区域(见图5)。如图5所示,当网格数量较小时(小于10^5),NumPy具有最快的计算速度。这是因为当计算负载较低时,CuPy和Numba需要将数据从CPU传输到GPU,这不可避免地增加了执行时间。此外,Python中使用Numba和CuPy会增加一些开销,包括将CUDA内核分配和代码指令传输到GPU,这也需要一些时间。由于数据量较小,数据传输和函数调用(开销)占据了计算时间的很大比例,因此Numba和CuPy的运行时间比NumPy长。当网格数量进一步增加(大于10^5)时,Numba和CuPy比NumPy快得多。当网格数量大于10^6时,Numba的计算速度逐渐超过CuPy。因为Numba程序要求独立完成CUDA内核函数的编写,所以程序可以更好地适应编程环境,从而提高了510910810710510 568.5710410 497.031062.8510310 758.201042.24104.370Array 16(2022)1002610P. Xu等0图5. 随着空间网格数量的增加,三种实现的运行时间。左图和右图放大了空间网格数在[10^4, 10^5]和[10^6, 10^7]范围内的情况。0图6. 随着数据量增加,Numba和CuPy实现的传输时间比较。0程序的运行时间。在分析不同网格数下程序执行时间时,发现数据传输时间和数据类型会极大影响运行时间。因此,我们分析了不同网格数下的数据传输速度,结果如图6所示。从图6可以看出,随着网格数的增加,GPU和CPU之间的数据传输速度也在增加。当网格数超过10^6时,数据传输时间将显著增加。同时,我们发现Numba和CuPy在传输速度上没有明显差异。从图5和6可以看出,传输时间只占总执行时间的一小部分。然而,当数据量较小时,传输时间占比较大,这可能导致性能与CPU实现相比下降。这就是为什么在大型计算数据的情况下,并行计算可以显著提高,而串行计算不能。接下来,我们分析了Numba内核函数中数据类型的影响。我们按照参考文献[21]的方法,通过扩展PythonNumba内核中的装饰器来修改数据类型。结果如图7所示。当我们将内核函数中的输入数据限制为单精度变量时,程序的运行时间可以得到有效减少。将变量类型从float64改为float32可以减少程序运行时间20%。需要注意的是,Numba中变量类型的更改应通过装饰器进行(需要引用),否则Numba将默认接受所有变量为float64。例如,在算法2的第7行,Numba将假定数据类型为双精度浮点类型。0图7. Numba内核中不同数据类型的运行时间。0表2 不同时间步长和空间网格对总运行时间的影响。0时间步数 空间网格数0例如,在算法2的第7行,Numba将假定数据类型为双精度浮点类型。03.3. 算法运行时间分析0为了查看GPU的性能,我们提供了不同空间网格数和时间步长下的总执行时间。表2显示了当空间网格数和时间步长取不同值时程序的运行时间。从结果可以看出,随着数据量的增加,运行时间也会增加。当时间步长或空间步长增加十倍时,程序操作时间也会增加十倍。这是因为在每个时间迭代中,空间差分需要遍历整个定义域。增加时间步长相当于增加空间差分的数量,这将影响操作时间。6[10]0Array 16(2022)1002610P. Xu等04. 结论0在这项工作中,我们研究了微分方程的性能0GPU实现方法。结果表明,与CPU(通过NumPy)相比,GPU(通过Numba或CuPy)计算具有令人满意的准确性。随着空间网格数量的增加,Numba和CuPy的性能将远远高于NumPy,这说明了GPU的优势:在不改变准确性的情况下,操作速度大大提高。0GPU和CPU之间的数据传输时间随着0网格数量的增加。数据量较小时,传输时间只会影响程序的速度,建议使用GPU进行大数据计算。同时,我们还发现设置不同的线程和块的数量并不会对性能产生太大影响。数据类型可以在Numba内核函数中自动配置。通过设置单精度数据类型可以减少代码的运行时间。0Numba在编写内核函数方面比CuPy更灵活。0Numba在编写内核函数方面比CuPy更灵活。当算法更复杂时,我们建议开发人员使用Numba。可以通过矩阵运算表示的算法建议使用CuPy完成,其使用比Numba更容易。建议使用NumPy来实现小数据和低算法复杂性的算法。0CRediT作者贡献声明0Peng Xu: 监督, 方法论. Ming-Yan Sun: 可视化,0数据整理, 原始草稿撰写. 高银军: 验证, 调查. 杜泰娇: 监督. 胡金明:审查和编辑, 软件. 张俊杰: 监督, 概念化, 方法论.0声明竞争利益0作者声明没有已知的竞争财务利益或个人关系。0声明竞争利益0数据可用性0数据将根据要求提供。0致谢0该工作得到国家自然科学基金的支持0中国国家自然科学基金会 (NSFC) 资助号码12105227。0参考文献0[1] Pratx G, Xing L. 医学物理学中的GPU计算: 一项综述。Med Phys0[2] Ha ST, Park J, You D. 一种GPU加速的半隐式分数步骤方法0不可压缩Navier-Stokes方程的数值解。J Comput Phys 2018;352:246–64.0[3] Zhang J-L, Ma Z-H, Chen H-Q, Cao C. 一种GPU加速的隐式无网格0可压缩流的GPU加速方法。J Comput Phys 2018;360:39–56. http://dx.doi.org/10.1016/j.jcp.2018.01.037 .0[4] Stone JE, Hardy DJ, Ufimtsev IS, Schulten K. GPU加速的分子模拟0成熟的分子动力学建模。J Mol Graph Model 2010;29(2):116–25. http://dx.doi.org/10.1016/j.jmgm.2010.06.010 .0[5] Preis T, Virnau P, Paul W, Schneider JJ. GPU加速的蒙特卡罗模拟02D和3D Ising模型的数值模拟。J Comput Phys 2009;228(12):4468–77. http://dx.doi.org/10.1016/j.jcp.2009.03.018 .0[6] Zhang J-j, Fang R-h, Wang Q, Wang X-N. 极化的微观描述0在粒子散射中的应用。Phys Rev C 2019;100(6):064904.0pii/S0010465522000467 .0tions on GPU. 计算物理通讯2022;276:108328. http://dx.doi.org/10. 1016/j.cpc.2022.108328, URL https://www.sciencedirect.com/science/article/0[8] Preis T. 经济物理学和统计物理学中的GPU计算。Eur Phys J Spec0[9] 冯X, 钟D, 向C, 张Y. 太空天气建模中的GPU计算。0Pascuzzi VR, Romano PK. �������� : 高能物理实验中探测器模拟的GPU加速粒子传输。2022,http://dx.doi.org/ 10.2172/1863002 , URL https://www.osti.gov/biblio/1863002 .0[11] Mijić N, Davidović D. 在分布式GPU上进行批量矩阵运算0在理论物理中的应用。在:2022年第45届信息、通信和电子技术(MIPRO)国际大会。2022年,第293-9页。http://dx.doi.org/10.23919/MIPRO55190.2022.9803591。0[12] Wu H-Z, Zhang J-J, Pang L-G, Wang Q. ZMCintegral:用于多GPU的软件包0多GPU上的多维蒙特卡洛积分。Comput Phys Comm2020;248:106962。http://dx.doi.org/10.1016/j.cpc.2019.106962,URL https://www.sciencedirect.com/science/article/pii/S0010465519303121。0[13] Smith BD, Cooke LW, LeBlanc LJ. 非线性方程的GPU加速解决方案0模拟2D自旋BEC的薛定谔方程。Comput Phys Comm2022;275:108314。http://dx.doi.org/10.1016/j.cpc.2022.108314,URL https://www.sciencedirect.com/science/article/pii/S0010465522000327。0[14] Gong C, Bao W, Liu J, Tang G, Jiang Y. 一种高效的波前并行0结构化三维LU-SGS的并行算法。Comput & Fluids2016;134–135:23–30。http://dx.doi.org/10.1016/j.compfluid.2016.05.008,URLhttps://www.sciencedirect.com/science/article/pii/S0045793016301487。0[15] Horne WJ, Mahesh K. 一种硬件加速的非结构化超集方法0模拟湍流流体流动。J Comput Phys 2021;444:110574。http://dx.doi.org/10.1016/j.jcp.2021.110574,URLhttps://www.sciencedirect.com/science/article/pii/S0021999121004691。0[16] Rossinelli D, Bergdorf M, Cottet G-H, Koumoutsakos P. GPU加速的模拟0使用涡旋粒子方法模拟钝体流动。J Comput Phys2010;229(9):3316–33。http://dx.doi.org/10.1016/j.jcp.2010.01.004,URL https://www.sciencedirect.com/science/article/pii/S0021999110000197。0[17] Uneyama T. 用于快速流变学模拟的单链滑动弹簧模型0GPU上的纠缠聚合物。日本流变学会 2011;39(4):135–52。http://dx.doi.org/10.1678/rheology.39.135。0[18] Lam SK, Pitrou A, Seibert S. Numba:基于LLVM的Python JIT编译器0第二届LLVM编译器基础设施在HPC中的研讨会论文集。LLVM’15,美国纽约纽约:计算机协会;2015年,http://dx.doi.org/10.1145/2833157.2833162。0[19] Mantas JM, la Asunción MD, Castro MJ. GPU计算简介0用于数值模拟。在:SEMA SIMAI springer series。Springer International Publishing;2016年,第219-51页。0[20] Dogaru R, Dogaru I. 用于快速建模和仿真的Python框架0细胞非线性网络和其他有限差分时域系统。在:2021年第23届控制系统和计算机科学国际会议(CSCS)。IEEE; 2021年,http://dx.doi.org/10.1109/cscs52396.2021.00043。0[21] Oden L. 从比较C-CUDA和Python-Numba中学到的教训0GPU计算。在:2020年第28届欧洲微处理器国际会议(PDP)。2020年,第216-23页。http://dx.doi.org/10.1109/PDP50117.2020.00041。0[22] Zhang J-J, Sheng X-L, Pu S, Chen J-N, Peng G-L, Wang J-G, Wang Q. 奇-偶0Boltzmann-Maxwell方程中的重离子碰撞中的定向流。2022年,arXiv预印本arXiv:2201.06171。0[23] Zhang J-J, Wu H-Z, Pu S, Qin G-Y, Wang Q. 迈向对非线性方程的全面解决0GPU上的夸克胶子物质的相对论玻尔兹曼方程。Phys Rev D 2020;102(7):074011。0[24] van der Walt S, Colbert SC, Varoquaux G. NumPy数组:一种结构0用于高效数值计算。计算机科学与工程2011;13(2):22-30。http://dx.doi.org/10.1109/mcse.2011.37。0[25] Bonkile MP, Awasthi A, Lakshmi C, Mukundan V, Aswin VS. 一种系统的0Burgers方程的文献综述与最新进展。Pramana2018;90(6)。http://dx.doi.org/10.1007/s12043-018-1559-4。0[26] Nishino R, Loomis SHC. Cupy:一种适用于NVIDIA GPU的numpy兼容库0计算。在:第31届神经信息处理系统会议,第151卷。2017年,(7)。0[27] Li D, Lai H, Lin C. 两组分系统的介观模拟0用格子玻尔兹曼方法耦合正弦-戈登方程。熵2019;21(6):542。http://dx.doi.org/10.3390/e21060542。0[28] Stoyan G, Baran A. 范数,条件数。在:紧凑教科书中0数学。斯普林格国际出版社;2016年,第15-35页。
下载后可阅读完整内容,剩余1页未读,立即下载
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)