处理器性能测试基准平台与测试指标 SPEC CPU SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称。SPEC是由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的非营利性组织,这个组织的目标是建立、维护一套用于评估计算机系统的标准。 SPEC CPU是SPEC组织推出的CPU子系统基准测试程序。SPEC CPU的测试程序以源码形式发布,包含多种改进后的实际应用程序,可以运行在多种体系结构之上。SPEC CPU测试中,测试系统的处理器、内存子系统和使用到的编译器都会影响最终的测试性能,而I/O(磁盘)、网络、操作系统和图形子系统对于SPEC CPU 2006的影响非常的小。目前SPEC CPU的最新版本是SPEC CPU 2017,最早的是SPEC CPU 92。 SPEC CPU测试类型包括两种:整型运算和浮点运算。 SPEC CPU 性能测试包括两个部分:速度测试,吞吐量测试。 SPEC CPU把它们分别叫做speed模式和rate模式。其中speed是针对单任务的计算速度测试,rate针对系统运行多任务的吞吐量进行测试。 默认使用SPEED模式进行测试,如需使用RATE模式进行测试,需要在runspec的参数中,加上–rate。 每种模式有基值(Base)和峰值(Peak)两个性能衡量指标,base测试对编译有严格的规定,比如仅仅允许使用一种编译器、编译优化选项不能超过4个等等;而peak测试中可以针对不同的测试项目使用不同的编译器和不同的优化选项,从而让各项测试的测试结果达到最优。 1.1 SEPC CPU 2006 SPEC CPU 2006中包含两套测试套件:CINT2006和CFP2006。其中CINT2006共有12个测试项目,用于评测CPU整型运算的性能;CFP2006共有17个测试项目,用于评测CPU浮点运算的性能。这29个测试项目使用了C、C++、Fortran共三种语言。 CINT2006包括C编译程序、量子计算机仿真、下象棋程序等,CFP2006包括有限模型结构化网格法、分子动力学质点法、流体动力学稀疏线性代数法等。 1.1.1 测试内容 SPECCPU2006默认使用base进行测试,用户可以在runspec的参数中,加上—tune=base或者—tune=peak手动指定测试模式,如果两种模式都需要测试,则可以指定—tune=all。 整型测试12项名字编程语言用例含义400.perlbenchCPERL 编程语言负载由三个script组成:主负载是垃圾邮件检测软件SpamAssassin,一个是email到HTML的转换器MHonArc,最后一个是specdiff401.bzip2C压缩程序负载包括六个部分:两个小的JPEG图片; 一个程序;一个tar包起的几个源程序文件; 一个HTML文件;混合文件,包括压缩起来的高可压缩文件及不怎么可压缩的文件;测试分别使用了三个不同的压缩等级进行压缩和解压缩403.gccCC 语言编译器对9组C代码进行了编译429.mcfC组合优化MCF是一个用于大型公共交通中的单站车辆调度的程序429.mcf运行于32/64位模型时分别需要约860/1700MB的内存445.gobmkC人工智能 GO 算法围棋456.hmmerC基因序列搜索程序使用HMMS(Hidden Markov Models,隐马尔科夫模型) 基因识别方法进行基因序列搜索458.sjengC人工智能象棋算法国际象棋462.libquantumC物理学量子计算libquantum是模拟量子计算机的库文件,用来进行量子计算机应用的研究464.h264refC视频压缩使用两种配置对两个YUV格式源文件进行H.264编码471.omnetppC++离散事件模拟包括约8000台计算机和900个交换机/集线器,以及混合了各种从10Mb到1000Mb速率的大型CSMA/CD协议以太网络模拟473.astarC++图论寻找路径算法实现了2D寻路算法A*的三种不同版本483.xalancbmkC++XML 解析XML文档/XSL表到HTML文档的转换 浮点型测试17项名字编程语言用例含义410.bwavesFortran流体动力学对三维瞬跨音速粘性流中冲击波的模拟计算。416.gamessFortran量子化学三种SCF自洽场计算:胞嘧啶分子;水和Cu2+离子;三唑离子。433.milcC物理学:量子色动力学四维SU(3)格点规范理论的模拟,用来研究QCD量子色动力学、夸克及胶子。434.zeusmpFortran物理:流体动力学用来计算理想、非相对论条件下的流体力学和磁流体力学,434.zeusmp模拟计算了一个统一磁场中的3D冲击波。435.gromacsC/Fortran生物信息学;分子动力学GROMACS是一个分子力学计算套件,然而也可以用于非生物系统,435.gromacs模拟了在一个水和离子溶液中的蛋白质溶菌酶结构在各种实验手段如核磁共振的X光照射下的变化。436.cactusADMC/Fortran物理学广义相对论对时空曲率由内部物质决定的爱因斯坦演化方程进行求解,爱因斯坦演化方程由10个标准ADM 3+1分解的二阶非线性偏微分方程组成。437.leslie3dFortran流体动力学LESlie3d是用来计算湍流的计算流体力学程序,437.leslie3d计算了一个如燃油注入燃烧室的时间分层混合流体。444.namdC++生物学分子运动NAMD是一个大型生物分子系统并行计算程序,444.namd模拟了了92224个原子组成的A-I载脂蛋白。447.dealIIC++有限素分析deal.II是定位于自适应有限及误差估计的C++库,447.dealII对非常系数的亥姆霍兹方程进行求解,它使用了基于二加权误差估计生成最佳网格的自适应方法,该方程在3维得解。450.soplexC++线性规划优化SoPlex使用单纯形算法解线性方程。453.povrayC++图像射线跟踪POV-Ray是一个光线追踪渲染软件,453.povray渲染一幅1280×1024的反锯齿国际象棋棋盘图像。454.calculixC/Fortran机械结构CalculiX是一个用于线性及非线性三位结构力学的有限分析软件,454.calculix计算了一个高速旋转的压缩盘片在离心力的作用下的应力和变形情况。459.GemsFDTDFortran计算电磁学使用FDTD(有限差分时域)方法求解三维时域中的麦克斯韦方程,计算了一个理想导体的雷达散射截面。465.tontoFortran量子化学Tonto是一个面向对象的量子化学程序包,465.tonto计算面向量子晶体学,它基于一个符合X光衍射实验数据的、约束的分子Hartree-Fock波函数。470.lbmC流体动力学使用LBM(格子波尔兹曼方法)模拟非压缩流体,它模拟了两种情况:类似活塞推动的剪切驱动流体和管道流体,测试包含了3000个步骤。481.wrfC/Fortran天气预报基于WRF(Weather Research and Forecastin)模型,对NCAR的数据进行了计算,数据包括了UTC 2001.06.11到UTC 2001.06.12以三小时为间隔的数据。482.sphinx3C语音识别语音识别 1.1.2 测试数据 报告地址:https://www.spec.org/cpu2006/results/res2011q3/cpu2006-20110620-17230.html
参数解释: Seconds:对于speed测试,表示基准测试运行的时间,单位s; 对于rate测试,表示吞吐量运行时第一个副本开始到最后一个副本结束之间的时间量。 Ratio:基准运行时间与参考平台运行时间的比率,即被测计算机的执行时间除一个参考处理器的执行时间,目的是将被测计算机的执行时间标准化,Ratio值越大,表示性能越强。 Copies:吞吐量测试时,同时运行的基准测试副本的数量。 Base与peak的计算:测试三次,选择每组测试的中位数,再计算每项测试Ratio的几何平均值。 1.2 SEPC CPU 2017 1.2.1 测试内容 整型测试项SPECrate@2017IntSPECspeed@2017Int编程语言用例含义500.perlbench_r600.perlbench_sCPERL 编程语言502.gcc_r602.gcc_sCGNU C编译器505.mcf_r605.mcf_sC路线规划520.omnetpp_r620.omnetpp_sC++离散事件模拟-计算机网络523.xalancbmk_r623.xalancbmk_sC++通过XSLT进行XML到HTML转换525.x264_r625.x264_sC视频压缩531.deepsjeng_r631.deepsjeng_sC++人工智能:-beta树搜索(国际象棋)541.leela_r641.leela_sC++人工智能:Monte Carlos树搜索(GO)548.exchange2_r648.exchange2_sFortran人工智能:递归式解决方案发生器(数独)557.xz_r657.xz_sC一般数据压缩 浮点测试项SPECrate@2017Floating PointSPECspeed@2017Floating Point编程语言用例含义503.bwaves_r603.bwaves_sC++, C, Fortran爆炸建模507.cactuBSSN_r607.cactuBSSN_sC++物理:相对论508.namd_rC++分子动力学510.parest_rC++生物医学成像:有限素的光学断层扫描511.povray_rC++, C光线跟踪519.lbm_r619.lbm_sC流体力学521.wrf_r621.wrf_sFortran, C天气预报526.blender_rC++, C3D渲染和动画527.cam4_r627.cam4_sFortran, C大气建模628.pop2_sFortran, C大规模海洋建模(气候水平)538.imagick_r638.imagick_rC图像操作544.nab_r644.nab_rC分子动力学549.fotonik3d_r649.fotonik3d_rFortran计算电磁学554.roms_r654.roms_rFortran区域海洋建模 1.2.2 测试数据 报告地址:https://www.spec.org/cpu2017/results/res2017q4/cpu2017–01439.pdf
参数含义同1.1.2。 1.3 优化内容 以性能为主,不考虑功耗的问题,以结果发布为目的。服务器主板设计(关于CPU\MEM工作频率是否达到理论值)turbostat;CPU、内存配置(内存配置是否性能最佳?)mlc, lmbench, stream;BIOS性能参数(HT, Trub, prefetcher, Intel DNF);环境温度及散热(低温实验室);操作系统设置;编译器(gcc/icc);测试脚本。 2. Geekbench Geekbench是一款跨平台的处理基准测试程序,评分系统可分为单核与多核性能,以及模拟真实使用场景的工作负载能力。有geekbench2、geekbench3、geekbench4以及最新geekbench5,geekbench4以i7-6600U的结果4000分为基准,geekbench5以i3-8100U的结果1000分为基准,分数越高,性能越好。 2.1 测试内容 Geekbench5通过执行任务和应用程序的测试来评估硬件性能,分数越高性能越好,分数加倍表示性能加倍。 2.2.1 CPU Workloads Geekbench5将CPU workload分为两个部分:单核workload和多核workload。 通过不同的测试或负载评估CPU性能,工作负载分为三个部分: Crypto:加密工作负载通过执行大量使用加密指令的任务衡量计算机的加密指令性能。 Integer:整型工作负载通过执行大量使用整型指令的处理器密集型任务来衡量计算机的整型指令性能。所有的软件都使用了大量的整数指令,因此整型分数越高表示整体性能越好。 Floating Point:浮点型工作负载通过执行大量使用浮点运算的各种处理器密集型任务来评估浮点计算性能。浮点计算性能在视频游戏、数字内容创建和高性能计算应用程序中尤为重要。 CPU benchmark分数用于评估和优化CPU和内存性能,使用的workload包括数据压缩、图像处理、机器学习和物理模拟。对于各种应用程序(包括web浏览器、图像编辑器和开发人员工具)来说,这些workload的性能或者很重要。 Geekbench5提供两个综合分数:单核与多核。这些分数是通过分段分数的加权平均数计算的。分段分数是使用该分段中包含的workload分数的几何平均值计算的。
Crytography workloads AES-XTS AES(Advanced Encryption Standand)定义了对称块加密算法。AES加密广泛的应用于保护通信通道(e.g., HTTPS)和保护信息(e.g., 存储加密,设备加密等)。 Geekbench5中的AES-XTS workload使用以256为密钥运行的XTS模式的AES加密128MB缓冲区。缓冲区被分为4k blocks。对于每个block,workload使用block number的SHA-1哈希派生出一个XTS计数器。然后使用AES-XTS以16字节块的形式处理这个block,其中涉及一个AES加密、两个异或操作和一个GF(2128)乘法。 Integer workloads Text compression 使用LZMA压缩和解压2399kb的HTML ebook。LZMA是一种无损压缩算法,使用字典压缩方案(字典大小为2048kb),具有高压缩比。 Image compression 使用JPEG有损图像压缩算法压缩和解压缩一张图片,使用PNG无损图像压缩算法压缩和解压缩一个CSS文件。 Workload使用libjpeg-turbo实现JPEG算法,使用libpng实现PNG算法。 Navigation 使用Dijkstra算法计算一系列目的地之间的路径。 HTML5 对来自服务器端呈现(SSR)和客户端呈现(CSR)的HTML5文档的DOM创建进行建模。对于SSR文档,HTML5 workload使用Gumbo HTML5解析器解析HTML文件创建DOM。对于CSR文档,HTML5 workload使用Gumbo HTML5解析器解析HTML文件创建DOM,然后使用Duktape JavaScript引擎扩展DOM SQLite 对内存中的数据执行SQL查询。Workload被设计为使用各种SQL特性和查询关键字来强化底层引擎。此workload评估设备使用内存中的SQL数据库能够维持的事务速率。 PDF Rendering 解析并呈现Crater Lake National Park 200dpi的地图。Workload使用PDFium库。 Text Rendering 解析markdown文档,并将其作为富文本呈现为位图。文本呈现workload使用以下库作为工作负载的一部分: Github Flavored Markdown FreeType ICU(International Components for Unicode) Text Rendering workload 输入文件有1721个单词长,并声称一个位图,尺寸为1275×9878像素。 Clang 编译一个1094行C源文件(其中729行为代码)。Workload使用AArch64作为代码生成的目标框架。 Camera 模拟camera应用程序或照片共享社交网络应用程序可能执行的一些操作。Camera workload模拟对图像应用过滤器并准备上传。 Floating Point workloads N-Body Physics 使用Barnes-Hut方法计算三维重力模拟。要在N个物体的场中计算作用在特定物体 x 上的精确引力,需要进行N−1次力计算。Barnes-Hut 方法通过将远离x的任何紧密实体簇近似为单个实体来减少力计算的数量。它通过将空间划分为八分圆(八个相同大小的立方体)并递归地将每个八分圆细分为八分圆,形成一棵树,直到每个叶子八分圆恰好包含一个实体,从而有效地做到了这一点。 这种空间的递归细分需要浮点运算和非连续内存访问。 N-Body Physics workload实在16384个天体上进行的,分布在一个扁平的星系中。 Rigid Body Physics Rigid Body Physics workload为刚体计算一个二维物理模拟,包括碰撞和摩擦。Workload使用Lua语言来初始化和管理物理模拟,使用Box2D物理库执行实际的物理计算。 Gaussian Blur 高斯模糊workload使用高斯空间滤波器模糊一个2400万像素的图像。固定sigma为0.3f。这个sigma转换成直径为25×25像素的过滤器。 Face Detection 人脸检测workload使用维奥拉和琼斯在2001年提出的基于简单特征的增强级联快速目标检测算法。该算法可以为每一张脸生成多个框。这些框被减少到一个框使用非最大抑制。 Horizon Detection 地平线检测工作在图像中搜索地平线。如果找到水平线,则工作负载旋转图像使水平线水平。Workload首先对图像应用Canny边缘检测器来减少细节,然后使用Hough变换检测图像中的线条,然后选取得分最高的线条作为地平线。工作负载旋转图像,因此地平线在图像中是水平的。 Image Inpainting Image Inpainting workload 接受带有不需要区域的输入图像(通过掩模图像表示),并使用一个Inpainting方案使用来自不需要区域之外的数据重建该区域。workload操作100万像素的图像。 HDR HDR workload 取四个标准动态范围(SDR)图像,并生成一个高动态范围(HDR)图像。每个输入图像的大小为300万像素。HDR工作负载使用Reinhard和Devlin的论文“受光感受器生理学启发的动态范围缩小”中描述的算法,并产生比Geekbench 4中的色调映射算法更好的图像。 Ray Tracing 光线追踪是一种绘制技术。光线追踪是通过追踪光穿过成像平面的路径,并模拟光与虚拟物体相遇的效果来生成图像。这种方法能够生成高质量的图像,但这些图像的计算成本很高。 光线跟踪workload使用k-d树(一种空间分区数据结构)来加速射线相交计算。在一个有3608个纹理三角形的场景中进行。渲染后的图像是768pixels乘768pixels。 Structure from Motion 增强现实 (AR) 系统将计算机生成的图形添加到现实世界的场景中。系统必须了解现实世界场景的几何形状,以便正确集成计算机生成的图形。计算几何的一种方法是通过运动结构 (SfM) 算法。 来自Motion workload的结构取两幅相同场景的2D图像,并构建两幅图像中可见点的3D坐标的估计。 Speech Recognition Speech Recognition 工作负载使用 PocketSphinx 执行对任意英语语音的识别,PocketSphinx 是一个使用 HMM(隐马尔可夫模型)的广泛使用的库。随着 Siri、Google Assistant 和 Cortana 的推出,使用语音与智能手机进行交互变得越来越流行,这种workload测试了设备处理声音和识别正在说的单词的速度。 Machine Learning 机器学习工作负载是执行卷积神经网络以执行图像分类任务的推理工作负载。工作负载使用MobileNet v1,alpha为1.0,输入图像大小为224×224像素。该模型是在ImageNet数据集上训练的。 Workload Characteristics Geekbench 5的CPU工作负载可以运行广泛的设备子系统,并且可以通过以下特征部分地表现出来。 Instructions Per Cycle 每周期指令(IPC)是衡量处理器有效指令吞吐量的指标,它与更高的性能相关。它的度量方法是为一个workload执行的指令数除以该工作负载使用的周期数 Branch Miss Rate 分支未命中率或分支错误预测率衡量系统错误预测代码分支的频率,这与较低的性能相关。 它以占总分支的百分比来衡量。 每当代码路径分支为多个情况时,执行该代码的系统会尝试预测哪种情况为真,以便预取数据或预执行指令。 在对有序数据进行操作时,系统可以更频繁地正确预测(或命中)分支,从而提高性能。 Working Set Size 工作集大小是程序使用的内存量的度量,无论是读取还是写入。 它以字节表示,但通过测量以页面粒度使用的内存进行操作。 在具有小缓存的系统上运行具有大工作集大小的程序可能会遇到更多缓存未命中,即程序无法在缓存中找到所需的数据,而必须查询更大的缓存或主内存。 缓存未命中会对性能产生负面影响。 Cache Hit and Miss Rates 缓存命中率和未命中率衡量程序在尝试读取或写入内存时在系统缓存中查找数据的频率。 缓存未命中与较低的性能相关。 缓存的命中率或未命中率以占对该缓存的总访问次数的百分比来衡量。 当程序尝试访问数据时,它首先检查该数据是否已复制到较低级别的缓存(例如 L1d 缓存)。 如果是这样,它可以在那里快速对其进行操作。 如果它没有缓存在那里,程序必须检查更高级别的缓存或主内存,这会对性能产生负面影响。 作为缓存测量的示例,如果工作负载无法在 L1d 缓存或 L2 缓存中找到数据,但在 L3 缓存中找到了数据,则将其记录为 L1d 未命中、L2 未命中和 L3 命中。 如果数据被定期访问,或者如果系统预测数据将很快被访问,则更有可能被缓存。 大多数系统都有 L1 指令、L1 数据、L2 和 L3 缓存。 L1 Data、L2、L3缓存都是为了提高取数据的速度,而且越来越大,访问速度越来越慢。 如果程序错过了 L3 缓存,而没有 L4 缓存,则它访问的主内存特别大且访问速度慢。 L1指令缓存是一个指令缓存,用于提高取指令的速度。 Workload Characteristics Data 下表报告了单核和多核CPU工作负载的以下特征:RuntimesInstructions Per ClockBranch Miss ClockWorking Set SizeL1 Instruction Cache Miss RateL1 Data Cache Miss RateL2 Cache Miss RateL3 Cache Miss Rate 数据是在运行Ubuntu 18.04的英特尔酷睿i5-6400上收集的。
2.2.2 CPU Compute Workloads 计算Benchmark分数用于使用包括图像处理、计算摄影、计算机视觉和机器学习在内的workload来评估和优化 GPU 计算性能。 这些workload中的性能对于包括相机、图像编辑器和实时渲染器在内的各种应用程序都很重要。 Geekbench 5按照测试内容运行workload,默认情况下,每个workload运行20次。Geekbench 5的总分有各个Compute workload的得分求几何平均值得到。 每个Compute workload对每个受支持的Compute API都可以实现,API之间的分数也可以比较,但是有由于Compute API的性质,性能差异可能不仅受底层硬件的影响,GPU驱动程序也可能对性能产生巨大影响。 Compute Workload Sobel Sobel算子用于图像处理和计算机视觉中寻找图像边缘。 Sobel workload将RGB图像转换为灰度图像,并为灰度图像计算sobel算子。该算子使用两个整数卷积(一个水平边缘,一个垂直边缘)来计算最终图像 Canny 与Sobel算子一样,Canny也是一种边缘检测器。Canny通过多阶算法来寻找图像中的边缘。 Stereo Matching 立体匹配workload根据取自同一场景的一对图像构建深度图。使用块匹配算法来找到每个像素的视差并生成地图。该算法将一幅图像中的每个像素块与第二幅图像中最接近的像素块进行匹配,其中绝对差异和(SAD)被用作两个像素块彼此之间的距离的度量。 Histogram Equalization 直方图均衡化是一种利用图像的直方图进行对比度调整的图像处理方法。 直方图均衡化workload在 2576 × 3872 的图像上执行此调整。 Gaussian Blur 高斯模糊workload使用高斯空间滤波器模糊图像。高斯模糊广泛应用于软件中——在操作系统中提供界面效果,在图像编辑软件中减少图像的细节和噪声。高斯模糊也被用于计算机视觉应用,以增强不同尺度的图像结构。 高斯模糊工作负载使用高斯空间滤波器模糊图像。当工作负载的实现支持一个任意的sigma时,workload使用一个固定的3.0f。这个sigma转换成直径为25 × 25pixel的过滤器 Depth of Field 景深workload计算镜头模糊景深图像,给定两个图像:深度图像和彩色图像。它通过对彩色图像的每个像素应用模糊来实现这一点,该模糊与像素与焦点的距离(由深度图像确定)成正比。 Face Detection 人脸检测是一种在数字图像中识别人脸的计算机视觉技术。人脸检测的一个应用是在摄影领域,相机应用使用人脸检测来实现自动对焦。 人脸检测workload使用了维奥拉和琼斯在2001年的《使用简单特征的增强级联快速目标检测》中提出的算法。该算法可以为每一张脸生成多个box。这些box被减少到一个box使用非最大抑制。 Horizon Detection 地平线检测工作在图像中搜索地平线。如果找到水平线,则工作负载旋转图像使水平线水平。workload首先对图像使用Canny边缘检测器来减少细节,然后使用Hough变换检测图像中的线条,最后选取得分最高的线条作为地平线。 Feature Matching Feature Matchingworkload使用ORB算法在两个图像之间找到关键点(或特性)的匹配。其他算法(如来自运动的结构)使用ORB来在两个图像中找到匹配的关键点,然后使用这些关键点生成这些点的3D地图。 Particle Physics 粒子物理模拟用于许多应用,包括模拟游戏中的流体和烟雾。粒子物理workload实现了一个模拟,其中粒子通过弹性碰撞相互作用和他们的环境。其他粒子-粒子力被忽略。粒子物理工作负载在其模拟中使用了4,096个粒子。 SFFT FFT(快速傅里叶变换)将输入信号分解为三角多项式的一组基的线性组合。FFT是许多信号处理应用中的核心算法。FFT workload在32MB的输入缓冲区上执行一个FFT,以1KB的块操作。这类似于在音频处理应用程序中使用FFT进行频率分析。 3. CoreMark CoreMark是一个综合基准,用于测量嵌入式系统中使用的中央处理器(CPU)的性能。它是在2009由eembc的shay gal-on开发的,旨在成为一个行业标准,取代过时的dehrystone基准。代码用C编写,包含以下算法:列表处理(增删改查和排序)、矩阵操作(公共矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC。 CoreMark的测试方法是,在某个配置参数组合下单位时间内跑了多少次CoreMark程序,其指标单位为CoreMark/MHz。CoreMark数值越大,性能越强。 3.1 测试内容 3.1.1 链接列表 函数core_bench_listBenchmark functioncmp_complex比较列表单格中的数据项cmp_idx比价列表单格中的idx项目,并重新生成数据core_list_init用数据初始化列表core_list_insert将一个项目插入列表core_list_remove从列表中删除一个项目core_list_undo_remove撤销删除操作core_list_find在列表中找到一个项目core_list_reverse反转一个列表core_list_mergsort在不递归的情况下对列表进行排序 描述 此Benchmark所做的项目:将一个项目插入列表;从列表中删除一个项目;撤销删除操作;在列表中找到一个项目;反转一个列表;在不递归的情况下对列表进行排序。 3.1.2 矩阵操作基准 函数core_bench_matrixBenchmark functionmatrix_test执行矩阵操纵matrix_sum计算一个依赖于矩阵中素值的函数matrix_mul_const用一个常数乘以一个矩阵matrix_add_const为矩阵的所有素添加一个常量值matrix_mul_vect用一个矢量乘一个矩阵matrix_mul_matrix矩阵乘矩阵matrix_mul_matrix_bitextract矩阵乘矩阵,并从结果中提取一些位 描述 Matrix manipulation benchmark构成了许多更复杂算法的基础。紧密的内部循环是许多优化(编译器以及基于硬件)的重点。 此Benchmark所做的项目:用一个常数乘以一个矩阵;为矩阵的所有素添加一个常量值;用一个矢量乘一个矩阵;用矩阵乘以一个矩阵;将矩阵乘以矩阵;并从结果中提取一些bits。 3.1.3 状态机基准 函数core_bench_stateBenchmark functioncore_init_state初始化状态机的输入数据core_state_transition实际的状态机 CoreMark中使用状态机的主要目的是为了测试switch/if的运转情况
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/49158.html