CN106991007B - 一种基于gpu片上的数据处理方法及设备 - Google Patents

一种基于gpu片上的数据处理方法及设备 Download PDF

Info

Publication number
CN106991007B
CN106991007B CN201710206474.5A CN201710206474A CN106991007B CN 106991007 B CN106991007 B CN 106991007B CN 201710206474 A CN201710206474 A CN 201710206474A CN 106991007 B CN106991007 B CN 106991007B
Authority
CN
China
Prior art keywords
array
gpu
aray
variable
piece
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
CN201710206474.5A
Other languages
English (en)
Other versions
CN106991007A (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.)
Shandong Industry Research Qingchuang Information Technology Co.,Ltd.
Original Assignee
Qingdao University
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 Qingdao University filed Critical Qingdao University
Priority to CN201710206474.5A priority Critical patent/CN106991007B/zh
Publication of CN106991007A publication Critical patent/CN106991007A/zh
Application granted granted Critical
Publication of CN106991007B publication Critical patent/CN106991007B/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种基于GPU片上的数据处理方法,包括以下步骤:分析GPU程序代码,统计当前GPU片上共享存储空间的所有数组变量;将统计得到的所有数组变量按访问次数排序;选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存;若迁移后的系统性能优于迁移前的性能,则从共享存储空间中迁移出更多的数组变量,否则终止。该方法可以对GPU程序的性能进行一定的提升,尤其适用于大数据领域。

Description

一种基于GPU片上的数据处理方法及设备
技术领域
本发明是关于计算机领域,具体涉及数据分析和并行计算领域,尤其涉及一种基于GPU片上的数据处理方法。
背景技术
GPU早期用于图形处理,之后逐渐用于一般的计算任务,利用GPU的众核特性进行并行计算,加速任务处理。虽然GPU的每个性能在计算能力上弱于CPU 的性能,但其内核数量远多于CPU内核。实验表明,对于一般可并行的计算任务而言,GPU的性能可达到CPU的数十倍。由于GPU结构的特殊性,一般用于对可高度并行的任务进行加速,而对于其他任务的加速效果可能尚不足以弥补 CPU与GPU之间转换所消耗的代价。通常情况下,在多数实际系统部署中,任务处理以CPU为主,其中可高度并行的部分使用GPU处理,提高任务处理速度。
由于GPU的计算吞吐率的增长速度远大于其片下存储带宽的增长,因此要充分合理的利用片上存储才能有效的利用GPU的计算资源。不同GPU片上存储的容量增长速度不同,如寄存器文件的容量增长速度比共享资源的容量增长速度快很多,因此在一个GPU上的最优化执行代码并不一定适用于其他GPU。现有的GPU程序性能优化方法主要通过修改GPU程序代码,受限于应用程序类别和GPU设备参数,该优化方法的通用性和可移植性较差。
对于应用开发者而言,手动调节片上存储的问题主要表现在:一是GPU的三类片上存储均对性能有所影响,但对于某个应用中指定的数据元素而言,很难确定合适的片上存储资源的分配情况;二是不同时期GPU之间资源的发展是非线性的,因此不同GPU的最优化片上资源使用情况也不同。
发明内容
本发明提出一种GPU片上的数据处理方法,对给定的GPU程序自动进行片上存储空间的优化,从而提高GPU程序的处理性能。
为了达到上述目的,本发明采用的技术方案为:
一种基于GPU片上的数据处理方法,包括以下步骤:分析GPU程序代码,统计当前GPU片上共享存储空间的所有数组变量;将统计得到的所有数组变量按访问次数排序;选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存;若迁移后的系统性能优于迁移前的性能,则从共享存储空间中迁移出更多的数组变量,否则终止。
优选的,统计当前GPU片上共享存储空间的所有数组变量,包括采用变量统计流程(CollectArray)统计当前GPU程序中存储在片上共享存储空间的所有数组变量。
优选的,变量统计流程(CollectArray)包括:分析编程序代码;找出其中所有存储在片上共享存储空间内的数组变量,记为SMArray。
优选的,统计当前GPU片上共享存储空间的所有数组变量,包括采用参数统计流程(Collectlnfo)统计每个共享存储数组变量的相关参数。
优选的,参数统计流程(Collectlnfo)包括:统计SMArray中每个共享存储数组变量的参数信息,包括访问次数、是否被多线程访问以及下标是否为常数三个参数;对于SMArray中某个数组变量arrayi而言,其访问次数记为 arrayi.count。依次遍历GPU程序,若数组变量arrayi的该次访问在条件语句中,则假设本次访问有一半的概率可被执行,即arrayi.count+=0.5;若本次访问在循环体内且循环次数为常数,则访问次数arrayi.count+=loops,若循环体次数为变量则arrayi.count+=loops_app,其中loops表示常量的循环次数, loops_app表示近似的非常量的循环次数;loops_app是经验值;对于SMArray 中某个数组变量arrayi而言,该参数记为arrayi.threads,如果数组变量arrayi在某次访问中被多个线程访问则arrayi.threads=true,否则 arrayi.threads=false;对于SMArray中某个数组变量arrayi而言,该参数记为 arrayi.constant,如果数组变量arrayi的长度为常量则arrayi.constant=true,否则arrayi.constant=false。
优选的,将统计得到的所有数组变量按访问次数排序,包括采用变量排序流程(SortArray)将所有共享存储数组变量按其访问次序从高到低排序,具体为:调用程序开发平台集成的快速排序函数;将SMArray中的数组变量按照每个数组变量的访问次数从高到低排序。
优选的,选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1 缓存,包括采用变量迁移流程(PromoteArray)将部分共享存储数组变量从共享存储空间迁移到其他片上存储空间。
优选的,变量迁移流程(PromoteArray)包括:选择当前SMArray中访问次数最高的数组变量arrayi;若arrayi.threads=false且 arrayi.constant=true,则arrayi迁移到寄存器中,否则迁移到L1缓存中;进一步判断若arrayi.threads=false且arrayi.constant=false,则arrayi迁移到L1缓存的局部存储空间中;否则迁移到L1缓存的全局存储空间中。
优选的,若迁移后的系统性能优于迁移前的性能,则从共享存储空间中迁移出更多的数组变量,否则终止包括:估算数组变量arrayi迁移后的任务处理时间new_runtime,若new_runtime>current_runtime,则撤销本次迁移操作并终止整个优化过程;否则将数组变量arrayi从SMArray中删除,并重复执行 PromoteArray()算法。
一种采用基于GPU片上的数据处理方法的数据处理设备,数据处理设备内部设有GPU(图形处理器)。
与现有技术相比,本发明的优点和积极效果在于:
1、本发明可以与传统的提升GPU程序性能的方法共同使用,在传统的优化方法基础上进一步提高性能;
2、可以自主执行,不需要应用程序开发者手动对GPU程序修改;
3、适用性很广,可以适用于各种类型的GPU应用程序以及当前所有的GPU 设备,但对性能的提升程度与具体的应用类型和GPU设备有关。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1总体方案流程框图
图2变量统计流程框图
图3参数统计流程框图
图4变量排序流程框图
图5变量迁移流程框图
图6变量迁移流程框图
具体实施方式
本发明提出一种基于GPU片上的数据处理方法,对给定的GPU程序自动进行片上存储空间的优化,从而提高GPU程序的处理性能。
CollectArray():用于统计当前GPU程序中的所有共享存储数组变量;
Collectlnfo():用于统计每个共享存储数组变量的相关参数;
SortArray():用于将共享存储数组变量按访问次数的降序排序;
PromoteArray():用于确定将那些共享存储数据变量的迁移到其他存储空间;
CollectVariables():用于优化共享存储数组变量及其相关参数的统计过程;
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
总体方案如下,如图1所示:
101、首先分析GPU程序代码,统计当前片上共享存储空间的所有数组变量,包括每个数组变量的访问次数、是否用于多线程通信、数组下表是否为常量等参数。
102、其次将统计得到的所有数组变量按访问次数排序。
103、然后选择访问次数最高的数组变量从共享存储空间迁移到寄存器或 L1缓存。
104、若迁移后的系统性能优于迁移前的性能,则从共享存储空间中迁移出更多的数组变量,否则终止优化流程。
具体实施方式如下,变量统计流程框图如图2所示:
201、分析代码:首先利用GPU程序编译工具对当前GPU程序进行编译。
202、找出变量:然后找出其中所有存储在片上共享存储空间内的数组变量。
203、记为SMArray。
参数统计流程框图如图3所示:
301、统计参数:统计SMArray中每个共享存储数组变量的参数信息,包括访问次数、是否被多线程访问以及下标是否为常数三个参数。
302、arrayi的长度为常量:对于SMArray中某个数组变量arrayi而言,该参数记为arrayi.constant,如果数组变量arrayi的长度为常量则 arrayi.constant=true,否则arrayi.constant=false。
303、arrayi的次数为常量:对于SMArray中某个数组变量arrayi而言,其访问次数记为arrayi.count。依次遍历GPU程序,若数组变量arrayi的该次访问在条件语句中,则假设本次访问有一半的概率可被执行,即 arrayi.count+=0.5;若本次访问在循环体内且循环次数为常数,则访问次数 arrayi.count+=loops,若循环体次数为变量则arrayi.count+=loops_app,其中 loops表示常量的循环次数,loops_app表示近似的非常量的循环次数。loops_app是经验值,其获取方法如下:统计开源的GPU标准测试程序或其他业务相关的GPU程序在运行过程中,每个循环次数为不确定的循环体的实际执行次数,然后将其累加并求得平均执行次数即为loops的近似取值。
304、arrayi被多线程访问:对于SMArray中某个数组变量arrayi而言,该参数记为arrayi.threads,如果数组变量arrayi在某次访问中被多个线程访问则arrayi.threads=true,否则arrayi.threads=false。
变量排序流程框图如图4所示:
401、调用程序开发平台集成的快速排序函数。
402、按访问次数排序:将SMArray中的数组变量按照每个数组变量的访问次数从高到低排序。
变量迁移流程框图如图5、图6所示:
变量迁移是一个迭代过程,每次迭代判断是否需要将当前SMArray中访问次数最高的共享存储数组变量迁移到其他存储空间。
501、arrayi迁移到寄存器:首先选择当前SMArray中访问次数最高的数组变量arrayi而言,若arrayi.threads=false且arrayi.constant=true,则arrayi迁移到寄存器中。
502、arrayi迁移到L1缓存的局部存储空间:进一步判断若arrayi.threads =false且arrayi.constant=false,则arrayi迁移到L1缓存的局部存储空间中。
503、arrayi迁移到L1缓存的全局存储空间:否则迁移到L1缓存的全局存储空间中。
600、然后,估算数组变量arrayi迁移后的任务处理时间new_runtime,若 new_runtime>current_runtime,则撤销本次迁移操作并终止整个优化过程;否则将数组变量arrayi从SMArray中删除,并重复执行PromoteArray()算法。
变量统计和参数统计在执行过程中需要多次遍历GPU程序,时间开销较大。为了提高系统的效率,变量统计和参数统计在执行可同时执行,在一次遍历GPU 程序的过程中完成SMArray及每个数组变量所有参数的统计。因为在GPU程序中变量需要先声明后才能使用,因此可以确定每个数组变量arrayi是否存储在共享存储空间中,然后再统计arrayi.count、arrayi.threads、arrayi.constant 等相关参数。
具体算法表述如下:
其中,所述Kernal和List均为GPU程序的变量类型,kernal为当前的GPU 程序,SMArray为kernal中所有共享存储数组变量的列表,!EOF(kernal)表示顺序遍历kernal程序直到遍历完整个程序为止,arrayi表示kernal中的一个共享存储数组变量,SMArray.add(arrayi)表示将arrayi表插入到列表SMArray中, arrayi.count参数为浮点类型,表示数组变量arrayi的访问次数, arrayi.threads和arrayi.constant参数均为布尔类型,分别表示数组变量 arrayi是否被多线程访问和是否为常数下标,access表示对数组变量arrayi的访问。
通过上述过程,提供一种GPU片上的数据处理方法,可以与当前的更新设备和手动优化GPU程序的方法项结合,适用于各类GPU应用程序也可以在各种 GPU设备上进行移植,尤其适用于大数据领域,可以对GPU程序的性能进行一定的提升。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种基于GPU片上的数据处理方法,其特征在于:包括以下步骤:
分析GPU程序代码,统计当前GPU片上共享存储空间的所有数组变量;
将统计得到的所有数组变量按访问次数排序;
选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存:若数组变量的长度为常量,且为单线程访问,则迁移至寄存器;否则迁移至L1缓存中;
若迁移后的系统性能优于迁移前的性能,则从共享存储空间中迁移出更多的数组变量,否则终止。
2.如权利要求1所述的基于GPU片上的数据处理方法,其特征在于:所述统计当前GPU片上共享存储空间的所有数组变量,包括采用变量统计流程(CollectArray)统计当前GPU程序中存储在片上共享存储空间的所有数组变量。
3.如权利要求2所述的基于GPU片上的数据处理方法,其特征在于:所述变量统计流程(CollectArray)包括:
分析编程序代码;
找出其中所有存储在片上共享存储空间内的数组变量,记为SMArray。
4.如权利要求3所述的基于GPU片上的数据处理方法,其特征在于:所述统计当前GPU片上共享存储空间的所有数组变量,包括采用参数统计流程(CollectInfo)统计每个共享存储数组变量的相关参数。
5.如权利要求4所述的基于GPU片上的数据处理方法,其特征在于:所述参数统计流程(CollectInfo)包括:
统计SMArray中每个共享存储数组变量的参数信息,包括访问次数、是否被多线程访问以及下标是否为常数三个参数;
对于SMArray中某个数组变量arrayi而言,其访问次数记为arrayi.count,依次遍历GPU程序,若数组变量arrayi的该次访问在条件语句中,则假设本次访问有一半的概率可被执行,即arrayi.count+=0.5;若本次访问在循环体内且循环次数为常数,则访问次数arrayi.count+=loops,若循环体次数为变量则arrayi.count+=loops_app,其中loops表示常量的循环次数,loops_app表示近似的非常量的循环次数;loops_app是经验值;
对于SMArray中某个数组变量arrayi而言,该参数记为arrayi.threads,如果数组变量arrayi在某次访问中被多个线程访问则arrayi.threads=true,否则arrayi.threads=false;
对于SMArray中某个数组变量arrayi而言,该参数记为arrayi.constant,如果数组变量arrayi的长度为常量则arrayi.constant=true,否则arrayi.constant=false。
6.如权利要求5所述的基于GPU片上的数据处理方法,其特征在于:所述将统计得到的所有数组变量按访问次数排序,包括采用变量排序流程(SortArray)将所有共享存储数组变量按其访问次序从高到低排序,具体为:
调用程序开发平台集成的快速排序函数;
将SMArray中的数组变量按照每个数组变量的访问次数从高到低排序。
7.如权利要求6所述的基于GPU片上的数据处理方法,其特征在于:所述选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存,包括采用变量迁移流程(PromoteArray)将部分共享存储数组变量从共享存储空间迁移到其他片上存储空间。
8.如权利要求7所述的基于GPU片上的数据处理方法,其特征在于:所述变量迁移流程(PromoteArray)包括:
选择当前SMArray中访问次数最高的数组变量arrayi
若arrayi.threads=false且arrayi.constant=true,则arrayi迁移到寄存器中,否则迁移到L1缓存中;
进一步判断若arrayi.threads=false且arrayi.constant=false,则arrayi迁移到L1缓存的局部存储空间中;
否则迁移到L1缓存的全局存储空间中。
9.如权利要求1所述的基于GPU片上的数据处理方法,其特征在于:所述若迁移后的系统性能优于迁移前的性能,则从共享存储空间中迁移出更多的数组变量,否则终止包括:
估算数组变量arrayi迁移后的任务处理时间new_runtime,若new_runtime>current_runtime,则撤销本次迁移操作并终止整个优化过程;
否则将数组变量arrayi从SMArray中删除,并重复执行PromoteArray()算法。
10.一种采用权利要求1-9中任一项所述的基于GPU片上的数据处理方法的数据处理设备,其特征在于,所述数据处理设备内部设有GPU。
CN201710206474.5A 2017-03-31 2017-03-31 一种基于gpu片上的数据处理方法及设备 Active CN106991007B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710206474.5A CN106991007B (zh) 2017-03-31 2017-03-31 一种基于gpu片上的数据处理方法及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710206474.5A CN106991007B (zh) 2017-03-31 2017-03-31 一种基于gpu片上的数据处理方法及设备

Publications (2)

Publication Number Publication Date
CN106991007A CN106991007A (zh) 2017-07-28
CN106991007B true CN106991007B (zh) 2019-09-03

Family

ID=59414618

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710206474.5A Active CN106991007B (zh) 2017-03-31 2017-03-31 一种基于gpu片上的数据处理方法及设备

Country Status (1)

Country Link
CN (1) CN106991007B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291537A (zh) * 2017-06-07 2017-10-24 江苏海平面数据科技有限公司 一种gpu片上存储空间使用的优化方法
CN109918233B (zh) * 2019-03-06 2021-02-26 珠海金山网络游戏科技有限公司 一种数据处理方法、装置、计算设备及存储介质
CN111736943A (zh) * 2019-03-25 2020-10-02 阿里巴巴集团控股有限公司 虚拟机的迁移方法和系统
CN111045959B (zh) * 2019-11-18 2024-03-19 中国航空工业集团公司西安航空计算技术研究所 一种基于存储优化的复杂算法变量映射方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103178989A (zh) * 2013-02-18 2013-06-26 中兴通讯股份有限公司 访问热度统计方法及装置
CN103559148A (zh) * 2013-11-15 2014-02-05 山东大学 面向多任务嵌入式系统的片上便笺式存储器管理方法
CN103970960A (zh) * 2014-05-23 2014-08-06 湘潭大学 基于gpu并行加速的无网格伽辽金法结构拓扑优化方法
CN105452986A (zh) * 2013-08-08 2016-03-30 高通股份有限公司 用于具有选择性功率或性能优化的内存通道交织的系统和方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9910689B2 (en) * 2013-11-26 2018-03-06 Dynavisor, Inc. Dynamic single root I/O virtualization (SR-IOV) processes system calls request to devices attached to host
US9830676B2 (en) * 2015-07-28 2017-11-28 Intel Corporation Packet processing on graphics processing units using continuous threads

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103178989A (zh) * 2013-02-18 2013-06-26 中兴通讯股份有限公司 访问热度统计方法及装置
CN105452986A (zh) * 2013-08-08 2016-03-30 高通股份有限公司 用于具有选择性功率或性能优化的内存通道交织的系统和方法
CN103559148A (zh) * 2013-11-15 2014-02-05 山东大学 面向多任务嵌入式系统的片上便笺式存储器管理方法
CN103970960A (zh) * 2014-05-23 2014-08-06 湘潭大学 基于gpu并行加速的无网格伽辽金法结构拓扑优化方法

Also Published As

Publication number Publication date
CN106991007A (zh) 2017-07-28

Similar Documents

Publication Publication Date Title
CN106991007B (zh) 一种基于gpu片上的数据处理方法及设备
US9971570B2 (en) Automated generation of memory consumption aware code
US8434074B2 (en) Register allocation with SIMD architecture using write masks
Zhang et al. Briskstream: Scaling data stream processing on shared-memory multicore architectures
CN110168516A (zh) 用于大规模并行处理的基于代价的动态计算节点分组优化
US10503562B2 (en) Processing data using dynamic partitioning
CN109886859B (zh) 数据处理方法、系统、电子设备和计算机可读存储介质
US10423395B2 (en) Data processing graph compilation
Khorasani et al. Efficient warp execution in presence of divergence with collaborative context collection
JP2010033561A (ja) マルチプロセッサ・システム上でデータ・セットを区分化およびソートするための方法および装置
Oehlert et al. Bus-aware static instruction SPM allocation for multicore hard real-time systems
Jiang et al. Profiling and optimizing deep learning inference on mobile GPUs
CN109828790A (zh) 一种基于申威异构众核处理器的数据处理方法和系统
Feljan et al. Task allocation optimization for multicore embedded systems
CN107291537A (zh) 一种gpu片上存储空间使用的优化方法
CN114328213A (zh) 基于目标点任务划分的并行化模糊测试方法及系统
CN112947932A (zh) 对编译过程中的向量化进行优化的方法、装置及电子设备
Zhang et al. Optimizing data allocation for loops on embedded systems with scratch-pad memory
US20230065994A1 (en) Offload server, offload control method, and offload program
US6678796B1 (en) System and method for scheduling memory instructions to provide adequate prefetch latency
Batcher et al. Dynamic round-robin task scheduling to reduce cache misses for embedded systems
US10338837B1 (en) Dynamic mapping of applications on NVRAM/DRAM hybrid memory
US8521464B2 (en) Accelerating automatic test pattern generation in a multi-core computing environment via speculatively scheduled sequential multi-level parameter value optimization
Ghosh et al. Parallelization of bin packing on multicore systems
US9043582B2 (en) Enhanced instruction scheduling during compilation of high level source code for improved executable code

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
CP02 Change in the address of a patent holder

Address after: 266061 No. 7 East Hongkong Road, Laoshan District, Shandong, Qingdao

Patentee after: Qingdao University

Address before: 266071 No.308 Ningxia road, Qingdao, Shandong Province

Patentee before: Qingdao University

CP02 Change in the address of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20220907

Address after: Room 1403, Block J, Qingdao International Innovation Park, No. 177 Songling Road, Laoshan District, Qingdao City, Shandong Province, 266000

Patentee after: Shandong Industry Research Qingchuang Information Technology Co.,Ltd.

Address before: 266061 Hongkong East Road, Laoshan District, Qingdao, Shandong Province, No. 7

Patentee before: QINGDAO University

TR01 Transfer of patent right