CN116048759A - 数据流的数据处理方法、装置、计算机和存储介质 - Google Patents
数据流的数据处理方法、装置、计算机和存储介质 Download PDFInfo
- Publication number
- CN116048759A CN116048759A CN202310031867.2A CN202310031867A CN116048759A CN 116048759 A CN116048759 A CN 116048759A CN 202310031867 A CN202310031867 A CN 202310031867A CN 116048759 A CN116048759 A CN 116048759A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- nodes
- task
- processor
- 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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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
- G06F9/505—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 considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明公开一种数据流的数据处理方法,包括:本发明实施例由操作***从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。本发明实施例在操作***层面给出了数据流执行模式的支撑方法,使其效率和可优化空间得到了极大的提升。
Description
技术领域
本发明属于数据处理技术领域,尤其是一种数据流的数据处理方法、装置、计算机和存储介质。
背景技术
目前处理器的发展方向已经从单纯提高处理器运行速度的方向向多核处理器的方向发展,大型分布式***也越来越普遍。传统上程序设计采用顺序执行命令的结构进行编程,在该种模式下数据往往是“静态“的,不断的对数据进行存取的操作。使得程序对于多核处理器以及大型分布式***的支持不是特别好。而数据流编程强调以数据为驱动动力,明确定义输入以及输出的连接操作。不采用命令的方式,每当数据准备好即输入有效,相关操作就会立即执行,所以数据流编程本质是并行的,可以很好的运行在多核处理器以及大型分布式***。
当前大规模并行的应用背景下,数据流计算在编程模式和执行模式都优于现有的主流的控制流执行模式。在当前仍是控制流的处理器环境下,虽然也能在应用层面实现数据流执行模式,例如Tensorf l ow的内部执行引擎就是按数据流执行模式来处理任务的执行。也有一些专用的数据流库(例如Taskf l ow)在现有的控制流处理器、控制流操作***和控制流编程语言的环境下,实现数据流执行模式。
但是由于操作***层面并没有给与支持,因此其效率和可优化空间都有很大的局限性。
发明内容
为解决上述技术问题,本发明创造的实施例提供一种数据流的数据处理方法,包括:
操作***从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;
根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;
依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。
进一步地,所述根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程,包括:
对所述依赖关系DAG图中所述节点任务的就绪节点按照边的数量由多到少进行排序,并将节点任务分配给位于首位且在线的就绪节点的线程。
进一步地,所述依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度,包括:
对每一个处理器中的任务数据量进行统计得到对应处理器上的总任务数据量;
根据预设的调度算法进行预调度将任务逐个调度到各个处理器上;
根据预调度结果和所述总任务量计算所有处理器的总延迟估计;
对各种预调度结果进行评估,将所述就绪节点任务的线程绑定在总延迟估计最小的预调度处理器上进行数据处理。
进一步地,所述根据预调度结果和所述总任务量计算所有处理器的总延迟估计,包括:
计算所述节点任务在所述依赖关系DAG图上的边的数据传送时间估值Wedge=所有输入数据从前趋节点所在NUMA节点拷贝到本处理器所在的NUMA节点的时间之和;
获取每个处理器核上的节点任务的总数据容量和末级cache容量份额得到总数据容量和cache的比值k;
计算每个处理核的总延迟估计Td=Wedge+总数据容量*k*λ,其中,λ为经验值。
进一步地,剩余未分配线程的节点为离线就绪节点和离线直接后续节点,还包括:
在线阻塞节点的就绪状态由操作***根据所述PCB中的先后依赖关系进行跟踪,所述离线直接后续节点的就绪状态由用户代码或用户态运行库提供状态进行跟踪支持。
一种数据流的数据处理装置,包括:
获取模块,用于从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;
处理模块,用于根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;
执行模块,用于依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。
进一步地,所述处理模块,还用于对所述依赖关系DAG图中所述节点任务的就绪节点按照边的数量由多到少进行排序,并将节点任务分配给位于首位且在线的就绪节点的线程。
进一步地,所述执行模块包括:
第一获取子模块,用于对每一个处理器中的任务数据量进行统计得到对应处理器上的总任务数据量;
第一处理子模块,用于根据预设的调度算法进行预调度将任务逐个调度到各个处理器上;
第二处理子模块,用于根据预调度结果和所述总任务量计算所有处理器的总延迟估计;
第一执行子模块,用于对各种预调度结果进行评估,将所述就绪节点任务的线程绑定在总延迟估计最小的预调度处理器上进行数据处理。
进一步地,所述第一执行子模块包括:
第二获取子模块,用于计算所述节点任务在所述依赖关系DAG图上的边的数据传送时间估值Wedge=所有输入数据从前趋节点所在NUMA节点拷贝到本处理器所在的NUMA节点的时间之和;
第三获取子模块,用于获取每个处理器核上的节点任务的总数据容量和末级cache容量份额得到总数据容量和cache的比值k;
第二执行子模块,用于计算每个处理核的总延迟估计Td=Wedge+总数据容量*k*λ,其中,λ为经验值。
进一步地,剩余未分配线程的节点为离线就绪节点和离线直接后续节点,所述执行模块,还用于根据所述PCB中的先后依赖关系跟踪在线阻塞节点的就绪状态,所述离线直接后续节点的就绪状态由用户代码或用户态运行库提供状态进行跟踪支持。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如上所述数据流的数据处理方法的步骤。
一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上所述数据流的数据处理方法的步骤。
本发明实施例由操作***从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。本发明实施例在操作***层面给出了数据流执行模式的支撑方法,使其效率和可优化空间得到了极大的提升。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据流的数据处理方法的流程示意图;
图2为本发明实施例提供的数据流的示意图;
图3为本发明实施例提供的数据流的数据处理装置基本结构框图;
图4为本发明实施例提供的计算机设备基本结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,图1为本发明实施例提供一种数据流的数据处理方法,如图1所示,该方法具体包括如下步骤:
S1、操作***从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;
数据流编程是一种解决多核处理器的效率利用问题的高性能并行编程模型。数据流编程与传统编程语言有着明显区别,它通过数据驱动的方式执行,将需要处理的数据分配到各个核上,将数据的计算与通信相分离,通过任务调度与分配,利用软件流水的并行特性来充分的挖掘流程序中潜在的并行性,使各个核之间负载均衡。在数据流范例中,一个数据流程序的静态实例会按照它的结构被描述成一张有向图DAG。如图2所示,图中节点表示计算单元,边代表数据传输路径。相邻节点间通过边传输数据,节点消耗数据进行计算,并将产生的数据输出到输入输出序列作为下一个计算单元的输入。
需要说明的是,本发明实施例将数据流任务以DAG有向无循环图的方式管理整个数据流计算任务。以线程为载体执行数据流任务,修改进程控制块PCB的信息,增加一些字段用于数据流任务之间的先后依赖关系,增加一些字段用于记录输出边对应的数据的大小(字节数),增加一个字段用于记录该任务所需的堆栈中的栈帧长度,增加一个数据流任务节点的数据准备条件计数,增加一个数据流任务激活标志。
S2、根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;
具体地,步骤S2具体为对所述依赖关系DAG图中所述节点任务的就绪节点按照边的数量由多到少进行排序,并将节点任务分配给位于首位且在线的就绪节点的线程。
操作***为各个处理器核统计其正在运行的节点任务,将这些任务所需的输出边的数据大小和任务所需的栈帧长度求和得出总数据容量。各个核上统计上述总数据容量,用于新任务调度依据。其中,从所述DAG有向图终统计所述当前处理中数据的节点任务,并统计所有处理器核上执行所述节点任务的总数据容量,包括:
步骤一、从所述DAG有向图中查找与所述当前处理中数据所在的目标节点关联的当前就绪节点;
步骤二、对所述目标节点和所述当前就绪节点之间边的数据大小和所需的栈帧长度求和得出每个所述处理器核的总数据容量。
S3、依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。
具体地,步骤S3包括以下步骤:
步骤一、对每一个处理器中的任务数据量进行统计得到对应处理器上的总任务数据量;
步骤二、根据预设的调度算法进行预调度将任务逐个调度到各个处理器上;
步骤三、根据预调度结果和所述总任务量计算所有处理器的总延迟估计;
在实际应用,步骤三包括:计算所述节点任务在所述依赖关系DAG图上的边的数据传送时间估值Wedge=所有输入数据从前趋节点所在NUMA节点拷贝到本处理器所在的NUMA节点的时间之和;获取每个处理器核上的节点任务的总数据容量和末级cache容量份额得到总数据容量和cache的比值k;计算每个处理核的总延迟估计Td=Wedge+总数据容量*k*λ,其中,λ为经验值。
其中,当存在多个核时,每个处理器核上的节点任务的总数据容量和末级cache容量份额需要均分。
本发明的一个实施例,从该节点任务的控制块PCB获得前驱关系和相应的数据大小、处理器核间通信代价的差异、各处理器核的末级cache容量,以及上述由该节点任务前驱节点输出边的数据大小、本节点输出边数据的大小和本节点任务的栈帧长度之总和的总数据容量。对所有的处理器核进行遍历,得到每个处理器核上节点任务的总数据容量和末级cache容量,得到总数据容量和cache的比值k。
本发明的一个实施例,例如在Li nux内核中,对于线程控制块task_struct{}结构体增加一个结构体成员
pre-suc{i nt pre_count;//前趋节点个数
struct pre-suc*prenodes[];//前驱节点指针数组i nt suc_count;//后继节点个数
struct suc-suc*sucnodes[];//后继节点指针数组
};
在task_struct中增加一个本节点任务所需的栈帧长度:
i nt frame_s i ze;//本节点任务所需的栈帧长度
在task_struct中增加一个本节点的数据准备条件,以及是否激活的标志:
I nt data_ready_count;//用于记录前趋数据中已经准备好的个数
i nt act i vated;//当data_ready_count=pre_count时,激活
在操作***内核中,增加每个CPU上的数据流任务数据开销:
i nt current_s i ze[CPUs];//每个CPU核独自计数
current_s i ze[n]记录了编号为n的处理器核上所有数据流任务的数据开销总和,包括多个输出边数据、栈帧长度的总和。
以图2所示的数据流任务为例:
当a任务完成计算后,将会更新c任务的task_struct相关信息:对记录前趋数据中已经准备好的个数data_ready_count增一,如果data_ready_count=pre_count时,激活该任务令act ivated=1。同理对f任务执行上述相同的操作。
如果此时c任务激活了,利用本专利新增的数据来实现调度。可行的调度方案示例如下。
假设将c任务调度到处理器i,然后计算:计算DAG图边上的数据传送时间估值Wedge。计算处理器核i上的数据和任务c的数据总容量,得到数据总容量和cache的比值k。计算总延迟估计Td=Wedge+c数据总容量*k*λ,其中λ为经验值,通过统计得到(例如单位:1微秒/kB)。对所有处理器核进行遍历,逐个完成上述计算,挑选Td最低的核m,将任务c调度到核m上运行。
步骤四、对各种预调度结果进行评估,将所述就绪节点任务的线程绑定在总延迟估计最小的预调度处理器上进行数据处理。
本发明实施例中,剩余未分配线程的节点为离线就绪节点和离线直接后续节点,其中,在线阻塞节点的就绪状态由操作***根据所述PCB中的先后依赖关系进行跟踪,所述离线直接后续节点的就绪状态由用户代码或用户态运行库提供状态进行跟踪支持。
本发明实施例由操作***从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。本发明实施例在操作***层面给出了数据流执行模式的支撑方法,使其效率和可优化空间得到了极大的提升。
如图3所示,为了解决上述问题,本发明实施例还提供一种数据流的数据处理装置,包括:取模块2100、处理模块2200和执行模块2300,其中,获取模块2100,用于获取模块,用于操作***从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;处理模块2200,用于根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;执行模块2300,用于依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。
在一些实施方式中,所述处理模块,还用于对所述依赖关系DAG图中所述节点任务的就绪节点按照边的数量由多到少进行排序,并将节点任务分配给位于首位且在线的就绪节点的线程。
在一些实施方式中,所述执行模块包括:第一获取子模块,用于对每一个处理器中的任务数据量进行统计得到对应处理器上的总任务数据量;第一处理子模块,用于根据预设的调度算法进行预调度将任务逐个调度到各个处理器上;第二处理子模块,用于根据预调度结果和所述总任务量计算所有处理器的总延迟估计;第一执行子模块,用于对各种预调度结果进行评估,将所述就绪节点任务的线程绑定在总延迟估计最小的预调度处理器上进行数据处理。
在一些实施方式中,所述第一执行子模块包括:第二获取子模块,用于计算所述节点任务在所述依赖关系DAG图上的边的数据传送时间估值Wedge=所有输入数据从前趋节点所在NUMA节点拷贝到本处理器所在的NUMA节点的时间之和;第三获取子模块,用于获取每个处理器核上的节点任务的总数据容量和末级cache容量份额得到总数据容量和cache的比值k;第二执行子模块,用于计算每个处理核的总延迟估计Td=Wedge+总数据容量*k*λ,其中,λ为经验值。
在一些实施方式中,剩余未分配线程的节点为离线就绪节点和离线直接后续节点,所述执行模块,还用于根据所述PCB中的先后依赖关系跟踪在线阻塞节点的就绪状态,所述离线直接后续节点的就绪状态由用户代码或用户态运行库提供状态进行跟踪支持。
本发明实施例中数据流的数据处理装置从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。本发明实施例在操作***层面给出了数据流执行模式的支撑方法,使其效率和可优化空间得到了极大的提升。
为解决上述技术问题,本发明实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
如图4所示,计算机设备的内部结构示意图。如图4所示,该计算机设备包括通过***总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作***、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种图像处理方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种图像处理方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图3中获取模块2100、处理模块2200和执行模块2300的具体内容,存储器存储有执行上述模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有图像处理方法中执行所有子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
本发明实施例提供的计算机设备,由操作***从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。本发明实施例在操作***层面给出了数据流执行模式的支撑方法,使其效率和可优化空间得到了极大的提升。
本发明还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例所述图像处理方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据流的数据处理方法,包括:
操作***从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;
根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;
依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。
2.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程,包括:
对所述依赖关系DAG图中所述节点任务的就绪节点按照边的数量由多到少进行排序,并将节点任务分配给位于首位且在线的就绪节点的线程。
3.根据权利要求1所述的数据处理方法,其特征在于,所述依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度,包括:
对每一个处理器中的任务数据量进行统计得到对应处理器上的总任务数据量;
根据预设的调度算法进行预调度将任务逐个调度到各个处理器上;
根据预调度结果和所述总任务量计算所有处理器的总延迟估计;
对各种预调度结果进行评估,将所述就绪节点任务的线程绑定在总延迟估计最小的预调度处理器上进行数据处理。
4.根据权利要求3所述的数据处理方法,其特征在于,所述根据预调度结果和所述总任务量计算所有处理器的总延迟估计,包括:
计算所述节点任务在所述依赖关系DAG图上的边的数据传送时间估值Wedge=所有输入数据从前趋节点所在NUMA节点拷贝到本处理器所在的NUMA节点的时间之和;
获取每个处理器核上的节点任务的总数据容量和末级cache容量份额得到总数据容量和cache的比值k;
计算每个处理核的总延迟估计Td=Wedge+总数据容量*k*λ,其中,λ为经验值。
5.根据权利要求1所述的数据处理方法,其特征在于,剩余未分配线程的节点为离线就绪节点和离线直接后续节点,还包括:
在线阻塞节点的就绪状态由操作***根据所述PCB中的先后依赖关系进行跟踪,所述离线直接后续节点的就绪状态由用户代码或用户态运行库提供状态进行跟踪支持。
6.一种数据流的数据处理装置,其特征在于,包括:
获取模块,用于从程序的进程块PCB中获取节点任务的依赖关系DAG图以及数据通信量,其中,所述依赖关系DAG图中的节点表示所述节点任务,连接所述依赖关系DAG图节点的边表示所述节点任务的传输数量和数据量;
处理模块,用于根据所述依赖关系DAG图中的就绪节点、直接后续节点和***线程总量为节点任务分配线程;
执行模块,用于依据当前处理器的***负载、节点任务通信关系和通信量对线程进行调度。
7.根据权利要求6所述的数据处理装置,其特征在于,
所述处理模块,还用于对所述依赖关系DAG图中所述节点任务的就绪节点按照边的数量由多到少进行排序,并将节点任务分配给位于首位且在线的就绪节点的线程。
8.根据权利要求6所述的数据处理装置,其特征在于,所述执行模块包括:
第一获取子模块,用于对每一个处理器中的任务数据量进行统计得到对应处理器上的总任务数据量;
第一处理子模块,用于根据预设的调度算法进行预调度将任务逐个调度到各个处理器上;
第二处理子模块,用于根据预调度结果和所述总任务量计算所有处理器的总延迟估计;
第一执行子模块,用于对各种预调度结果进行评估,将所述就绪节点任务的线程绑定在总延迟估计最小的预调度处理器上进行数据处理。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至5中任一项权利要求所述的数据流的数据处理方法的步骤。
10.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至5中任一项权利要求所述的数据流的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310031867.2A CN116048759A (zh) | 2023-01-10 | 2023-01-10 | 数据流的数据处理方法、装置、计算机和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310031867.2A CN116048759A (zh) | 2023-01-10 | 2023-01-10 | 数据流的数据处理方法、装置、计算机和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116048759A true CN116048759A (zh) | 2023-05-02 |
Family
ID=86121503
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310031867.2A Pending CN116048759A (zh) | 2023-01-10 | 2023-01-10 | 数据流的数据处理方法、装置、计算机和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116048759A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421052A (zh) * | 2023-11-02 | 2024-01-19 | 深圳大学 | 数据流任务的硬件自动化执行方法、***、设备及介质 |
-
2023
- 2023-01-10 CN CN202310031867.2A patent/CN116048759A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117421052A (zh) * | 2023-11-02 | 2024-01-19 | 深圳大学 | 数据流任务的硬件自动化执行方法、***、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114741207B (zh) | 一种基于多维度组合并行的gpu资源调度方法和*** | |
CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
CN105468439B (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 | |
JPH09171503A (ja) | 並列処理方法および並列処理装置 | |
CN115543639A (zh) | 分布式执行深度学习任务的优化方法和分布式*** | |
Deng et al. | A data and task co-scheduling algorithm for scientific cloud workflows | |
KR20220145848A (ko) | 집적 회로 아키텍처 내에서 최적화된 데이터흐름을 위한 지능형 버퍼 추적 시스템 및 방법 | |
Rauchecker et al. | Using high performance computing for unrelated parallel machine scheduling with sequence-dependent setup times: Development and computational evaluation of a parallel branch-and-price algorithm | |
CN115269204B (zh) | 一种用于神经网络编译的内存优化方法及装置 | |
CN116048759A (zh) | 数据流的数据处理方法、装置、计算机和存储介质 | |
CN115016938A (zh) | 一种基于强化学习的计算图自动划分方法 | |
US20040093477A1 (en) | Scalable parallel processing on shared memory computers | |
CN108108242B (zh) | 基于大数据的存储层智能分发控制方法 | |
CN114217930A (zh) | 一种基于混合任务调度的加速器***资源优化管理方法 | |
CN116069480B (zh) | 一种处理器及计算设备 | |
CN116841710A (zh) | 任务调度方法、任务调度***及计算机存储介质 | |
Konovalov et al. | Job control in heterogeneous computing systems | |
Li et al. | Performance modelling and cost effective execution for distributed graph processing on configurable VMs | |
Anderson et al. | Value-maximizing deadline scheduling and its application to animation rendering | |
Wang et al. | On optimal budget-driven scheduling algorithms for MapReduce jobs in the hetereogeneous cloud | |
Roh et al. | Generation and quantitative evaluation of dataflow clusters | |
Bensaleh et al. | Optimal task scheduling for distributed cluster with active storage devices and accelerated nodes | |
Sun et al. | Schedulability Analysis of Non-preemptive Sporadic Gang Tasks on Hardware Accelerators | |
Okamura et al. | DAG scheduling considering parallel execution for high-load processing on clustered many-core processors | |
CN114860417B (zh) | 多核神经网络处理器及用于该处理器多任务分配调度方法 |
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 |