CN117032841B - 异构计算中核函数参数的高性能传递方法及异构计算系统 - Google Patents

异构计算中核函数参数的高性能传递方法及异构计算系统 Download PDF

Info

Publication number
CN117032841B
CN117032841B CN202310984170.7A CN202310984170A CN117032841B CN 117032841 B CN117032841 B CN 117032841B CN 202310984170 A CN202310984170 A CN 202310984170A CN 117032841 B CN117032841 B CN 117032841B
Authority
CN
China
Prior art keywords
kernel function
parameters
heterogeneous
architecture
interface
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
Application number
CN202310984170.7A
Other languages
English (en)
Other versions
CN117032841A (zh
Inventor
谭丽敏
苏振宇
朱道永
程相群
刘旭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taichu Wuxi Electronic Technology Co ltd
Original Assignee
Taichu Wuxi Electronic Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Taichu Wuxi Electronic Technology Co ltd filed Critical Taichu Wuxi Electronic Technology Co ltd
Priority to CN202310984170.7A priority Critical patent/CN117032841B/zh
Publication of CN117032841A publication Critical patent/CN117032841A/zh
Application granted granted Critical
Publication of CN117032841B publication Critical patent/CN117032841B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Abstract

本发明涉及一种异构计算中核函数参数的高性能传递方法及异构计算系统。其包括:提供异构架构所用的源代码,在所述源代码内配置调用异构计算用的核函数;利用异构编译器对源代码编译时,核函数中的参数利用所述异构编译器在编译阶段进行解析与组装,以在将源代码编译生成可执行文件时,所述组装后的核函数参数作为可执行文件运行时的API参数;在异构架构主机端运行所述可执行文件,其中,在运行所述执行文件时,启动所述核函数并基于<<<>>>操作符将计算数据作为核函数的参数传递至异构架构内对应的设备端。本发明可提高在异构架构下主机端和设备端参数传递的效率,降低在运行阶段对参数解析时出错的概率。

Description

异构计算中核函数参数的高性能传递方法及异构计算系统
技术领域
本发明涉及一种参数传递方法及异构计算系统,尤其是一种异构计算中核函数参数的高性能传递方法及异构计算系统。
背景技术
近几年兴起的人工智能、深度学习等领域对计算性能的需求极高,传统的CPU(Central Processing Unit)处理器架构已不能完全满足需求,因此,从依赖工艺、功耗提高性能转向依靠架构的改变,促使异构架构的出现,基于异构架构的高性能计算机成为发展的主流趋势。
异构架构一般是由通用计算单元和专用计算单元组成,一般地,通用计算单元作为控制设备(称为主机端),专用计算单元作为协处理器(称为设备端),由主机端和设备端合作共同执行通用计算任务即为异构计算。异构计算时,计算数据由主机准备,通过核函数(异构编程接口)将计算数据传至设备,以实现在设备端上进行计算。
现有技术中,通过异构编程接口将计算数据传至设备端,在运行阶段通过读取计算数据的地址取出数据,对数据进行解析,最后将参数进行组装,再将组装后的参数发送到设备的存储空间。使用数据时从存储空间读取,因此,现有的核函数传递方式会增加可执行文件执行时的时间,降低异构计算的效率。
发明内容
本发明的目的是克服现有技术中存在的不足,提供一种异构计算中核函数参数的高性能传递方法及异构计算系统,其可提高在异构架构下主机端和设备端参数传递的效率,降低在运行阶段对参数解析时出错的概率。
按照本发明提供的技术方案,一种异构计算中核函数参数的高性能传递方法,所述核函数参数的高性能传递方法包括:
提供异构架构所用的源代码,在所述源代码内配置调用异构计算用的核函数;
利用异构编译器对源代码编译时,核函数中的参数利用所述异构编译器在编译阶段进行解析与组装,以在将源代码编译生成可执行文件时,所述组装后的核函数参数作为可执行文件运行时的API参数;
在异构架构主机端运行所述可执行文件,其中,在运行所述执行文件时,启动所述核函数并基于<<<>>>操作符将计算数据作为核函数的参数传递至异构架构内对应的设备端。
在所述源代码内通过<<<>>>操作符调用异构计算用的核函数。
利用异构编译器将<<<>>>操作符展开时,则有:
使用异构编译器将设备端的源代码编译生成设备端的二进制FatBinary,将<<<>>>操作符展开为运行时接口,并通过调用运行时接口将生成的设备端的二进制FatBinary预注册在设备端;
通过运行时的Push接口,保存调用核函数的配置选项;
解析并组装所述核函数的参数;
通过运行时的Pop接口,恢复调用所述核函数的配置选项;
通过运行时的Launch接口,Launch核函数;
通过运行时的卸载接口,卸载在设备端的注册的模块。
对核函数的参数的解析时,包括读取参数的大小、参数的数据类型以及参数的个数;
对核函数的参数组装时,包括基于传参格式的约定对参数进行封装,并作为运行时Launch接口的参数。
启动核函数并基于所述核函数将核函数参数传递至设备端时,包括:
根据与异构编译器约定的传参格式检查组装后的核函数参数;
通过核函数句柄查找核函数在设备端的地址和其他信息;
查找流句柄对应的任务队列;
基于核函数中配置选项、组装后的核函数参数buf以及核函数信息,创建Launch任务命令;
将Launch任务命令放入流句柄对应的任务队列中;
执行任务队列,直接把运行时Launch接口查到的核函数信息和编译器组装后的参数传递给驱动接口;
驱动接口拼装ioctl命令发送Launch任务至设备端。
组装后的核函数参数传递至异构架构内的设备端的cache空间。
一种异构计算系统,包括异构架构,其中,在异构计算时,采用上述的传递方法将核函数参数传递至异构架构内的设备。
所述设备的架构与异构架构内主机的架构不同,以基于所述主机以及设备形成异构架构。
本发明的优点:在异构编译器对源代码编译阶段,实现核函数参数的解析与组装,在运行可执行代码时,直接将核函数参数传递至设备端,从而提高在异构架构下主机端和设备端参数传递的效率,降低在运行阶段对参数解析时出错的概率。
附图说明
图1为本发明的一种实施例流程图。
具体实施方式
下面结合具体附图和实施例对本发明作进一步说明。
为了提高在异构架构下主机端和设备端参数传递的效率,降低在运行阶段对参数解析时出错的概率,对异构计算中核函数参数的高性能传递方法,本发明的一种实施例中,所述核函数参数的高性能传递方法包括:
提供异构架构所用的源代码,在所述源代码内配置调用异构计算用的核函数;
利用异构编译器对源代码编译时,核函数中的参数利用所述异构编译器在编译阶段进行解析与组装,以在将源代码编译生成可执行文件时,所述组装后的核函数参数作为可执行文件运行时的API参数;
在异构架构主机端运行所述可执行文件,其中,在运行所述执行文件时,启动所述核函数并基于<<<>>>操作符将计算数据作为核函数的参数传递至异构架构内对应的设备端。
具体实施时,源代码的具体形式可根据需要选择,以能满足异构架构进行所需的运算为准,所提供的源代码一般即为满足异构架构进行计算的目标源代码。在源代码内定义和调用核函数,一般地,利用__global__关键字修饰的函数为核函数且所述核函数为目标源代码内device(设备)端函数的调用执行入口,利用__global__修饰函数形成核函数的方式与现有相一致。
源代码经异构编译器编译后生成可执行文件,异构编码器具体以能对源代码进行编译为准。本发明的一种实施例中,在异构编译器内,对核函数的参数进行解析与组装,核函数的参数一般非固定,与需要传递异构计算的参数相关,核函数的参数类型也与设备进行异构计算的需求相关,核函数参数的类型支持基本数据类型,如int整型,float浮点等,支持基本数据类型的情况以能满足设备的异构计算为准。
异构编译器对核函数的参数进行解析与组装,具体地,对核函数参数的解析,具体是指读取并确定参数的大小、参数的数据类型以及参数的个数;对解析后核函数参数组装,具体是指根据约定的传参格式对参数进行封装,以在封装后满足作为运行时Launch接口的参数。编译生成可执行文件时,则经异构编译器解析与组装后,组装后核函数的参数作为运行时的API(Application Programming Interface)参数。
经过异构编译器编译生成的可执行文件,由于主机端的计算数据作为核函数的参数在编译阶段已完成解析与组装,并将组装后的参数作为运行时函数的参数。运行所述可执行文件时,直接读取运行时函数的参数,并传递至异构架构内对应的设备端。具体实施时,对应的设备端,具体是指需利用所述核函数参数进行异构计算的设备端。
本发明的一种实施例中,利用异构编译器将<<<>>>操作符展开时,则有:
使用异构编译器将设备端的源代码编译生成设备端的二进制FatBinary,将<<<>>>操作符展开为运行时接口,并通过调用运行时接口将生成的设备端的二进制FatBinary预注册在设备端;
通过运行时的Push接口,保存调用核函数的配置选项;
解析并组装所述核函数的参数;
通过运行时的Pop接口,恢复调用所述核函数的配置选项;
通过运行时的Launch接口,Launch核函数;
通过运行时的卸载接口,卸载在设备端的注册的模块。
本技术领域人员周知,异构编程模型中的源代码一般包括主机端的源代码以及设备端的源代码,主机端、设备端形成异构架构的情况与现有相一致。
使用异构编译器将设备端的源代码编译生成设备端的二进制FatBinary,异构编译器将设备端的源代码编译生成设备端的二进制FatBinary的方式以及过程可与现有相一致。一般地,在编译阶段,异构编译器会将<<<>>>操作符展开成运行时接口,通过调用所述运行时接口时会执行核函数的注册,也即实现核函数在设备端的预注册。
将核函数预注册时,会返回核函数在设备端注册的地址,所述返回的地址给运行时Launch接口。在运行阶段,运行可执行文件,读取运行时Launch接口的参数,得到核函数在设备端注册的地址。
在调用核函数时,需要做一些配置,可通俗理解为主机端与设备端通讯需要配置,如启动多少个设备进行计算等,具体地,通过运行时的Push接口,保存调用核函数的配置选项,其中,将配置参数进行保存的目的是在将核函数的参数进行解析和组装的过程中会涉及函数调用,防止误修改配置选项。对核函数的参数解析与组装后,需通过运行时的Pop接口,恢复调用所述核函数的配置选项。
由上述说明可知,解析组装所述核函数的参数时,对参数的解析,主要读取参数的大小、参数的数据类型以及参数的个数;对参数组装时,主要根据约定的传参格式对参数进行封装,并作为运行时Launch接口的参数;对参数封装的格式,主要以能满足约定的传参格式为准。
保存调用核函数的配置选项,具体为先将配置选项保存起来,对核函数的参数解析与组装后,再把配置选项取出来,即恢复调用所述核函数的配置选项,此时,可防止对核函数参数解析与组装过程中,配置选项丢失或被修改。
编译生成Launch核函数的指令,具体是指在运行可执行代码时基于所述生成Launch核函数指令,会调用运行时Launch接口。异构编程中,一部分的源代码在主机端运行,一部分源代码程序在设备端运行。编译生成退出时卸载模块注册module的指令,具体是指在运行可执行代码时基于所述生成退出时卸载模块注册module的指令,在设备端运行结束后,会做卸载操作,也即卸载在设备端注册的模块注册module。
本发明的一种实施例中,启动核函数并基于所述核函数将核函数参数传递至设备端时,包括:
根据与异构编译器约定的传参格式检查组装后的核函数参数;
通过核函数句柄查找核函数在设备端的地址和其他信息;
查找流句柄对应的任务队列;
基于核函数中配置选项、组装后的核函数参数buf以及核函数信息,创建Launch任务命令;
将Launch任务命令放入流句柄对应的任务队列中;
执行任务队列,直接把运行时Launch接口查到的核函数信息和编译器组装后的参数传递给驱动接口;
驱动接口拼装ioctl命令发送Launch任务至设备端。
启动核函数即运行Launch接口。在运行阶段,检查组装后的核函数参数,主要是检查组装后的核函数参数是否满足约定的传参格式,约定的传参格式具体可根据需要事先预定,具体以能满足核函数参数的传递需求为准。具体实施时,当检测组装后的核函数参数不满足传参格式时,则停止核函数参数传递至设备端,也即停止后续的步骤。
组装后核函数参数检查通过后,读取运行Launch接口的参数,获取到核函数在设备端的地址和主机端传过来的参数以及配置信息等信息。因此,查找的其他信息,一般是指主机端发送的参数以及配置信息,所述配置信息主要为流信息,如创建的是空流或非空流、阻塞流还是非阻塞流,所述流信息的具体情况可根据实际应用场景选择确定。
通过核函数句柄查找核函数在设备端的地址和其他信息的具体方式以及过程可与现有相一致。由上述说明可知,核函数在设备端的地址,具体为在核函数预注册在设备端返回的地址。
流句柄即为流的标识,通过流句柄可查找对应的任务队列,具体地,通过流句柄查找流句柄对应任务队列的方式以及过程与现有相一致。
核函数中配置选项具体是指上述其他信息中的配置信息,核函数信息具体是指核函数在设备端注册的地址以及函数名。基于核函数中配置选项、组装后的核函数参数buf以及核函数信息,主机端创建Launch任务命令并放置对应的任务队列中,任务队列直接获取到的核函数地址和参数信息作为Launch任务的参数,驱动程序拼装ioctl命令发送Launch任务至设备端。
ioctl命令为现有常用的参数传递命令,驱动程序拼装ioctl命令发送Launch任务至设备端时,即实现将核函数参数传递至设备端,具体基于驱动程序拼装ioctl命令发送Launch任务至设备端的方式以及过程均与现有相一致。
本发明的一种实施例中,在编译阶段,异构编译器生成将核函数的参数传递至设备端cache空间的指令。在运行阶段,设备端执行任务时,从cache空间直接读取参数用于计算,与现有将参数传递至设备端的内存空间相比,可提高执行任务时参数读取的效率,也即实现了核函数参数的高性能传递。
现有技术中,任务队列不是直接得到参数信息,而是得到的每个参数的地址,再对每个参数进行读取和解析。本发明可直接得到参数信息,可省去读取与解析的过程,可进一步提高异构计算的效率。
综上,一种异构计算系统,包括异构架构,其中,在异构计算时,采用上述所述的传递方法将核函数参数传递至异构架构内的设备。
具体实施时,核函数参数传递的方式可参考上述说明,此处不再赘述。

Claims (6)

1.一种异构计算中核函数参数的高性能传递方法,其特征是,所述核函数参数的高性能传递方法包括:
提供异构架构所用的源代码,在所述源代码内配置调用异构计算用的核函数;
利用异构编译器对源代码编译时,核函数中的参数利用所述异构编译器在编译阶段进行解析与组装,以在将源代码编译生成可执行文件时,所述组装后的核函数参数作为可执行文件运行时的API参数;
在异构架构主机端运行所述可执行文件,其中,在运行所述执行文件时,启动所述核函数并基于<<<>>>操作符将计算数据作为核函数的参数传递至异构架构内对应的设备端;
利用异构编译器将<<<>>>操作符展开时,则有:
使用异构编译器将设备端的源代码编译生成设备端的二进制FatBinary,将<<<>>>操作符展开为运行时接口,并通过调用运行时接口将生成的设备端的二进制FatBinary预注册在设备端;
通过运行时的Push接口,保存调用核函数的配置选项;
解析并组装所述核函数的参数;
通过运行时的Pop接口,恢复调用所述核函数的配置选项;
通过运行时的Launch接口,Launch核函数;
通过运行时的卸载接口,卸载在设备端的注册的模块;
启动核函数并基于所述核函数将核函数参数传递至设备端时,包括:
根据与异构编译器约定的传参格式检查组装后的核函数参数;
通过核函数句柄查找核函数在设备端的地址和其他信息;
查找流句柄对应的任务队列;
基于核函数中配置选项、组装后的核函数参数buf以及核函数信息,创建Launch任务命令;
将Launch任务命令放入流句柄对应的任务队列中;
执行任务队列,直接把运行时Launch接口查到的核函数信息和编译器组装后的参数传递给驱动接口;
驱动接口拼装ioctl命令发送Launch任务至设备端。
2.根据权利要求1所述的异构计算中核函数参数的高性能传递方法,其特征是,在所述源代码内通过<<<>>>操作符调用异构计算用的核函数。
3.根据权利要求1至2任一项所述的异构计算中核函数参数的高性能传递方法,其特征是,对核函数的参数的解析时,包括读取参数的大小、参数的数据类型以及参数的个数;
对核函数的参数组装时,包括基于传参格式的约定对参数进行封装,并作为运行时Launch接口的参数。
4.根据权利要求1所述的异构计算中核函数参数的高性能传递方法,其特征是,组装后的核函数参数传递至异构架构内的设备端的cache空间。
5.一种异构计算系统,其特征是:包括异构架构,其中,在异构计算时,采用上述权利要求1~权利要求4中任一项所述的传递方法将核函数参数传递至异构架构内的设备。
6.根据权利要求5所述的异构计算系统,其特征是,所述设备的架构与异构架构内主机的架构不同,以基于所述主机以及设备形成异构架构。
CN202310984170.7A 2023-08-04 2023-08-04 异构计算中核函数参数的高性能传递方法及异构计算系统 Active CN117032841B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310984170.7A CN117032841B (zh) 2023-08-04 2023-08-04 异构计算中核函数参数的高性能传递方法及异构计算系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310984170.7A CN117032841B (zh) 2023-08-04 2023-08-04 异构计算中核函数参数的高性能传递方法及异构计算系统

Publications (2)

Publication Number Publication Date
CN117032841A CN117032841A (zh) 2023-11-10
CN117032841B true CN117032841B (zh) 2024-04-26

Family

ID=88629291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310984170.7A Active CN117032841B (zh) 2023-08-04 2023-08-04 异构计算中核函数参数的高性能传递方法及异构计算系统

Country Status (1)

Country Link
CN (1) CN117032841B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104820613A (zh) * 2015-05-27 2015-08-05 中国科学院自动化研究所 一种异构多核程序的编译方法
CN113626017A (zh) * 2021-07-06 2021-11-09 曙光信息产业(北京)有限公司 异构程序的分析方法、装置、计算机设备和存储介质
CN114064551A (zh) * 2022-01-17 2022-02-18 广州嘉检医学检测有限公司 基于cpu+gpu异构的高并发序列比对计算加速方法
CN114116208A (zh) * 2021-11-12 2022-03-01 中国地质大学(北京) 一种基于gpu的短波辐射传输模式三维加速方法
CN114217770A (zh) * 2021-03-26 2022-03-22 无锡江南计算技术研究所 一种基于异构众核架构的c++融合编程方法
CN115756605A (zh) * 2022-11-07 2023-03-07 中国地质大学(北京) 一种基于多gpu的浅积云对流参数化方案异构计算方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367306B2 (en) * 2011-03-30 2016-06-14 Nvidia Corporation Method for transforming a multithreaded program for general execution

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104820613A (zh) * 2015-05-27 2015-08-05 中国科学院自动化研究所 一种异构多核程序的编译方法
CN114217770A (zh) * 2021-03-26 2022-03-22 无锡江南计算技术研究所 一种基于异构众核架构的c++融合编程方法
CN113626017A (zh) * 2021-07-06 2021-11-09 曙光信息产业(北京)有限公司 异构程序的分析方法、装置、计算机设备和存储介质
CN114116208A (zh) * 2021-11-12 2022-03-01 中国地质大学(北京) 一种基于gpu的短波辐射传输模式三维加速方法
CN114064551A (zh) * 2022-01-17 2022-02-18 广州嘉检医学检测有限公司 基于cpu+gpu异构的高并发序列比对计算加速方法
CN115756605A (zh) * 2022-11-07 2023-03-07 中国地质大学(北京) 一种基于多gpu的浅积云对流参数化方案异构计算方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于CUDA的Bézier曲线曲面生成算法的加速研究;曹鹏;《中国优秀硕士学位论文全文数据库 信息科技辑》;20190131;I138-4730 *
基于CUDA的Bezier曲线生成算法并行化研究;梁志宏等;《计算机科学与应用》;20180329;第355-365页 *

Also Published As

Publication number Publication date
CN117032841A (zh) 2023-11-10

Similar Documents

Publication Publication Date Title
EP1208425B1 (en) Method and system for testing computer code
JPH08339304A (ja) 機械独立コードを含むプラットフォーム標準オブジェクト・ファイルを生成する方法および装置
US7877741B2 (en) Method and corresponding apparatus for compiling high-level languages into specific processor architectures
US7213237B2 (en) Intermediate code preprocessing apparatus, intermediate code execution apparatus, intermediate code execution system, and computer program product for preprocessing or executing intermediate code
US20030084431A1 (en) Intermediate code execution system, intermediate code execution method, and computer program product for executing intermediate code
EP2572275A1 (en) Distributing and parallelizing workloads in a computing platform
EP0428560A4 (en) Machine process for translating programs in binary machine language into another binary machine language
CN1238500A (zh) 用于进行静态初始化的方法和系统
CN114816417B (zh) 一种交叉编译方法、装置、计算设备及存储介质
US8214812B2 (en) Method of interpreting method bytecode and system operated by the same
US9235397B2 (en) Method and apparatus for increasing task-execution speed
CN109933327B (zh) 基于代码融合编译框架的OpenCL编译器设计方法和系统
WO2022237098A1 (zh) 一种异构程序执行方法、装置、计算设备及可读存储介质
CN117032841B (zh) 异构计算中核函数参数的高性能传递方法及异构计算系统
CN111857694A (zh) 一种基于云原生程序开发与部署的代码编辑方法及装置
US20180364991A1 (en) Method and system for preparing code to be executed by programmable control devices
CN113298259B (zh) 支持嵌入式平台多核并行的cnn网络推理框架设计方法
CN115600664B (zh) 算子处理方法、电子设备及存储介质
KR20040079851A (ko) 직접 명령어 렌더링 에뮬레이션 컴퓨터 기술
CN111596970A (zh) 动态库延迟加载方法、装置、设备和存储介质
CN116434040A (zh) 一种面向risc-v体系架构的实时目标检测方法及系统
US11429358B2 (en) Representing asynchronous state machine in intermediate code
CN115048184A (zh) 一种解释器指令的优化执行方法和装置
EP4204960A1 (en) Thread-local return structure for asynchronous state machine
JP2000347875A (ja) ファイル移植技術

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