CN104778113B - 一种矫正功率传感器数据的方法 - Google Patents
一种矫正功率传感器数据的方法 Download PDFInfo
- Publication number
- CN104778113B CN104778113B CN201510166270.4A CN201510166270A CN104778113B CN 104778113 B CN104778113 B CN 104778113B CN 201510166270 A CN201510166270 A CN 201510166270A CN 104778113 B CN104778113 B CN 104778113B
- Authority
- CN
- China
- Prior art keywords
- mrow
- msub
- data
- power
- time
- 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.)
- Expired - Fee Related
Links
Classifications
-
- 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
Abstract
本发明公布了一种矫正功率传感器数据的方法。首先,根据软件运行时间长短来分别采用不同方法进行数据矫正。运行时间短的程序传感器采集到的功耗数据是趋向性数据,需要进行拟合来进行矫正。运行时间长的程序,传感器采集的数据是逐渐逼近的真实数据,采用基于误差方向的逼近函数进行矫正。通过在K20系列的GPU平台上进行实验,表明该方法适用于解决传感器测量能耗存在的问题。通过使用本方法较准确地获得软件在设备中运行的能耗,为以后的程序能耗优化奠定了基础。
Description
所属技术领域
本发明涉及嵌入式软件功耗测量技术领域,尤其是涉及一种矫正功率传感器数据的方法。
背景技术
在提倡“节能减排”的当今世界,用电设备尤其是占比重较大的科学计算设备的能耗问题成为一个不可忽视的问题,越来越受到软硬件开发商、科研机构和政府的重视。
在工业界有一句名言“如果你不能度量它,那么你就不能改进它”,这句话蕴含了度量是后续工作的基础。在能耗的度量上主要有直接的方式和间接的方式。间接的方式是利用能耗模型、利用与硬件性能计数器或硬件事件和能耗之间的关联模型进行估测软件运行的能耗。间接方式方便了用户获得功率或能耗数据,但这些数据通常误差较大且在硬件环境改变的情况下模型中的参数就必须重新进行训练。软件能耗测量最直接的方式是使用功率测量仪器,但它在能耗测量上存在和设备连接困难的缺点。目前,利用内置传感器进行功率采集测量已经成为一种趋势,如NVIDIA的Tesla系列显卡。内置传感器测量方式带来了很大的方便,同时也引起了诸如功率迟滞、程序能耗受其启动时间影响等问题。
2010年,Hong S等人基于部件访问率提出了一种功率模型,用来估测部件的功率和整个程序的功率消耗。2012年,刘啸滨等人通过估算指令能耗提出了入式软件能耗计算方法和操作系统内核能耗估算模型。2013年,Song S等人基于神经网络的训练结果提出了GPU的功耗模型。2014年,Burtscher M通过引入一个经验参数进行解决,但它不具有通用性。为此本发明提出了一种无需经验参数的基于逼近函数的数据采集矫正方法,通过实验验证该方法能够很好地解决此类问题。
发明内容
本发明旨在提出一种矫正功率传感器数据的方法。
本发明解决其技术难题所采用技术方案的步骤如下:
1)通过采集一定数量软件的功耗数据,得到功率传感器数据趋于真实数据时的时间,该时间用tp表示;
2)软件刚开始运行时,由于软件运行时间小于tp,测得的数据是趋向性数据,所以利用采集到的数据拟合成函数然后再求得来表示真实功率数据;因此运行时间小于tp时的程序的功率数据使用如下公式进行矫正:
3)在软件运行时间大于tp以后,传感器采集的数据逐渐逼近真实数据,此时采用以误差方向为判断标准的逼近函数进行数据矫正;因此运行时间大于tp时的程序的功率数据使用如下公式进行矫正:
其中,在步骤3)的公式中,用来表示当前误差方向,tp是功率传感器数据趋于真实数据时的时间,表示真实功率数据,Preal(ti)表示ti时刻矫正后的功率数据,Pmeas(t)表示传感器在t时刻所采集的功率数据,表示根据传感器测得的数据拟合形成的函数,Δt为下次有效采样间隔时间,表示在当前误差向K的情况下传感器所采集到的功率数据,它的取值为未矫正过的数据,ti的取值为程序开始时间tstart和结束时间tend之间的值;
4)获得程序运行时的真实数据之后,将上述矫正后的数据在程序运行的时间内进行积分得到程序的真实能耗数据:
其中,E表示软件能耗,三元组下标(tstart,tend,Sw)分别表示程序开始时间、程序结束时间、运行的软件,上标Actual表示设备实际消耗能耗情况。
本发明与背景技术相比,具有的有益效果是:
5)精确性:本发明使用一种矫正功率传感器数据的方法,相比精确性较高的Burtscher M通过引入一个经验参数进行解决得出的结果具有很大的相似性,最大误差不超过1%;
6)通用性:本发明提出了一种无需经验参数的基于逼近函数的数据采集矫正方法,对于在不同的硬件环境情况下都适用,解决了传感器测量程序能耗时所存在的功率迟滞、程序能耗受其启动时间影响的问题。
附图说明
图1 N=700000采集功率曲线图和矫正后的功率曲线图
图2启动间隔时间为1.1s N=350000的两个相同程序的功率曲线和矫正后的功率曲线图
图3 N=700000在K20m(a)上的采集功率曲线图和矫正后的功率曲线图
图4 N=700000在K20x(b)上的采集功率曲线图和矫正后的功率曲线图
图5 N=22000000采集功率曲线图和矫正后的功率曲线图
具体实施方式
下面结合附图和实例对本发明作进一步的说明。
1)实验环境及实验程序描述
本发明选取K20系列(K20c、K20m和K20X)GPU为实验平台。实验平台所使用的CUDA开发环境是VS2010,编译环境是NVCC5.5。在这个环境上,我们使用程序通过NVML接口查询GPU的功率数据,并且查询出的数据都带有时间标签。
实验程序使用的两种不同方法实现的模拟重力感应引起的多个恒星运动程序。第一种方法实现的程序执行精确的双向力计算,这种算法在规模为N的情况下复杂度为O(n2)。我们将这种方法简称为NBody。第二种是使用了Barnes-Hut方法进行近似计算作用力的实现程序,方法的思想是把N个恒星周围的体积层次划分成有次序小正方体直到最里面的每个小正方体只有一个星体。结果被记录在一个非平衡八叉树的层次结构中。这种层次结构使方法的复杂性降为O(nlogn),我们将这种方法简称为BHut。
2)单内核程序实验
图1是使用NBody方法在N=700000时的功率曲线和使用本发明提出的方法得到的功率数据。图中曲线部分表示传感器采样得到的功率数据,红色部分表示使用本发明矫正方法中的公式(2)得到GPU功率曲线。图中t1、t2、t3分别表示程序开始时间、程序结束时间、常数能耗消耗开始时间。
通过观察图中矫正后的功率数据可以看出,矫正后的数据能够快速逼近真实功耗数据,并且当程序运行结束时立即到达尾迹能耗常数部分的数值,矫正后的数据满足软件能耗产生的实质并能够反映GPU运行时的真实功率。在程序执行的t1和t2之间,矫正后的数据能够和采样得到的稳定数据重合,间接验证了本方法的正确性。对于K20c系列GPU,活动空闲功率为54.2W左右,因此在使用本方法后将程序运行结束时的能耗到常数能耗之间的功率数据置为54.2W即为软件结束后的真实功率。软件的实际能耗利用公式(3)在t1和t2时间段积分即可得到。
由图1可以看出使用本文提出的方法可以消除由传感器本身问题所带来的迟滞问题;而它所带来的一个问题是程序能耗受其启动时间影响。图2为使用NBody方法在N=350000启动间隔时间为1.1s的两个相同程序的功率曲线和使用公式(1)矫正后的功率数据。图中t1、t3分别表示第一个和第二个程序开始时间,t2、t4分别为第一个和第二个程序结束时间,t5是常数能耗开始时间。从图中可以看到1:未矫正前两个相同的程序能耗明显不相同;2:使用本方法矫正后的曲线在两个程序运行期间是相同的,在程序运行结束时都处于活动空闲状态。相同的实验在N=350000间隔0.4s的情况下得到的矫正曲线和间隔1.1s得到的矫正曲线情况相同。因此使用本方法能够很好地解决程序能耗受启动时间影响的问题且得到的功率数据与何时运行程序无关,这个特性使得功率传感器测量程序能耗时无需等待传感器数据达到空闲功率后启动下一个程序的功率测量。
为了确保所提出的方法具有通用性,本发明使用K20m,K20x和不同驱动版本下的实验情况。图3、图4分别为N=700000时K20m,K20x传感器采集功率曲线图和使用公式(2)矫正后的功率曲线图。由图中的曲线可以看出K20m、K20x和K20c对于同一程序而言具有几乎相同的功率曲线,所不同的是K20m的功率比K20c的功率要高出10W左右。图4中的曲线显示了K20x中的功率传感器采集的数据和K20c、K20m采集的数据曲线明显不同,K20x中的传感器尽最大努力去得到GPU的真实功率,这种现象也从侧面验证了本发明所提出的方法的正确性。在不同驱动版本下的功率数据曲线与矫正后的曲线和图3表现现象相同,在此不再赘述。由图3矫正后的数据可以看出使用本发明提出的方法可以很好地解决由传感器测量功耗时所产生的问题。
由于迟滞现象在K20m和K20x上被解决,因此程序能耗受启动时间影响的问题也就不存在了。通过实验结果也验证了利用本发明所提出的方法解决程序能耗受启动时间影响的问题。3)多内核程序实验
图5是使用BHut方法在规模N=22000000所得到的功率曲线和矫正后的功率曲线图。通过本发明提出的方法得到的功率曲线和NBody曲线有别,主要表现在t1和t2阶段、t2和t3阶段、t4和t5阶段。t1和t2阶段与t2和t3阶段主要是BHut方法建立的数据结构和对数据进行处理等工作,处理这些工作的内核程序非均衡地利用GPU中SM。这些工作使得功率数据不同于t3和t4阶段的作用力计算。由于t1和t2阶段与t2和t3阶段运行时间小于tp,因此使用公式(1)进行矫正。在t3和t4阶段内核函数运行时间大于tp,因此使用公式(2)进行矫正。在t4和t5阶段一些SM不再参与计算,因此GPU的功率出现下降,利用逼近函数很好地得到了真实功率数据。通过分析程序和观察图中的曲线,可以看出本发明提出的方法能够很好地跟踪GPU硬件功率的变化情况而不仅仅给出一个恒定的值。
4)结果比较
Burtscher M等人也提出了一种解决此类问题的方法,表1展示了在利用传感器计算程序能耗时两种方法在上述实验环境下的比较结果。
表1
由表中可以看出:(1)本文的方法与Burtscher M的方法得出的结果具有很大的相似性,最大误差不超过1%,表明本方法能够很好地解决此类问题。(2)Burtscher M的方法依赖于经验的参数,而本方法无需使用参数也能得到较好的效果,说明了本方法具有很好的通用性。
Claims (1)
1.一种矫正功率传感器数据的方法,其特征在于该方法的步骤如下:
1)通过采集一定数量软件的功耗数据,得到功率传感器数据趋于真实数据时的时间,该时间用tp表示;
2)软件刚开始运行时,由于软件运行时间小于tp,测得的数据是趋向性数据,所以利用采集到的数据拟合成函数然后再求得来表示真实功率数据;因此运行时间小于tp时的程序的功率数据使用如下公式进行矫正:
<mrow>
<msub>
<mi>P</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mi>A</mi>
<mi>v</mi>
<mi>g</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>f</mi>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mi>e</mi>
<mi>a</mi>
<mi>s</mi>
</mrow>
</msub>
</msub>
<mo>(</mo>
<mrow>
<msub>
<mi>t</mi>
<mrow>
<mi>s</mi>
<mi>t</mi>
<mi>a</mi>
<mi>r</mi>
<mi>t</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>t</mi>
<mi>P</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>+</mo>
<mn>...</mn>
<msub>
<mi>f</mi>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mi>e</mi>
<mi>a</mi>
<mi>s</mi>
</mrow>
</msub>
</msub>
<mo>(</mo>
<mrow>
<msub>
<mi>t</mi>
<mi>i</mi>
</msub>
<mo>+</mo>
<msub>
<mi>t</mi>
<mi>p</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>+</mo>
<mn>...</mn>
<msub>
<mi>f</mi>
<msub>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mi>e</mi>
<mi>a</mi>
<mi>s</mi>
</mrow>
</msub>
</msub>
<mo>(</mo>
<mrow>
<msub>
<mi>t</mi>
<mrow>
<mi>e</mi>
<mi>n</mi>
<mi>d</mi>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mi>t</mi>
<mi>P</mi>
</msub>
</mrow>
<mo>)</mo>
<mo>)</mo>
</mrow>
</mrow>
3)在软件运行时间大于tp以后,传感器采集的数据逐渐逼近真实数据,此时采用以误差方向为判断标准的逼近函数进行数据矫正;因此运行时间大于tp时的程序的功率数据使用如下公式进行矫正:
<mrow>
<msub>
<mi>P</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
<mo>=</mo>
<mfenced open = "{" close = "">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>A</mi>
<mi>v</mi>
<mi>g</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mi>e</mi>
<mi>a</mi>
<mi>s</mi>
</mrow>
<mi>K</mi>
</msubsup>
<mo>(</mo>
<msub>
<mi>t</mi>
<mi>P</mi>
</msub>
<mo>)</mo>
<mo>+</mo>
<mn>...</mn>
<mo>+</mo>
<msubsup>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mi>e</mi>
<mi>a</mi>
<mi>s</mi>
</mrow>
<mi>K</mi>
</msubsup>
<mo>(</mo>
<msub>
<mi>t</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
<mo>+</mo>
<mn>...</mn>
<mo>+</mo>
<msubsup>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mi>e</mi>
<mi>a</mi>
<mi>s</mi>
</mrow>
<mi>K</mi>
</msubsup>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>e</mi>
<mi>n</mi>
<mi>d</mi>
</mrow>
</msub>
<mo>)</mo>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>K</mi>
<mo>&GreaterEqual;</mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>M</mi>
<mi>i</mi>
<mi>n</mi>
<mrow>
<mo>(</mo>
<msubsup>
<mi>P</mi>
<mrow>
<mi>m</mi>
<mi>e</mi>
<mi>a</mi>
<mi>s</mi>
</mrow>
<mi>K</mi>
</msubsup>
<mo>)</mo>
</mrow>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>K</mi>
<mo><</mo>
<mn>0</mn>
</mrow>
</mtd>
</mtr>
</mtable>
</mfenced>
</mrow>
其中,在步骤3)的公式中,用来表示当前误差方向,tp是功率传感器数据趋于真实数据时的时间,表示真实功率数据,Preal(ti)表示ti时刻矫正后的功率数据,Pmeas(t)表示传感器在t时刻所采集的功率数据,表示根据传感器测得的数据拟合形成的函数,Δt为下次有效采样间隔时间,表示在当前误差向K的情况下传感器所采集到的功率数据,它的取值为未矫正过的数据,ti的取值为程序开始时间tstart和结束时间tend之间的值;
4)获得程序运行时的真实数据之后,将上述矫正后的数据在程序运行的时间内进行积分得到程序的真实能耗数据:
<mrow>
<msubsup>
<mi>E</mi>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>s</mi>
<mi>t</mi>
<mi>a</mi>
<mi>r</mi>
<mi>t</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>e</mi>
<mi>n</mi>
<mi>d</mi>
</mrow>
</msub>
<mo>,</mo>
<mi>S</mi>
<mi>w</mi>
<mo>)</mo>
</mrow>
<mrow>
<mi>A</mi>
<mi>c</mi>
<mi>t</mi>
<mi>u</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msubsup>
<mo>=</mo>
<msubsup>
<mo>&Integral;</mo>
<msub>
<mi>t</mi>
<mrow>
<mi>s</mi>
<mi>t</mi>
<mi>a</mi>
<mi>r</mi>
<mi>t</mi>
</mrow>
</msub>
<msub>
<mi>t</mi>
<mrow>
<mi>e</mi>
<mi>n</mi>
<mi>d</mi>
</mrow>
</msub>
</msubsup>
<msub>
<mi>P</mi>
<mrow>
<mi>r</mi>
<mi>e</mi>
<mi>a</mi>
<mi>l</mi>
</mrow>
</msub>
<mrow>
<mo>(</mo>
<msub>
<mi>t</mi>
<mi>i</mi>
</msub>
<mo>)</mo>
</mrow>
<mi>d</mi>
<mi>t</mi>
</mrow>
其中,E表示软件能耗,三元组下标(tstart,tend,Sw)分别表示程序开始时间、程序结束时间、运行的软件,上标Actual表示设备实际消耗能耗情况。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510166270.4A CN104778113B (zh) | 2015-04-10 | 2015-04-10 | 一种矫正功率传感器数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510166270.4A CN104778113B (zh) | 2015-04-10 | 2015-04-10 | 一种矫正功率传感器数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104778113A CN104778113A (zh) | 2015-07-15 |
CN104778113B true CN104778113B (zh) | 2017-11-14 |
Family
ID=53619593
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510166270.4A Expired - Fee Related CN104778113B (zh) | 2015-04-10 | 2015-04-10 | 一种矫正功率传感器数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778113B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108958940A (zh) * | 2018-07-09 | 2018-12-07 | 苏州浪潮智能软件有限公司 | 一种计算机处理方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104106053A (zh) * | 2012-02-08 | 2014-10-15 | 英特尔公司 | 使用功率的动态cpu gpu 负载平衡 |
CN104461849A (zh) * | 2014-12-08 | 2015-03-25 | 东南大学 | 一种移动处理器上cpu与gpu软件功耗测量方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130097198A1 (en) * | 2011-10-13 | 2013-04-18 | Microsoft Corporation | Business activity monitoring runtime |
US9304570B2 (en) * | 2011-12-15 | 2016-04-05 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements |
-
2015
- 2015-04-10 CN CN201510166270.4A patent/CN104778113B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104106053A (zh) * | 2012-02-08 | 2014-10-15 | 英特尔公司 | 使用功率的动态cpu gpu 负载平衡 |
CN104461849A (zh) * | 2014-12-08 | 2015-03-25 | 东南大学 | 一种移动处理器上cpu与gpu软件功耗测量方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104778113A (zh) | 2015-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103983273B (zh) | 一种基于加速度传感器的实时步长估计方法 | |
CN103323615B (zh) | 一种通过加速度传感器计算步行速度的移动终端及方法 | |
CN103116148B (zh) | 一种核磁共振二维谱反演的方法 | |
CN111415720B (zh) | 一种基于多数据采集的训练辅助方法和装置 | |
CN104504257B (zh) | 一种基于双重并行计算的在线Prony分析方法 | |
CN102155945A (zh) | 一种提高ccd星敏感器动态性能的方法 | |
CN106123911A (zh) | 一种基于加速传感器和角速度传感器的记步方法 | |
CN107271127A (zh) | 基于自迭代主元抽取的工作模态参数识别方法及装置 | |
CN108984403A (zh) | Fpga逻辑代码的验证方法及装置 | |
CN105353789A (zh) | 连续振动信号时间历程复现控制方法 | |
CN108734361A (zh) | 拼车订单处理方法和装置 | |
CN104391177B (zh) | 动车组网侧谐波测试系统及方法 | |
CN103605878A (zh) | 一种基于数据建模和模型移植的通用血糖预测方法 | |
CN110333933A (zh) | 一种hpl计算模型仿真方法 | |
CN204815618U (zh) | 一种篮球运动训练臂套 | |
CN105467355A (zh) | 一种电能表的自动测试方法及其自动测试装置 | |
CN104778113B (zh) | 一种矫正功率传感器数据的方法 | |
CN111513723A (zh) | 运动姿态监测方法、调整方法、装置和终端 | |
CN108414346B (zh) | 一种试验参数自适应的智能真三轴试验系统及试验方法 | |
CN106767890A (zh) | 基于加速度传感器的深度网络自适应步长估计方法及装置 | |
CN103677184B (zh) | 面向虚拟机的cpu温度预测方法及装置 | |
CN103115884A (zh) | 一种化妆品中对羟基苯甲酸酯的测定方法 | |
CN103235216B (zh) | 一种基于LabVIEW的增氧机自动测试系统 | |
CN108153623B (zh) | 一种测试sata接口硬盘能效比的方法和装置 | |
CN107970586A (zh) | 一种龙舟赛事模拟测试系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171114 Termination date: 20210410 |