CN114492319A - 基于gpu批量生成uuid的方法、装置及介质 - Google Patents
基于gpu批量生成uuid的方法、装置及介质 Download PDFInfo
- Publication number
- CN114492319A CN114492319A CN202210361838.8A CN202210361838A CN114492319A CN 114492319 A CN114492319 A CN 114492319A CN 202210361838 A CN202210361838 A CN 202210361838A CN 114492319 A CN114492319 A CN 114492319A
- Authority
- CN
- China
- Prior art keywords
- uuid
- uuids
- buffer
- currently used
- gpu
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0633—Lists, e.g. purchase orders, compilation or processing
- G06Q30/0635—Processing of requisition or of purchase orders
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Image Generation (AREA)
Abstract
本发明实施例公开了基于GPU批量生成UUID的方法、装置及介质;该装置可以包括通用处理器以及具有并行计算功能的图像处理器GPU;其中,所述GPU,经配置为基于并行计算生成一组UUID;所述通用处理器,经配置为响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID。
Description
技术领域
本发明实施例涉及通用计算技术领域,尤其涉及一种基于图像处理器(GPU,Graphics Processing Unit)批量生成通用唯一识别码(UUID,Universally UniqueIDentifier)的方法、装置及介质。
背景技术
UUID是指通过算法生成的一个128bits的唯一数字标识符,其由于能够在本地快速生成并且全局唯一被广泛地应用于生成消息编号、数据库主键、电子商品编号、请求编号、订单编号等需要进行唯一标记的应用场景。
对于UUID来说,目前详细规范可参考规范性文件RFC4122,从该规范性文件可知:UUID目前共有5个版本,每个版本之间是根据不同的使用场景进行划分的,当然,每个版本对应的生成算法均不相同;但并不影响批次之间的精度,也就是说,UUID Version5并不会比UUID Version1的精度高。
各版本生成UUID所对应的生成算法并不复杂,但是目前在实际实施过程中均是由CPU进行UUID的生成,那么在面临短时间内需要大量生成UUID的情况下,比如互联网抢购、秒杀、购物节等火爆之时,尤其是在秒杀,抢购的场景下,分布式的流量从世界各地短时间大量涌入服务器;此时,服务器的CPU资源将被大量地消耗在UUID生成任务上,无法提供足够的资源来执行更加重要的订单业务的逻辑处理任务。由此,将会使得其它网络请求被阻塞在处理队列中,从而导致请求处理时间延长,进而造成占用整个服务器硬件资源的时间增长的情况。
发明内容
有鉴于此,本发明实施例期望提供一种基于GPU批量生成UUID的方法、装置及介质;能够提高UUID的生成效率,节省计算量高峰期的CPU算力以及请求处理时长。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了一种计算装置,所述计算装置包括通用处理器以及具有并行计算功能的图像处理器GPU;其中,
所述GPU,经配置为基于并行计算生成一组UUID;
所述通用处理器,经配置为响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID。
第二方面,本发明实施例提供了一种基于GPU批量生成UUID的方法,所述方法应用于第一方面所述的计算装置,所述方法包括:
具有并行计算功能的图像处理器GPU基于并行计算生成一组通用唯一识别码UUID;
通用处理器响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID。
第三方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有基于GPU批量生成UUID的程序,所述基于GPU批量生成UUID的程序被至少一个处理器执行时实现第二方面所述基于GPU批量生成UUID的方法步骤。
本发明实施例提供了一种基于GPU批量生成UUID的方法、装置及介质;通过将UUID的生成过程从CPU中独立出来,并利用GPU的并行计算功能进行实现,从而在需要生成UUID的业务场景下相较于目前常规的方案,CPU无需执行生成UUID的过程,而仅需要对已生成的UUID进行读取,从而减少CPU的占用时长以及占用资源;此外通过GPU的强大的并行计算能力提高了UUID的生成效率,节省业务高峰期的CPU算力,能够将较多的CPU资源分配至更为重要的业务逻辑处理部分。
附图说明
图1为本发明实施例提供的关于XorShift64s算法的伪代码示例图;
图2为本发明实施例提供的CPU生成UUID的处理过程流程示意图;
图3为能够实施本发明实施例的一种计算装置组成示意图;
图4为能够实现本发明实施例技术方案的一种GPU的示意框图;
图5为GPU中的图形渲染管线和计算着色器连接示意图;
图6为本发明实施例提供的UUID结构示意图;
图7为本发明实施例提供的双buffer机制结构示意图;
图8为本发明实施例提供的一种基于GPU批量生成UUID的方法流程示意图;
图9为本发明实施例提供的执行订单流程示意图;
图10为本发明实施例提供的单次分配UUID的详细实现流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
基于规范性文件RFC4122中的相关内容,尽管不同版本的UUID所对应的生成算法机制各不相同,但是在采用这些算法机制生成UUID的过程中,会存在大量的乘法、加减、移位以及异或等运算操作,以UUID生成方案版本4的变体2为例,该方案变体会使用到随机数生成,需要生成122bits的随机数(之所以是122bits而不是128bits的原因是需要保留6bits用于标记UUID生成方案版本和变体),以图1所示出的关于XorShift64s算法的伪代码为示例,可以看出,该算法进行了多次的移位,异或操作以及一次乘法操作。
以电子商务进行网上购买为例,服务器执行订单的大致过程如图2所示,首先服务器的CPU从网卡接收到的订单请求队列中读取订单请求;随后为了对订单进行逻辑处理,需要前置针对订单请求生成UUID以识别、区分及追踪各订单后续的逻辑处理和数据库操作。由图2所示的CPU处理过程示例可以看出,生成UUID属于CPU后续进行核心的订单逻辑处理和数据库操作的前置依赖条件,而在秒杀,抢购的场景下,服务器将面临大量的分布式的订单访问流量在短时间内从世界各地涌入的情况。在该情况下,如果以UUID表示订单标识或编号,那么就需要CPU在相当短的时间内生成数十万甚至上百万的UUID订单编号。然而,CPU的计算资源有限,应当让更多的CPU资源用来执行图2所示过程中更为重要和核心的订单逻辑处理以及数据库操作等业务,而不能过多的消耗在订单编号生成上。此外,UUID生成算法本身并不复杂,但是在前述示例性场景下的短时间需求量大,且生成多个UUID的过程之间没有需要相互依赖的特性。基于此,本发明实施例期望将生成UUID的动作从CPU的处理过程中独立出来,转而使用其他能够执行大规模并行计算的单元(如GPU)进行异步执行,避免CPU为了应对每个请求而被占用以执行UUID的生成动作,提高UUID的分配效率,减少CPU的资源占用量以及占用时长,加快请求的执行时间。
参见图3,其示出了能够实施本发明实施例的一种计算装置100,该计算装置100可以包含但不限于以下各项:无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器,等。在图3的实例中,计算装置100可以包括中央处理单元(CPU)102 和经由可以包括存储器桥105 的互连路径通信的系统存储器104。存储器桥105,其可以是例如北桥芯片,经由总线或其他通信路径106(例如超传输(HyperTransport)链路)连接到I/O(输入/ 输出)桥107。I/O 桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108(例如键盘、鼠标、轨迹球、能够作为组成部分并入显示设备110的触摸屏或其他类型的输入装置)接收用户输入并且经由通信路径106和存储器桥105将所述输入转发到CPU 102。图形处理器112 经由总线或其他通信路径113(例如PCI Express、加速图形端口或超传输链路)耦合到存储器桥105;在一个实施例中,GPU 112可以是将像素传递到显示设备110(例如传统的基于CRT或LCD 的监视器)的图形子系统。系统盘114也连接到I/O 桥107。开关116提供I/O 桥107与诸如网络适配器118以及各种外插卡120 和121 的其他组件之间的连接。其他组件(未明确示出),包括USB 或其他端口连接、CD 驱动器、DVD 驱动器、胶片录制设备及类似组件,也可以连接到I/O 桥107。使图3 中各种组件互连的通信路径可以使用任何适合的协议实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且不同设备间的连接可使用本领域已知的不同协议。
在一个实施例中,GPU 112 包含经优化用于图形和视频处理的电路,包括例如视频输出电路。在另一个实施例中,GPU 112 包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构。在又一个实施例中,可以将GPU 112 与一个或多个其他系统元件集成起来,诸如存储器桥105、CPU 102 以及I/O 桥107,以形成片上系统(SoC)。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数量和布置、CPU 102 的数量以及GPU 112 的数量,可根据需要修改。例如,在一些实施例中,系统存储器104 直接连接到CPU 102 而不是通过桥,并且其他设备经由存储器桥105 和CPU 102 与系统存储器104 通信。在其他替代性拓扑中,GPU 112 连接到I/O 桥107 或直接连接到CPU 102,而不是连接到存储器桥105。而在其他实施例中,I/O 桥107 和存储器桥105 可能被集成到单个芯片上。大量实施例可以包括两个或两个以上的CPU 102以及两个或两个以上的GPU 112。本文所示的特定组件是可选的;例如,任意数量的外插卡或外围设备都可能得到支持。在一些实施例中,开关116被去掉,网络适配器118 和外插卡120、121 直接连接到I/O 桥107。
图4示出了能够实现本发明实施例技术方案的一种GPU 112示意框图,在本发明实施例中,图形存储器204可为GPU 112的一部分。因此,GPU 112可在不使用总线的情况下从图形存储器204读取数据且将数据写入到图形存储器204。换句话说,GPU 112可使用本地存储装置而不是芯片外存储器在本地处理数据。此类图形存储器204可被称作芯片上存储器。这允许GPU 112通过消除GPU 112经由总线读取和写入数据的需要来以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 112可不包含单独的存储器,而是经由总线利用系统存储器104。图形存储器204可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
基于此,GPU 112可以经配置以执行与下述相关的各种操作:经由存储器桥105和通信路径113从CPU 102 和/ 或系统存储器104 所提供的图形数据生成像素数据,与本地图形存储器204(例如常用帧缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110 等等。
在操作中,CPU 102 是计算装置100 的主处理器,控制和协调其他系统组件的操作。具体地,CPU 102 发出控制GPU 112的操作的命令。在一些实施例中,CPU 102 为GPU112写入命令流到数据结构中(在图3或图4中未明确示出),所述数据结构可位于系统存储器104、图形存储器204、或CPU 102 和GPU 112都可访问的其他存储位置中。将指向每个数据结构的指针写到入栈缓冲区(pushbuffer)以启动对数据结构中的命令流的处理。GPU112从一个或多个入栈缓冲区读取命令流,然后相对于CPU 102 的操作异步地执行命令。可以为每个入栈缓冲区指定执行优先权以控制对不同入栈缓冲区的调度。
具体如图4中所述,GPU 112可以经由连接到存储器桥105(或者,在一个替代性实施例中,直接连接到CPU 102)的通信路径113与计算装置100的其余部分通信的I/O(输入/输出)单元205相连接。GPU 112到计算装置100的其余部分的连接也可以变化。在一些实施例中,GPU 112可作为外插卡来实现,所述外插卡可被插入到计算机系统100 的扩展槽中。在其他实施例中,GPU 112可以和诸如存储器桥105 或I/O 桥107 的总线桥一起集成在单个芯片上。而在其他实施例中,GPU 112的一些或所有元件可以和CPU 102 一起集成在单个芯片上。
在一个实施例中,通信路径113 可以是PCI-EXPRESS 链路,如本领域所知的,在PCI-EXPRESS 链路中专用通道被分配到GPU 112。I/O 单元205 生成用于在通信路径113上传输的数据包(或其他信号),并且还从通信路径113 接收所有传入的数据包(或其他信号),将传入的数据包引导到GPU 112的适当组件。例如,可将与处理任务有关的命令引导到调度器207,而可将与存储器操作有关的命令(例如,对图形存储器204的读取或写入)引导到图形存储器204。
在GPU 112中,可以包括渲染核阵列230,该渲染核阵列230可以包括C 个通用的渲染核208,其中C>1。基于渲染核阵列230中的通用渲染核208,GPU112能够并发执行大量的程序任务或计算任务。举例来说,每个渲染核均可被编程以能够执行与种类繁多的程序相关的处理任务,包括但不限于,线性与非线性数据变换,视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图形渲染操作(例如,曲面细分着色器、顶点着色器、几何着色器、和/或片段着色器程序)等等。
此外,GPU 112中还可以包括固定功能处理单元231,其可包含经硬连线以执行某些功能的硬件。尽管固定功能硬件可经由例如一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,固定功能处理单元231可包含例如执行图元装配的处理单元、执行光栅化处理单元和执行片段操作的处理单元。对于执行图元装配的处理单元来说,其能够将通过顶点着色器单元已完成着色的顶点按照原始连接关系还原出图形的网格结构,即图元,从而供后续片元着色器单元进行处理;所述光栅化操作包括转换新图元并将片段输出至片段着色器;而片段操作则包括例如深度测试、裁剪测试、 Alpha混合或者透明度混合等,经过上述操作所输出的像素数据可以作为图形数据通过显示设备110进行显示。综合上述渲染核阵列230以及固定功能处理单元231,能够实现一个完整的图形渲染管线的逻辑模型。
此外,渲染核阵列230可以从调度器207接收将要执行的处理任务。调度器207可独立地调度所述任务由GPU 112的资源(比如渲染核阵列230中的一或多个渲染核208)执行。在一个实例中,调度器207可以是硬件处理器。在图4中所示出的实例中,调度器207可包含于GPU 112中。在其它实例中,调度器207还可以是与CPU 102和GPU 112分离的单元。调度器207还可被配置成接收命令和/或操作的流的任何处理器。
调度器207可处理一或多个命令流,其包含调度操作,所述调度操作包含于由GPU112执行的一或多个命令流中。具体地说,调度器207可处理一或多个命令流,且调度所述一或多个命令流中的操作,以由渲染核阵列230执行。在操作中,CPU 102藉由图3中系统存储器104所包括的GPU驱动程序103可向调度器207发送包括待由GPU 112执行的一系列操作的命令流。调度器207可通过I/O单元205接收包括命令流的操作流且可基于命令流中的操作次序依序地处理命令流的操作,且可调度命令流中的操作可以由渲染核阵列230中的一或多个处理单元执行。
基于上述图3及图4的描述,图5示出了以图4所示的GPU 112的结构所形成的图形渲染管线80的示例,需要说明的是,图形渲染管线80的核心部分是利用渲染核阵列230中所包括的通用渲染核208以及固定功能处理单元231通过级联形成的逻辑结构,此外,对于GPU112中所包括的调度器207、图形存储器204以及I/O单元205,均为实现该图形渲染管线80这一逻辑结构功能的外围电路或装置,相应来说,图形渲染管线80通常包含可编程执行单元(如图5中圆角框示意)和固定功能单元(如图5中方框示意),举例来说,可编程执行单元的功能可由渲染核阵列230中所包括的通用渲染核208来执行,固定功能单元的功能可由固定功能处理单元231实现。如图5所示,图形渲染管线80所包括的各级依次为:顶点抓取模块82、顶点着色器84、图元装配模块86、几何着色器88、裁剪和划分模块90、光栅化模块92、片元着色器94以及输出合并器模块96,以上图形渲染管线80中的各级,其具体功能参见常规GPU中图形渲染管线相关的组成内容,本发明实施例不再赘述。经过上述图形渲染管线80的处理,能够输出像素数据作为经处理的图形数据,该经处理的图形数据可存储在图形存储器204中,用于在显示设备110上显示或用于由CPU 102或GPU 112进一步处理。
针对上述图形渲染管线80,如图5所示,当渲染核阵列230中的一个或部分通用渲染核208被编程并结合固定功能处理单元231以执行图形渲染管线80相关的流程的同时,还会将渲染核阵列230中的一个或部分通用渲染核208被编程以执行独立于图形渲染管线80的并行计算的计算着色器(Compute Shader)42。计算着色器42与图形渲染管线80均能够对GPU 112中图形存储器204内的资源进行调用和写入。
结合上述图3至图5所示以及前述关于计算装置100的阐述,当计算装置100作为服务器需要大批量生成UUID的情况下,具有并行计算功能的GPU 112经配置为基于并行计算生成一组UUID;通用处理器,如CPU 102,可以经配置为响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID。
对于上述技术方案,由于将UUID的生成过程从CPU 102中独立出来,并利用GPU112的并行计算功能进行实现,从而在需要生成UUID的业务场景下相较于目前常规的方案,CPU无需执行生成UUID的过程,而仅需要对已生成的UUID进行读取,从而减少CPU 102的占用时长以及占用资源;此外通过GPU的强大的并行计算能力提高了UUID的生成效率,节省业务高峰期的CPU算力,能够将较多的CPU资源分配至更为重要的业务逻辑处理部分。
对于上述方案,在一些可能的实现方式中,GPU 112经配置为基于计算着色器42的最大可使用的通用渲染核208数量N以及预设的针对单个通用渲染核208的UUID生成算法执行次数M,生成N×M个UUID。对于上述实现方式,具体来说,为了能够充分利用GPU 112的并行计算能力,本发明实施例优选采用图形渲染管线80以外的计算着色器42执行UUID生成算法,利用计算着色器(Compute Shader)42所提供的大规模可编程并行任务的能力,通过获取到GPU 112中最大的用于被编成为计算着色器(Compute Shader)42的通用渲染核208的数量,也就是能够提供并行计算能力的并行单元的最大数量N,接着,每个被编成为计算着色器(Compute Shader)42的通用渲染核208(即每个并行单元)可以预先被设置为执行UUID生成算法的次数M;如此,GPU 112每次被调用以生成UUID的时候,就能够一次性生成一组N×M个UUID。
对于上述实现方式,以UUID生成方案版本4,变体2的生成算法为例,针对用于执行UUID生成算法的计算着色器(Compute Shader)42中的单个通用渲染核208来说,每个通用渲染核208均对应一个本地用于区分其他通用渲染核的标识信息,比如gl_LocalInvocationIndex,该标识信息通常为14bits,可作为UUID的部分字段以模拟一定的随机性;此外,每个通用渲染核208每执行一次UUID生成算法,所生成的UUID结构如图6所示,在该结构中,第一字段部分的值为physical time delta,该数值的单位为秒,表示当前UUID的生成时间减去过去的一个时间点的秒数增量值(通常可以将一个固定值作为过去的时间点直接硬编码到应用程序中,该固定值优选为程序首次上线运行的时间点),具体形式采用UTC时间,共占用32bits以增强唯一性且不需要计算;第二字段部分为random number,表示随机数,共占用64bits,用于增强唯一性,可以通过通用渲染核208执行设定的随机数生成算法(例如图1所示出的XorShift64s算法)进行计算;第三字段部分为前述gl_LocalInvocationIndex,共占用14bits,基于充分考虑了未来不断增多的GPU的通用渲染核的数量,14bits支持最多为16384个GPU中的独立的通用渲染核进行标识,且不需要计算;第四字段部分为计算装置100的机器编号machine id,同样用来增强生成UUID的唯一性,也就是说不同的机器一定不会生成相同的UUID,占用12bits,即最大支持机器4096个,该值可以通过服务启动时指定且不需要计算,可以理解地,在目前常规应用场景下,作为服务器的计算装置100的数量通常为多个(至少成百上千个),因此,machine id可以让这些计算装置100所产生的UUID之间降低重复概率。
依据上述示例,每个通用渲染核208在生成每一个UUID的过程中,都仅需要进行64bits的随机数生成算法,与RFC4122规范中所要求的122bits随机数的生成要求相比,降低了需要进行计算的位数,从而提高了UUID的生成效率。基于上述示例所生成的UUID,根据生日悖论,一秒内单个计算装置100所产生的重复的UUID的概率P是:
可以理解地,上述概率足以支撑现有的秒级生成UUID而不重复的数量的需求。
对于上述方案,在一些可能的实现方式中,为了应对短时高频的并发环境,本发明实施例优选采用双buffer机制为GPU112所生成的UUID进行缓存,举例来说,在系统存储器104和/或图形存储器204中开辟至少两类缓存区buffer,其中一类可被表示为当前使用buffer,另一类可被表示为备用buffer,在服务启动初始时,如实现填充箭头所示,GPU 112通过调度器207触发计算着色器(Compute Shader)42的通用渲染核208生成一组UUID并缓存至当前使用buffer,并且CPU 102用于读取UUID的指针(如实直线箭头所示)指向当前使用buffer;在CPU 102响应于各种类型的请求所生成的分配UUID的指令时,读取当前使用buffer中的UUID分配至目标对象。随着UUID分配的继续进行,当通过调度器207获知当前使用buffer中的已被读取的UUID数量超过当前使用buffer中的UUID总数量的一半时,触发计算着色器(Compute Shader)42的通用渲染核208生成一组UUID并如虚线填充箭头所示缓存至备用buffer。随着UUID分配的继续进行,若检测到当前使用buffer中的UUID全部被读取完毕时,通过将指向当前使用buffer的指针转换为指向备用buffer,如虚直线箭头所示,此时,之前的备用buffer就转变成为当前使用buffer,而之前的当前使用buffer则相应转变为备用buffer,并且此时异步触发计算着色器(Computer Shader)42的通用渲染核208生成一组新的UUID填充到备用buffer中,之后重复上述过程。从而降低了UUID的分配耗时,使得CPU 102需要分配UUID时就能够从缓冲区中读取到UUID进行分配。
对于上述实现方式,需要说明的是,在CPU 102(其也可以存在一个或多个核心)从buffer中读取UUID并进行分配的过程中,由于对buffer的操作特点是多次读取一次写入,即只有向buffer中填充UUID的线程会执行写操作,其余线程只是从buffer中进行读取操作,因此属于一种单生产者,多消费者模型,可以使用无锁技术再次对双buffer机制进行优化。
基于前述技术方案相同的发明构思,参见图8,其示出了本发明实施例提供的一种基于GPU批量生成UUID的方法,该方法应用于前述技术方案中所记载的计算装置100,所述方法包括:
S801:具有并行计算功能的GPU基于并行计算生成一组UUID;
S802:通用处理器响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID。
对于上述技术方案,在一些示例中,所述GPU,包括由多个通用渲染核被编程实现的计算着色器;相应地,所述具有并行计算功能的GPU基于并行计算生成一组UUID,包括:
所述GPU基于所述计算着色器的最大可使用的通用渲染核数量N以及预设的针对单个通用渲染核的UUID生成算法执行次数M,生成N×M个UUID。
对于上述技术方案,在一些示例中,如图6所示,所述UUID的结构包括四个字段部分;其中,第一字段部分为physical time delta,表示当前UUID的生成时间减去过去的一个时间点的秒数增量值,共占用32bits;第二字段部分为random number,表示随机数,共占用64bits;第三字段部分为gl_LocalInvocationIndex,表示每个通用渲染核所对应的本地用于区分其他通用渲染核的标识信息,共占用14bits;第四字段部分为所述计算装置的机器编号machine id,占用12bits。
对于上述技术方案,在一些示例中,每个所述通用渲染核在生成每一个UUID的过程中,仅需执行一次64bits的随机数生成算法。
对于上述技术方案,在一些示例中,所述计算装置还包括在系统存储器和/或图形存储器中所开辟至少两类缓存区buffer;其中,一类被表示为当前使用buffer,另一类被表示为备用buffer;
相应地,所述通用处理器响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID,包括:
在服务启动初始时,通过所述GPU中的调度器触发所述计算着色器的通用渲染核生成一组UUID并缓存至所述当前使用buffer;
在服务启动初始时将所述通用处理器用于读取UUID的指针指向所述当前使用buffer;并在所述通用处理器响应于所述分配UUID的指令时,读取所述当前使用buffer中的UUID分配至目标对象;
当通过所述调度器获知所述当前使用buffer中的已被读取的UUID数量超过所述当前使用buffer中的UUID总数量的一半时,触发所述计算着色器的通用渲染核生成一组UUID并缓存至所述备用buffer;
若检测到所述当前使用buffer中的UUID全部被读取完毕时,通过将所述通用处理器指向所述当前使用buffer的指针转换为指向所述备用buffer,以使得之前的所述备用buffer就转变成为新的当前使用buffer,而之前的所述当前使用buffer则相应转变为新的备用buffer;以及,继续在所述通用处理器响应于所述分配UUID的指令时,读取所述新的当前使用buffer中的UUID分配至目标对象。
此外,还可以同时异步触发所述计算着色器的通用渲染核生成一组新的UUID并缓存至所述新的备用buffer中。
结合前述计算装置100和图8所示的方法流程,以前述图2所示的电子商务进行网上购买时服务器执行订单的流程为例,本发明实施例所提出的技术方案的执行订单流程如图9所示,相较于图2所示的常规方案流程,可以看出,直至CPU需要对订单进行逻辑处理时,与图2所示的流程出现了区别,即CPU通过读取GPU利用计算着色器生成并缓存至buffer中的UUID以识别、区分及追踪各订单后续的逻辑处理和数据库操作。结合图9所示的流程,单次分配UUID的详细实现流程如图10所示。
S1000:GPU通过计算着色器执行UUID生成算法以并行生成一组UUID缓存至图9中实线框所示的当前使用buffer;
S1001:CPU接收需要为订单分配UUID的订单请求;
S1002:CPU检测当前使用buffer中是否存在尚未分配的UUID:若是,则执行S1003:读取当前使用buffer中的UUID分配至对应订单;
否则,转至S1004:检测图9中虚线框所示的备用buffer是否存在尚未分配的UUID:若是,则执行S1005:将CPU用于读取UUID的指针转换为指向所述备用buffer;否则,触发GPU执行S1006:GPU通过计算着色器执行UUID生成算法以并行生成一组UUID缓存至图9中虚线框所示的备用buffer;并执行 S1008:检测是否由于备用buffer无可分配UUID触发生成,若是,则执行 S1005:将CPU用于读取UUID的指针转换为所述备用buffer,并如虚线箭头所示转至执行S1003直至结束;否则直接结束。
S1007:检测当前使用buffer内尚未分配的UUID数量是否小于总UUID数量的一半;若是,则触发GPU执行S1006;否则,结束本次UUID分配流程。
此外,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有基于GPU批量生成UUID的程序,所述基于GPU批量生成UUID的程序被至少一个处理器执行时实现前述技术方案中所述基于GPU批量生成UUID的方法步骤。
可以理解地,上述基于GPU批量生成UUID的方法的示例性技术方案,与前述计算装置100的技术方案属于同一构思,因此,上述对于基于GPU批量生成UUID的方法的技术方案未详细描述的细节内容,均可以参见前述计算装置100的技术方案的描述。本发明实施例对此不做赘述。
需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (9)
1.一种计算装置,其特征在于,所述计算装置包括通用处理器以及具有并行计算功能的图像处理器GPU;其中,
所述GPU,经配置为基于并行计算生成一组UUID;
所述通用处理器,经配置为响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID。
2.根据权利要求1所述的计算装置,其特征在于,所述GPU,包括由多个通用渲染核被编程实现的计算着色器;所述GPU,经配置为基于所述计算着色器的最大可使用的通用渲染核数量N以及预设的针对单个通用渲染核的UUID生成算法执行次数M,生成N×M个UUID。
3.根据权利要求2所述的计算装置,其特征在于,所述UUID的结构包括四个字段部分;其中,第一字段部分为physical time delta,表示当前UUID的生成时间减去过去的一个时间点的秒数增量值,共占用32bits;第二字段部分为random number,表示随机数,共占用64bits;第三字段部分为gl_LocalInvocationIndex,表示每个通用渲染核所对应的本地用于区分其他通用渲染核的标识信息,共占用14bits;第四字段部分为所述计算装置的机器编号machine id,占用12bits。
4.根据权利要求3所述的计算装置,其特征在于,每个所述通用渲染核在生成每一个UUID的过程中,仅需执行一次64bits的随机数生成算法。
5.根据权利要求2所述的计算装置,其特征在于,所述计算装置还包括在系统存储器和/或图形存储器中所开辟至少两类缓存区buffer;其中,一类被表示为当前使用buffer,另一类被表示为备用buffer;
相应地,所述GPU,经配置为在服务启动初始时,通过所述GPU中的调度器触发所述计算着色器的通用渲染核生成一组UUID并缓存至所述当前使用buffer;
所述通用处理器,经配置为在服务启动初始时将用于读取UUID的指针指向所述当前使用buffer;并在所述通用处理器响应于所述分配UUID的指令时,读取所述当前使用buffer中的UUID分配至目标对象。
6.根据权利要求5所述的计算装置,其特征在于,所述GPU,经配置为:当通过所述调度器获知所述当前使用buffer中的已被读取的UUID数量超过所述当前使用buffer中的UUID总数量的一半时,触发所述计算着色器的通用渲染核生成一组UUID并缓存至所述备用buffer;
所述通用处理器,经配置为:若检测到所述当前使用buffer中的UUID全部被读取完毕时,通过将指向所述当前使用buffer的指针转换为指向所述备用buffer,以使得之前的所述备用buffer就转变成为新的当前使用buffer,而之前的所述当前使用buffer则相应转变为新的备用buffer;
以及,继续在所述通用处理器响应于所述分配UUID的指令时,读取所述新的当前使用buffer中的UUID分配至目标对象。
7.一种基于GPU批量生成UUID的方法,其特征在于,所述方法应用于权利要求1至6任一项所述的计算装置,所述方法包括:
具有并行计算功能的图像处理器GPU基于并行计算生成一组通用唯一识别码UUID;
通用处理器响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID。
8.根据权利要求7所述的方法,其特征在于,所述通用处理器响应于分配UUID的指令从已生成的UUID组中为目标对象分配对应的UUID,包括:
在服务启动初始时,通过所述GPU中的调度器触发所述计算着色器的通用渲染核生成一组UUID并缓存至所述当前使用buffer;
在服务启动初始时将所述通用处理器用于读取UUID的指针指向所述当前使用buffer;并在所述通用处理器响应于所述分配UUID的指令时,读取所述当前使用buffer中的UUID分配至目标对象;
当通过所述调度器获知所述当前使用buffer中的已被读取的UUID数量超过所述当前使用buffer中的UUID总数量的一半时,触发所述计算着色器的通用渲染核生成一组UUID并缓存至所述备用buffer;
若检测到所述当前使用buffer中的UUID全部被读取完毕时,通过将所述通用处理器指向所述当前使用buffer的指针转换为指向所述备用buffer,以使得之前的所述备用buffer就转变成为新的当前使用buffer,而之前的所述当前使用buffer则相应转变为新的备用buffer;以及,继续在所述通用处理器响应于所述分配UUID的指令时,读取所述新的当前使用buffer中的UUID分配至目标对象。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有基于GPU批量生成UUID的程序,所述基于GPU批量生成UUID的程序被至少一个处理器执行时实现权利要求7或8所述基于GPU批量生成UUID的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210361838.8A CN114492319A (zh) | 2022-04-07 | 2022-04-07 | 基于gpu批量生成uuid的方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210361838.8A CN114492319A (zh) | 2022-04-07 | 2022-04-07 | 基于gpu批量生成uuid的方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114492319A true CN114492319A (zh) | 2022-05-13 |
Family
ID=81489012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210361838.8A Pending CN114492319A (zh) | 2022-04-07 | 2022-04-07 | 基于gpu批量生成uuid的方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114492319A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107563080A (zh) * | 2017-09-11 | 2018-01-09 | 湖南大学 | 基于gpu的两相介质随机模型并行生成方法、电子设备 |
CN110674526A (zh) * | 2019-09-30 | 2020-01-10 | 深圳前海微众银行股份有限公司 | 异步加密实现方法、装置、设备及可读存储介质 |
CN113805845A (zh) * | 2020-06-11 | 2021-12-17 | 华为技术有限公司 | 随机数序列生成方法和随机数引擎 |
-
2022
- 2022-04-07 CN CN202210361838.8A patent/CN114492319A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107563080A (zh) * | 2017-09-11 | 2018-01-09 | 湖南大学 | 基于gpu的两相介质随机模型并行生成方法、电子设备 |
CN110674526A (zh) * | 2019-09-30 | 2020-01-10 | 深圳前海微众银行股份有限公司 | 异步加密实现方法、装置、设备及可读存储介质 |
CN113805845A (zh) * | 2020-06-11 | 2021-12-17 | 华为技术有限公司 | 随机数序列生成方法和随机数引擎 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10877757B2 (en) | Binding constants at runtime for improved resource utilization | |
US20120110586A1 (en) | Thread group scheduler for computing on a parallel thread processor | |
US20110141122A1 (en) | Distributed stream output in a parallel processing unit | |
CN111737019B (zh) | 一种显存资源的调度方法、装置及计算机存储介质 | |
US7876328B2 (en) | Managing multiple contexts in a decentralized graphics processing unit | |
US8595437B1 (en) | Compression status bit cache with deterministic isochronous latency | |
CN112801855B (zh) | 基于图元的渲染任务调度的方法、装置及存储介质 | |
JP5969145B1 (ja) | コマンド命令管理 | |
CN111209116B (zh) | 一种分配显存空间的方法、装置及计算机存储介质 | |
CN104508638A (zh) | 多核心处理系统中的高速缓冲存储器数据迁移 | |
CN110223216B (zh) | 一种基于并行plb的数据处理方法、装置及计算机存储介质 | |
US8195858B1 (en) | Managing conflicts on shared L2 bus | |
CN114972607A (zh) | 加速图像显示的数据传输方法、装置及介质 | |
CN111080761B (zh) | 一种渲染任务的调度方法、装置及计算机存储介质 | |
CN110050294A (zh) | 对压缩资源的着色器写入 | |
US9934145B2 (en) | Organizing memory to optimize memory accesses of compressed data | |
CN114880259A (zh) | 数据处理方法、装置、系统、电子设备及存储介质 | |
US10402323B2 (en) | Organizing memory to optimize memory accesses of compressed data | |
US8321618B1 (en) | Managing conflicts on shared L2 bus | |
JP2023525725A (ja) | データ圧縮の方法及び装置 | |
US10235208B2 (en) | Technique for saving and restoring thread group operating state | |
CN114492319A (zh) | 基于gpu批量生成uuid的方法、装置及介质 | |
US20220188380A1 (en) | Data processing method and apparatus applied to graphics processing unit, and electronic device | |
US8307165B1 (en) | Sorting requests to the DRAM for high page locality | |
US20140136793A1 (en) | System and method for reduced cache mode |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220513 |
|
RJ01 | Rejection of invention patent application after publication |