WO2023201893A1 - 一种计算任务调度方法、装置、电子设备及可读存储介质 - Google Patents
一种计算任务调度方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- WO2023201893A1 WO2023201893A1 PCT/CN2022/102769 CN2022102769W WO2023201893A1 WO 2023201893 A1 WO2023201893 A1 WO 2023201893A1 CN 2022102769 W CN2022102769 W CN 2022102769W WO 2023201893 A1 WO2023201893 A1 WO 2023201893A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- task
- network
- target
- network layer
- data
- 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.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
Definitions
- the present application relates to the field of neural network technology, and in particular to a computing task scheduling method, a computing task scheduling device, electronic equipment and a computer-readable storage medium.
- the artificial intelligence acceleration engine is an accelerated computing component specially designed for deep learning algorithms.
- the convolutional neural network structure Convolutional Neural Networks, CNN commonly used in deep learning algorithms usually contains multiple convolution combination layers. Each convolution The combined layer also includes small layers such as convolution, activation, and pooling. Convolutional combination layers are used to extract different features in images.
- a CNN usually contains dozens or even hundreds of convolutional combination layers.
- This application provides a computing task scheduling method, which is applied to the task scheduler.
- the method includes:
- network description data is used to describe the network layer tasks corresponding to each network layer in the target neural network
- each functional module on the artificial intelligence accelerated computing component corresponds to at least two register groups
- the network describes the data generation process, including:
- generate network description data based on the target neural network and hardware architecture description data including:
- the optimization graph is compiled and processed to obtain network description data.
- generate network description data based on the target neural network and hardware architecture description data including:
- detect free register groups on the artificial intelligence accelerated computing component including:
- detect free register groups on the artificial intelligence accelerated computing component including:
- the free register group corresponding to the second functional module is determined; wherein the free register group is one of the two ping-pong register groups corresponding to the second functional module.
- a target register configuration based on dependencies, network description data, and free register group types including:
- the target register configuration is generated using the candidate descriptor data and the hardware architecture description data corresponding to the artificial intelligence accelerated computing component.
- determine the next task of the target network layer task completion notification corresponding to the target network layer task based on the dependency relationship including:
- the target subsequent task whose execution wait minus one is zero is determined as the next task.
- each target function module is enabled, so that the enabled target function module performs data calculation preparation operations based on the corresponding non-idle register group.
- This application also provides a computing task scheduling device, which is applied to the task scheduler.
- the device includes:
- the network description acquisition module is used to obtain network description data; the network description data is used to describe the network layer tasks corresponding to each network layer in the target neural network;
- the dependency determination module is used to determine the dependencies between tasks in each network layer based on network description data
- An idle detection module is used to detect idle register groups on the artificial intelligence accelerated computing component; each functional module on the artificial intelligence accelerated computing component corresponds to at least two register groups;
- a register configuration module used to generate a target register configuration based on dependencies, network description data and free register group types, and write the target register configuration to the free register group;
- a startup module configured to respond to detecting the target network layer task completion notification, determine the next task of the target network layer task corresponding to the target network layer task completion notification based on the dependency relationship, and correspond the next task on the artificial intelligence accelerated computing component
- the first functional module is started to perform the next task.
- This application also provides an electronic device, including a memory and one or more processors.
- Computer-readable instructions are stored in the memory.
- the one or more processors cause Execute the steps of the above computing task scheduling method.
- the present application also provides one or more non-volatile computer-readable storage media storing computer-readable instructions, wherein the computer-readable instructions, when executed by one or more processors, cause one or more processes to The processor executes the steps of the calculation task scheduling method.
- Figure 1 is a schematic diagram of the hardware architecture of an AI engine provided by one or more embodiments of the present application;
- Figure 2 is a flow chart of a computing task scheduling method provided by one or more embodiments of the present application.
- Figure 3 is a hardware architecture description data structure diagram of an AI acceleration device provided by one or more embodiments of the present application.
- Figure 4 is a data structure diagram of an AI engine provided by one or more embodiments of the present application.
- Figure 5 is a data structure diagram of engine task data provided by one or more embodiments of the present application.
- Figure 6 is a data structure diagram of engine configuration data provided by one or more embodiments of the present application.
- Figure 7 is a flow chart of a network description data generation process provided by one or more embodiments of the present application.
- Figure 8 is a data structure diagram of network description data provided by one or more embodiments of the present application.
- Figure 9 is a data structure diagram of functional module description data provided by one or more embodiments of the present application.
- Figure 10 is a data structure diagram of dependent description data provided by one or more embodiments of the present application.
- Figure 11 is a data structure diagram of functional module description data provided by one or more embodiments of the present application.
- Figure 12A is the first part of a data structure diagram of register description data provided by one or more embodiments of the present application.
- Figure 12B is the second part of a data structure diagram of register description data provided by one or more embodiments of the present application.
- Figure 13A is a data structure diagram of an input and output mode description data provided by one or more embodiments of the present application.
- Figure 13B is a specific data structure diagram of convolution data description data provided by one or more embodiments of the present application.
- Figure 13C is a specific data structure diagram of activation data description data provided by one or more embodiments of the present application.
- Figure 14 is a schematic diagram of a convolutional neural network inference process provided by one or more embodiments of the present application.
- Figure 15 is a specific task scheduling flow chart provided by one or more embodiments of the present application.
- Figure 16 is a specific interrupt processing flow chart provided by one or more embodiments of the present application.
- Figure 17 is a schematic structural diagram of a computing task scheduling device provided by one or more embodiments of the present application.
- Figure 18 is a schematic structural diagram of an electronic device provided by one or more embodiments of the present application.
- Artificial intelligence acceleration engine (or artificial intelligence acceleration component, AI Engine) is an accelerated computing component specially designed for deep learning algorithms.
- the convolutional neural network structure commonly used in deep learning algorithms usually contains multiple convolution combination layers, each volume
- the product combination layer also includes small layers such as convolution, activation, and pooling.
- Convolutional combination layers are used to extract different features in images.
- a CNN usually contains dozens or even hundreds of convolutional combination layers.
- the general structure of a task-based AI acceleration engine is shown in Figure 1, including: interface bus AXI (Advanced eXtensible Interface) and APB (Advanced Peripheral Bus, peripheral bus), reading and writing external The DMA (Direct Memory Access, memory direct access controller) module of the storage medium, the local cache buffer module, the Data Loader module for parallel data loading, status monitoring (i.e. Status Collector) and interrupt controller (i.e. Interrupt Controller), which are responsible for calculations MAC unit (or called multiplication and addition calculation module, a kind of functional module), Activation unit (also called activation processing module, a kind of functional module), Pooling unit (also called pooling processing module, a kind of functional module) kind). In addition, it can also include data reshape module, normalization module, etc.
- AXI Advanced eXtensible Interface
- APB Advanced Peripheral Bus, peripheral bus
- the DMA Direct Memory Access, memory direct access controller
- the DMA Direct Memory Access, memory direct access controller
- Registers i.e. registers, or register groups
- Controllers can exist in many ways.
- Figure 1 shows a centralized controller.
- it can also be a decentralized controller, that is, each controller is located inside each module.
- These modules are all mounted on the APB or connected in a daisy chain. .
- the Status Collector monitors the information of each module, such as buffer free space size, operating status of each module, number of read and write data, blocking time or idle time, etc., and provides Interrupt Controller with interrupt pending of each module, such as DMA reading data completion Interrupt pending, MAC Unit calculation completes interrupt pending, Activation activation completes interrupt pending, Pooling completes interrupt pending, etc.
- the interrupt pending register is set in the Interrupt Controller.
- Each bit of the pending register maps to represent the pending signal of each functional module.
- the interrupt mask register and the interrupt enable register are also set. When the interrupt is enabled and the interrupt is not masked, when the pending bit is 1, the interrupt signal Intr is generated. Specifically, which module of the AI engine completed the task and generated an interrupt, which can be determined by querying the pending register. It can be seen that the process of calling the AI acceleration engine to accelerate calculations is a process of constantly configuring registers and waiting for interrupts.
- a CNN network has dozens or hundreds of combination layers. If the calculation amount of a single combination layer exceeds the computing power of the AI acceleration engine, a single combination layer needs to be split into multiple sub-combination layers. Each combination layer may include load data, multiplication and addition operations, activation, pooling, normalization, fusion and other operations. Multiple modules need to be called to complete the computing tasks of a combination layer. It can be seen that to complete a CNN inference task, each module needs to complete hundreds or thousands of tasks, and each module needs to cooperate with each other.
- each functional module needs to be calculated in parallel as much as possible, and each computing task is processed in the form of an assembly line (i.e., pipeline).
- assembly line i.e., pipeline
- this application designs a task scheduler, which can be used to schedule tasks on the AI engine so that the AI engine can calculate efficiently.
- This embodiment does not limit the specific form of the task scheduler.
- the role of the task scheduler can be played by a processor in an AI device (artificial intelligence accelerated computing device), and the AI device can have any number of processors.
- AI engine each AI engine can correspond to a processor, or multiple AI engines can correspond to a processor.
- the task scheduler can have the following characteristics:
- the combination and pipeline of each module within the AI engine The combination and pipeline order of each module in each layer of CNN are different.
- the functions implemented by each module are different, and the internal registers that need to be configured are also different.
- the configuration methods of different functional modules are also different. Therefore, the task scheduler should be able to automatically switch the modules that need to be configured according to any CNN network structure. It also needs to implement different configuration methods and switch synchronously with the modules.
- the configuration of a certain functional module is usually configured during the operation of the previous layer of the CNN or other functional modules. When it is the module's turn to execute Enable again. That is, the configuration logic of the module is not related to the enable logic of the module.
- two layers of CNN are both a combination of convolution + activation + pooling.
- the current layer performs operations, it configures the configuration required for the next layer's operation. This mechanism allows the operation and configuration to be performed at the same time, saving configuration time. After the operation of the current layer is completed, the operation of the next layer starts directly, so that the module runs continuously and improves the module operation efficiency.
- each functional module in this application corresponds to at least two sets of configuration registers, that is, two register sets.
- each module is enabled in sequence.
- the pooling module needs to be enabled first, then the activation module, and finally the convolution module. That is, the modules to be executed later are enabled first, so that subsequent modules can be enabled in advance. Be prepared to receive the operation results of the previous modules, otherwise data loss will occur.
- module configuration and module enablement are two sets of unrelated logic. This mechanism effectively implements the pipeline between modules, and the task scheduler should be able to support this kind of scheduling.
- the essence of the program is logic and data. Therefore, the task scheduler should be able to use data to describe each process node involved in the task scheduling process, such as input/output data, CNN structure, each functional module of the AI engine, and AI Describe the tasks of the engine, the operations of each step, the connections between the modules of the AI engine, and the enabling logic of the modules.
- the working process of the task scheduler can be summarized as: configuration register-->module operation-->execution is completed and an interrupt is generated.
- the AI engine uses each functional module to work according to the control of the task scheduler.
- the process is: read task data-->initialize all available modules-->update module enable sequence-->enable sequence is 0.
- specific steps will be described subsequently.
- Figure 2 is a flow chart of a computing task scheduling method provided by an embodiment of the present application.
- the method includes:
- the network description data is used to describe the network layer tasks corresponding to each network layer in the target neural network.
- the network layer task refers to the task of performing inference calculations on the network layer.
- the network description data is affected by the network structure of the neural network and the hardware structure of the AI engine.
- the network description data may be obtained from other electronic devices or may be generated by an electronic device with a task scheduler.
- the hardware architecture of the artificial intelligence accelerated computing component is first determined, and based on the hardware architecture, corresponding hardware architecture description data is generated.
- generation rules may be preset, and after the hardware architecture is obtained, the hardware architecture description data is generated based on the generation rules.
- preset hardware architecture description data corresponding to various hardware architectures may be pre-stored, and after the hardware architecture is determined, the corresponding hardware architecture description data is determined therefrom.
- Figure 3 shows the hardware architecture description data of an AI Device, which includes the device_config configuration data required for initialization, the pointer AI_engine_ptr describing the AI acceleration engine configured on the device device, and the task description Device_task data processed by the device.
- Device task Device_task is usually a combination of a series of subtasks. Each subtask will have input data, output data and other parameter data. These data are written to the slave (i.e. AI Device) when the host (i.e. master) issues the task. In the accessed storage space memory, the slave needs to obtain the address of these task data when processing these tasks. These addresses are combined into address_list. The number of data addresses in address_list is address_num.
- AI_device_ptr refers to the device to which the task belongs, and is used to identify the executor of the task (i.e. slave).
- Device configuration Device_config is the data used to initialize the device device, including the base address base_address of the device on the system bus, the device's interrupt number Device_irq in the system, the device platform pointer, the number of AI engines included on the device, and other information.
- the AI Eegine in the device can also be described in the form of data structures.
- Figure 4 is a data description data structure diagram of an AI engine provided by an embodiment of the present application.
- the description data of the AI engine includes the engine's task task, the engine's configuration config, the CNN network description network_desc (that is, the network description data) to be inferred by the engine, the description of the engine's internal function module processor, engine status, engine device pointer, etc. .
- the status description and device pointer respectively describe the status of the AI engine and indicate the device to which the AI engine belongs.
- Engine_task includes:
- Device task pointer device_task_ptr This pointer points to the device task device_task, indicating the source of the task. It is also used to index device task device_task related information, such as the address list and number of addresses where the data involved in the task is located.
- Task status task_status used to mark the status of task execution.
- Task base address task_base The address offset used when indexing the task.
- Pointer to the task operation description list operation_desc_ptr During CNN inference, it usually contains dozens or hundreds of convolutional layers, which require the convolution and other processors inside the AI engine to repeatedly process these convolutional layers, so each processor (i.e., functional module) There are dozens or hundreds of different task operation description data. These data are delivered to the storage space of the AI engine through the master. Therefore, the address of these task operation description data needs to be specified for the AI engine.
- Task input/output data description pointer surface_desc_ptr The input/output data of the task is the description of the input/output data of each convolutional layer of CNN. It describes the dimension size of the data, whether it is tightly arranged, whether it is compressed, whether there is an address jump, etc. information.
- Task dependency description data address dependency_graph_addr: dependency_graph is the dependency relationship between task operations. Only when all dependencies of the current task operation of the processor are resolved can the task operation be enabled. This configuration allows the AI engine to automatically switch between tasks and improve the applicability of the AI engine to different CNN networks.
- Lookup table data address lut_data_addr The lookup table is used to implement nonlinear calculations, such as sigmoid nonlinear activation.
- the lookup table data needs to be written by the master into the storage space of the AI engine.
- Region of interest (roi) array address In the field of image processing, the region of interest (ROI, region of interest) is an image area selected from the image. This area is the focus of image analysis. Circle the area for further processing. Similarly, the ROI data needs to be sent by the master to the storage space of the AI engine.
- ROI region of interest
- Input/output data address surface_addr Input/output data refers to the image input during inference or the intermediate result data of the intermediate convolution layer.
- the engine configuration data mainly includes:
- Metadata size atom_size The bus bit width of the AI engine, which can usually be set to 256bit or 512bit. It has large data throughput capability and can process 32 or 64 int8 type data in parallel.
- Data compression support compress_support If data compression is supported, the AI engine needs to implement the data decompression function.
- the target neural network which is the neural network that needs to be inferred and calculated, and generate network description data based on the target neural network and the hardware architecture description data.
- This embodiment does not limit the specific generation process of network description data.
- preset network layer description data corresponding to each network layer can be preset.
- determine the target neural network Each network layer and the dependencies between network layers are obtained, and the preset network layer description data corresponding to each network layer is obtained.
- the synthesis process is performed based on the dependency relationship, and the network description can be obtained. data.
- Figure 7. Model analysis can be performed on the target neural network to obtain an intermediate graph.
- the target neural network can specifically be a caffe model, pytorch model, params and other models.
- the target neural network model and its corresponding configuration parameters are parsed through Parser (a syntax parser) to convert the deep learning framework model into an intermediate graph representation defined by the compiler.
- Parser a syntax parser
- graph optimization is performed on the intermediate graph to obtain the optimized graph.
- Optimizer an optimization program
- the specific optimization method can be common subexpression elimination (common subexpression elimination, CSE), operator fusion, storage optimization, etc.
- the optimization graph is compiled and processed to obtain network description data.
- the optimized intermediate graph (i.e., optimization graph) is compiled by Compiler to generate a map file (i.e., network description data) that can be deployed on the hardware.
- the map file is subsequently deployed on the Device through the runtime.
- the Device's Driver or Firmware i.e., task scheduler
- FIG 8 shows a data structure diagram of a specific neural network description data Network_desc.
- These include processor operation description data operation_desc, input/output data description surface_desc, dependency description between tasks dependency_desc, lookup table data lut_data, area of interest data roi_array, status data stat_list, the starting number of each processor's operation_desc, etc. Since the CNN data is written by the master into the storage space of the AI engine, the AI engine needs to extract data from the storage space based on the CNN description Network_desc during inference calculation and participate in the calculation.
- the process of data extraction by AI engine can be divided into two steps: First, obtain the address of the data in the storage space from the address_list of Device_task according to the index described by Network_desc, and write the address to the Engine task for subsequent data reading. ; The second is to read data from the storage space according to the address in engine_task and participate in inference operations.
- the description data of the AI engine can also include the function module processor description data.
- the processor description can be divided into three parts: processor attributes, processor input data and processor behavior functions (i.e. API).
- the attribute data of the processor includes the name of the processor, the type of processor (convolution, activation, pooling, etc.), the result data receiver or consumer of the processor, or the next-level processor, etc.
- each functional module that is, the processor, corresponds to two register groups, and the two are ping-pong register groups. Therefore, in this embodiment, the ID of the register group used last time can be used to calculate the ID of the register group to be used in this operation. Since there are only two sets of register groups, the ID is equal to 0 or 1.
- the input combined data includes dependency description tail_op, processor_group, and status description stat_data_desc.
- the three include all the data required for processor operation, including: denpendency (used to update pipeline status and automatically enable the processor), operation (processor operation data), surface_desc (information description such as input/output data dimensions), surface (Input data) etc.
- Figure 10 shows a kind of dependency description data, which includes the index (i.e., index table) of this processor operation, the operation type op_type, the dependency count dependency_count, as well as the producers of input data and consumers of output data of this processor.
- the dependency description of the processor operation is the key to the various processor pipelines inside the AI engine. Each processor operation has a dependency description. Each dependency description records the previous level and the next level of this operation, so that all the processes inside the AI engine
- the processor forms a linked list.
- dependency_count that is, execution wait count
- the update operation is specifically the dependency (that is, dependency_count) minus 1 operation.
- the processor's denpendency_count is 0, the processor is enabled.
- the processor's program() is an operation on the corresponding module configuration register inside the AI engine
- enable() is an operation to enable the processor to perform inference operations.
- FIG 11 shows a specific data structure of processor group description data.
- the data of the processor is transmitted through the processor group.
- Each functional module processor inside the AI engine is set up with 2 sets of registers.
- the ping-pong rotation mechanism controls the continuous operation of the processor without gaps. Therefore, the configuration operation of a register group is in Another set of registers controls what is done when the processor is running. This method shortens the time for the AI engine to execute tasks and improves the computing efficiency of the AI engine.
- the register group controls the operation of the processor, processor group can be used to describe the specific information of the register group that needs to be configured and processor-related information. It should be noted that this information needs to be generated when configuring the register, and the specific generation method is not limited.
- the id in Figure 11 describes the register group number. Since there are only two sets of registers, the id is 0 or 1. active records whether the current processor is enabled. The event records the bit number of the interrupt register that is set after the current processor is interrupted. That is, after the processor operation is completed, the event bit in the 32-bit interrupt register will be set to 1.
- roi_index indicates the current location of ROI when ROI exists. is_rdma_needed refers to whether the current processor operation needs to read other parameters from the outside to participate in the operation. Pending refers to whether the current processor has an interrupt that has not been processed.
- lut_index is the position of the address of the lookup table in address_list when the processor is active.
- This level of denpendency is used to describe the dependencies of the current processor and record dependency-related information.
- the upper-level dependency and the lower-level dependency are the dependencies of parents and consumers. After program() or enable(), the current processor needs to update the dependency_count of parent and consumers. It should be noted here that the upper level is not executed first and the next level is executed later. For example, convolution -> activation -> pooling, you need to enable 'pooling' first, then enable 'activation', and finally enable 'convolution', and the three basically perform operations at the same time because the three are pipelined. , 'Pooling' requires the result of 'Activation' as input, similarly, 'Activation' requires the result of 'Convolution' as input. Therefore, from the perspective of the entire task processing process, the three operations are performed at the same time.
- operation_container and surface_container are the register data and input/output data information of the processor.
- Figure 12A is the first part of a data structure diagram of register description data provided by an embodiment of the present application.
- Figure 12B is a data structure diagram provided by an embodiment of the present application.
- the second part of the data structure diagram of register describing data The two parts together form a complete data structure diagram of register describing data.
- Figure 13A is a data structure diagram of an input and output mode description data provided by an embodiment of the present application.
- Figure 13B is a specific data structure diagram of a convolution data description data provided by an embodiment of the present application.
- Figure 13C is a data structure diagram of an input and output mode description data provided by an embodiment of the present application.
- a specific data structure diagram of activation data description data is provided.
- the operation container contains the information of all registers that need to be configured for the processor group.
- the operation_container contains the operation descriptions of n processors. n is the number of processors in the internal function modules of the AI engine. In this example, the AI engine only has convolution, activation, and pooling. The content of the operation description of each processor is determined by the hardware design of the processor. For example, the convolution processor sets the convolution mode, data multiplexing, data type, batch size, data buffer size, convolution data and kernel size, Step size, padding or not, input and output accuracy, etc.
- the program() operation of the processor is to configure these register data to the corresponding functional modules of the AI engine.
- Surface_container describes the input/output data of the processor.
- conv_surface_desc contains a description of input data, output data, weight data and compressed data when data compression exists. The description starts from data type, data address, data address offset, data size, data dimension, data The occupied space and other aspects describe the data information, which is used by the processor to read data or write data.
- the description data of AI engine includes hardware information description of AI device->AI engine->processor->processor group, task description of device task->engine task, CNN description, operation description, and data description.
- These descriptions include processor pipeline information, task automatic scheduling information and dependency information between tasks.
- the entire description is an abstraction of hardware, CNN, tasks, operations, and data, and abstracts complex task scheduling logic and hardware configuration logic into data update iterations. Therefore, the entire CNN inference process is converted into a process in which the internal processor of the AI engine is continuously scheduled, configured, and enabled for execution.
- dependency_desc describes the processor call enabling logic
- operation_desc describes the processor's register group configuration information
- surface_desc describes each processor input. /Output data information.
- This information is generated by the Master through the compiler based on the hardware configuration and the trained CNN.
- Master writes these data into the data storage space of AI engine, then combines the addresses of various data into address_list, and stores the address of address_list and the number of addresses in address_list in the device task.
- Network_desc describes these data addresses in address_list. The index number in .
- the address of Network_desc itself is stored at position 0 in address_list.
- Figure 14 shows the process of converting the lenet model into the processor calculation flow of the AI engine. INDEX is the index of the processor.
- the task scheduler needs to first obtain the Network_desc (that is, the network description data) from the 0 position of the address_list, and then obtain the storage address of the relevant data from the Address_list according to the index number in the Network_desc, and store it in engine_task.
- the processor on the AI Engine performs inference, it reads the address from engine_task and assigns it to the data address in surface_desc.
- the processor reads relevant data from the storage space based on the address, offset, size, and data type of the data.
- the dependency relationships describe the order of tasks in the network layer. This embodiment does not limit the specific method of determining the dependency relationship.
- the network descriptor data corresponding to each network layer task is determined from the network description data, and the corresponding network descriptor data is parsed from each network descriptor data.
- the next network layer pointer that is, the pointer consumer_ptr of the next operation of the processor in the above-mentioned processor description data. Based on each next network layer pointer, the dependency relationship is obtained.
- each functional module on the artificial intelligence accelerated computing component corresponds to at least two register groups.
- each processor corresponds to two ping-pong register groups.
- the free register group in this application refers to a register group without data and a register group that stores register group data corresponding to network layer tasks that have been completed.
- the detection of free register groups can be performed in real time, according to a preset period, or when an interrupt is detected (that is, a network layer task is completed), so that the register group data can be loaded when other non-idle register groups are used for inference. ,Improve efficiency.
- all register groups on the artificial intelligence accelerated computing component can be determined as free register groups, and then Configure all register groups.
- the artificial intelligence accelerated computing component can also be started to start model inference. If it is not in the initialization stage and the target network layer task completion notification is detected, it means that the target network layer task has been executed and the register data in the corresponding register group is invalid. In this case, first determine the target network layer task corresponding The second functional module.
- the free register group is one of the two ping-pong register groups corresponding to the second functional module.
- each functional module needs to be enabled first.
- the enabling is completed, the functional module that meets the conditions (that is, the first functional module in S105) is started.
- operations such as data loading can be completed to improve the degree of parallelism and thereby improve computing efficiency.
- the enabling sequence corresponding to each target function module on the artificial intelligence accelerated computing component can be determined based on the dependency relationship.
- the target function module can be any functional module, and the enabling sequence is in the same direction as the dependency relationship. Based on the reverse order of enabling, each target function module is enabled, so that the enabled target function module performs data calculation preparation operations based on the corresponding non-idle register group.
- Data calculation preparation operations can include operations such as data loading and transformation, and are not specifically limited.
- S104 Based on the dependency relationship, network description data and free register group type, generate a target register configuration, and write the target register configuration to the free register group.
- network layer tasks are executed in a sequence, and each functional module can only execute its corresponding type of network layer task.
- candidate network layer tasks that match the free register group type can be determined based on dependencies.
- the free register group type is the type of the corresponding functional module, such as convolution, activation, and pooling. Chemical etc. Based on the type, candidate tasks that match the type can be determined, such as tasks corresponding to the convolutional layer or tasks corresponding to the pooling layer.
- the candidate descriptor data corresponding to the candidate network layer task in the network description data that is, the data related to the network layer task
- the candidate descriptor data and the hardware architecture description data corresponding to the artificial intelligence accelerated computing component can be generated based on operation_container, suface_container and other data.
- S105 If the target network layer task completion notification is detected, determine the next task of the target network layer task corresponding to the target network layer task completion notification based on the dependency relationship, and set the next task to the corresponding first task on the artificial intelligence accelerated computing component.
- the function module is started to perform the next task.
- the target network layer task completion notification (ie, interruption) is detected, it means that the target network layer task has been executed, and the target network layer task can be any network layer task.
- the next task of the target network layer task corresponding to the target network layer task completion notification is determined based on the dependency relationship. That is, according to the dependency relationship, the next network layer task corresponding to the task can be determined, that is, the next task. Since the inference of the target network layer is performed serially, the output of the previous network layer task is the output of the next network layer task. enter. For a target neural network, its corresponding input data is processed by each network layer task in turn, and an output can be obtained.
- each input data can respectively correspond to different network layer tasks of the target neural network.
- different functions can be utilized at one time.
- the module processes different input data to achieve parallel processing effects, thereby improving computing efficiency.
- each network layer task it participates in is executed at different times. Therefore, for an input data, as long as the target network layer is not the last network layer, there must be its corresponding next task. .
- the register configuration corresponding to the next task has already been written. In this case , you can directly execute the next task. Specifically, according to the type of the next task, its corresponding first functional module on the artificial intelligence accelerated computing component can be determined, the first functional module is started, and the first functional module can execute the next task according to the register configuration. This embodiment does not limit the specific method of determining the next task. In one implementation, the above-mentioned dependency_count can be used to determine the next task.
- the target network layer task completion notification can be parsed to obtain the task identifier (such as event number) corresponding to the target network layer task, and based on the dependency relationship, the task identifier can be used to determine subsequent tasks corresponding to the target network layer task.
- follow-up tasks refer to tasks that need to be performed after the target network layer task, and the specific number is not limited. Decrement the execution wait count (dependency_count) corresponding to each subsequent task by one, and determine the target subsequent task whose execution wait is reduced by one to zero as the next task. If the execution wait is reduced by one and becomes zero, it indicates that the target subsequent task needs to be executed immediately .
- the AI engine task initialization includes: the Master delivers the task data to the slave-side storage space, and notifies the slave-side processor through an interrupt to start parsing the task, and starts the AI engine task scheduler for task scheduling.
- the scheduler reads the delivered device_task data and obtains the address_list address and the number of addresses in the address_list.
- the initialization and register group configuration of processor groups include: reading the address of Network_desc from position 0 in address_list, and reading the Network_desc data. According to the address index described by Network_desc, read the operation_des, surface_desc, dependency_desc, lut_list and other addresses, and use these addresses to initialize the engine_task data structure.
- the scheduler can also read op_head from Network_desc.
- This op_head indicates the index of the first dependency_desc of each processor, and based on the data size of index and dependency_desc, calculates the offset address offset of the dependency_desc of the current processor, and then According to the dependency_graph_addr in engine_task, get the address of reading dependency_desc, and then read the data. Obtain the op_type of the current processor based on the read dependency_desc.
- the scheduler obtains the id of the idle register group of the processor group and whether to read the rdma id based on dependency_desc and processor, and calculates the address offset offset based on the index in dependency_desc, the size of the operation_desc data type, and the size of the surface_desc data type; and then based on the index in engine_task For operation_desc_addr and surface_desc_addr, calculate the specific addresses of the two data and read them.
- the scheduler initializes the current processor group with the data read above and starts configuring the AI engine function module corresponding to the current processor.
- the scheduler updates the tail_op at the end of dependency_desc of the current processor to the current dependency data, which is used to find the index of consumers of the current processor. Decrement the dependency_count of the current processor by 1 and determine whether it is 0; if it is 0, enable the function module of the AI engine corresponding to the processor and start computing.
- the scheduler inverts the ID of the current processor group, configures another set of register groups according to the above steps, and configures other n-1 processors according to the above steps.
- the interrupt service routine is a program that is executed immediately after an interrupt is generated.
- the program reads the AI engine's interrupt status register, determines the processor type, and generates the corresponding event number. Then clear the interrupt status register.
- the current events will be stored in the event of the processor group, and event_flag will be set to 1.
- the events handler is located in the while(1) loop and waits until the task execution is completed before jumping out of the while loop.
- the events handler is located after the process groups initialization and register configuration procedures.
- event_flag When the events handler finds that event_flag is 1, it first clears event_flag, and then polls the two processor groups of all processors to determine which processor group has generated an interrupt, and handles it accordingly. If the DMA reading of image data or weight data is interrupted, the dependencies of all consumers of the current processor group will be directly updated. If other processors are interrupted, the group ID will be rotated first and the dependencies of all consumers will be updated. Then, the scheduler begins to configure the processor goup register group corresponding to the current group id. It should be noted that according to the above logic at this time, the configuration data of the current group's register group has been read and the processor group is ready.
- the scheduler updates the denpency of all consumers. If there is a processor with a dependency_count of 0, it is enabled.
- the scheduler switches processor groups, and runs the initialization steps of the processor groups and the response in the register group configuration process until the last interrupt is generated.
- the number of operations run is equal to the number of operations in Netwok_desc, indicating that the task is completed.
- the slave side generates an interrupt to notify the Master to read the final result.
- the consumer and parent of the process group convert the entire reasoning process into the pipeline of the processor group (pipeline processing), and update the dependency of all consumers and parent processor groups after configuring the register group or after an interrupt is generated, and when dependency_count is When 0, the processor is enabled.
- CNN is composed of multiple identical or similar convolutional layers, and various calculations within the convolutional layer can be pipelined (i.e., pipeline processing), combined with the hardware of the AI engine. Configuration, efficient scheduling of computing tasks, and improved computing efficiency.
- the network description data After obtaining the network description data, if it is determined that a free register group exists, based on the dependency relationship and the free register group type, the network description data is used to generate a target register configuration that matches the free register group, and is written to the free register group.
- each functional module corresponds to at least two registers group, and the configuration time of the register is shorter than the time for the functional module to use the register for data processing, so at any time, each functional module corresponds to at least one non-idle register group.
- the first functional module corresponding to the next task can be started immediately, enabling seamless pipeline processing and improving computing efficiency; at the same time, because each function
- the registers of the modules are all configured, so multiple functional modules can be calculated and processed in parallel, making full use of hardware resources and improving computing efficiency; in addition, the configuration of registers and the operation of functional modules can be executed in parallel.
- the idle register group can be configured, or other register groups can perform data reading and writing operations to fully utilize the bus bandwidth, avoid delays caused by sudden large data transmission requirements, and improve computing efficiency.
- the computing task scheduling device provided by the embodiment of the present application is introduced below.
- the computing task scheduling device described below and the computing task scheduling method described above may be mutually referenced.
- Figure 17 is a schematic structural diagram of a computing task scheduling device provided by an embodiment of the present application. It is applied to a task scheduler and includes:
- the network description acquisition module 110 is used to obtain network description data; the network description data is used to describe the network layer tasks corresponding to each network layer in the target neural network;
- the dependency determination module 120 is used to determine the dependency relationship between various network layer tasks based on the network description data
- the idle detection module 130 is used to detect idle register groups on the artificial intelligence accelerated computing component; each functional module on the artificial intelligence accelerated computing component corresponds to at least two register groups;
- the register configuration module 140 is used to generate a target register configuration based on dependencies, network description data and free register group types, and write the target register configuration to the free register group;
- the startup module 150 is configured to, if a target network layer task completion notification is detected, determine the next task of the target network layer task corresponding to the target network layer task completion notification based on the dependency relationship, and set the next task on the artificial intelligence accelerated computing component The corresponding first functional module is started to perform the next task.
- the hardware architecture determination module is used to determine the hardware architecture of the artificial intelligence acceleration computing component
- the hardware description generation module is used to generate corresponding hardware architecture description data based on the hardware architecture
- the network description generation module is used to obtain the target neural network and generate network description data based on the target neural network and hardware architecture description data.
- the network description generation module includes:
- the model analysis unit is used to perform model analysis on the target neural network and obtain the intermediate graph
- the optimization unit is used to describe the data based on the hardware architecture, perform graph optimization processing on the intermediate graph, and obtain the optimized graph;
- the compilation unit is used to compile the optimization graph and obtain network description data.
- the network description generation module includes:
- Dependency determination unit used to determine each network layer in the target neural network and the dependencies between network layers
- the acquisition unit is used to acquire the preset network layer description data corresponding to each network layer;
- the generation unit is used to generate network description data based on dependencies using preset network layer description data.
- the dependency determination module 120 includes:
- the sub-data determination unit is used to determine the network description sub-data corresponding to each network layer task from the network description data;
- the pointer acquisition unit is used to parse and obtain the corresponding next network layer pointer from each network descriptor data
- the relationship generation unit is used to obtain dependency relationships based on each next network layer pointer.
- the idle detection module 130 includes:
- An initial detection unit used to determine all register groups on the artificial intelligence accelerated computing component as free register groups if it is in the initialization stage;
- the module determination unit is used to determine the second functional module corresponding to the target network layer task if it is not in the initialization stage and the target network layer task completion notification is detected;
- An identification acquisition unit configured to update the free register group identification corresponding to the type in the network description data based on the type of the second functional module
- the idle determination unit is used to determine the idle register group corresponding to the second functional module according to the updated idle register group identification; wherein the idle register group is one of the two ping-pong register groups corresponding to the second functional module.
- the register configuration module 140 includes:
- a candidate determination unit used to determine candidate network layer tasks that match the free register group type based on dependency relationships
- a sub-data acquisition unit used to determine candidate descriptor data corresponding to the candidate network layer task in the network description data
- the configuration generation unit is used to generate the target register configuration using the candidate descriptor data and the hardware architecture description data corresponding to the artificial intelligence accelerated computing component.
- start module 150 including:
- the identification determination unit is used to parse the target network layer task completion notification and obtain the task identification corresponding to the target network layer task;
- the subsequent task determination unit is used to determine the subsequent tasks corresponding to the target network layer task based on the dependency relationship and using the task identifier;
- the update unit is used to decrement the execution wait count corresponding to each subsequent task by one;
- the next task determination unit is used to determine the target subsequent task whose execution wait minus one is zero as the next task.
- the enabling sequence determination module is used to determine the enabling sequence corresponding to each target function module on the artificial intelligence accelerated computing component based on dependencies;
- the enabling module is used to enable each target function module based on the reverse order of the enabling sequence, so that the enabled target function module performs data calculation preparation operations based on the corresponding non-idle register group.
- the electronic device provided by the embodiment of the present application is introduced below.
- the electronic device described below and the computing task scheduling method described above can be mutually referenced.
- the electronic device 100 may include one or more processors 101 and memory 102, and may further include one or more of a multimedia component 103, an information input/output (I/O) interface 104, and a communication component 105.
- a multimedia component 103 may include one or more of a multimedia component 103, an information input/output (I/O) interface 104, and a communication component 105.
- I/O information input/output
- the processor 101 is used to control the overall operation of the electronic device 100 to complete all or part of the steps in the above-mentioned computing task scheduling method;
- the memory 102 is used to store various types of data to support the operations of the electronic device 100.
- the data may include, for example, instructions for any application or method operating on the electronic device 100, as well as application-related data.
- the memory 102 can be implemented by any type of volatile or non-volatile storage device or a combination thereof, such as static random access memory (Static Random Access Memory, SRAM), electrically erasable programmable read-only memory (Electrically Erasable Programmable Read-Only Memory (EEPROM), Erasable Programmable Read-Only Memory (EPROM), Programmable Read-Only Memory (PROM), Read-Only Memory (Read- Only Memory (ROM), magnetic memory, flash memory, one or more of magnetic disks or optical disks.
- SRAM static random access memory
- EEPROM Electrically erasable programmable read-only memory
- EPROM Erasable Programmable Read-Only Memory
- PROM Programmable Read-Only Memory
- ROM Read-Only Memory
- magnetic memory flash memory, one or more of magnetic disks or optical disks.
- Multimedia components 103 may include screen and audio components.
- the screen may be a touch screen, for example, and the audio component is used to output and/or input audio signals.
- the audio component may include a microphone for receiving external audio signals.
- the received audio signals may be further stored in memory 102 or sent via communication component 105 .
- the audio component also includes at least one speaker for outputting audio signals.
- the I/O interface 104 provides an interface between the processor 101 and other interface modules.
- the other interface modules may be keyboards, mice, buttons, etc. These buttons can be virtual buttons or physical buttons.
- the communication component 105 is used for wired or wireless communication between the electronic device 100 and other devices. Wireless communication, such as Wi-Fi, Bluetooth, Near Field Communication (NFC), 2G, 3G or 4G, or one or a combination of them, so the corresponding communication component 105 may include: Wi-Fi parts, Bluetooth parts, NFC parts.
- the electronic device 100 may be configured by one or more application specific integrated circuits (Application Specific Integrated Circuit, ASIC for short), digital signal processor (Digital Signal Processor, DSP for short), digital signal processing device (Digital Signal Processing Device, DSPD for short), Programmable Logic Device (PLD for short), Field Programmable Gate Array (FPGA for short), controller, microcontroller, microprocessor or other electronic components are implemented for executing the above embodiments
- ASIC Application Specific Integrated Circuit
- DSP Digital Signal Processor
- DSPD Digital Signal Processing Device
- PLD Programmable Logic Device
- FPGA Field Programmable Gate Array
- the application also provides one or more non-volatile computer-readable storage media storing computer-readable instructions.
- the computer-readable instructions When executed by one or more processors, the computer-readable instructions cause one or more processors to perform computing task scheduling.
- the computer-readable storage medium stores computer-readable instructions, and when the computer-readable instructions are executed by the processor, the steps of the above computing task scheduling method are implemented.
- the computer-readable storage medium can include: U disk, mobile hard disk, read-only memory (Read-Only Memory, ROM), random access memory (Random Access Memory, RAM), magnetic disk or optical disk, etc., which can store program code medium.
- RAM random access memory
- ROM read-only memory
- electrically programmable ROM electrically erasable programmable ROM
- registers hard disks, removable disks, CD-ROMs, or anywhere in the field of technology. any other known form of storage media.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Multi Processors (AREA)
- Devices For Executing Special Programs (AREA)
- Image Analysis (AREA)
Abstract
Description
Claims (13)
- 一种计算任务调度方法,其特征在于,应用于任务调度器,所述方法包括:获取网络描述数据;所述网络描述数据用于描述目标神经网络中各个网络层分别对应的网络层任务;基于所述网络描述数据,确定各个所述网络层任务之间的依赖关系;检测人工智能加速计算部件上的空闲寄存器组;所述人工智能加速计算部件上各个功能模块分别对应于至少两个寄存器组;基于所述依赖关系、所述网络描述数据和空闲寄存器组类型,生成目标寄存器配置,并将所述目标寄存器配置写入到所述空闲寄存器组;和响应于检测到目标网络层任务完成通知,基于所述依赖关系确定所述目标网络层任务完成通知对应的目标网络层任务的下一任务,并将所述下一任务在所述人工智能加速计算部件上对应的第一功能模块启动,以便执行所述下一任务。
- 根据权利要求1所述的计算任务调度方法,其特征在于,所述网络描述数据的生成过程,包括:确定所述人工智能加速计算部件的硬件架构;基于所述硬件架构,生成对应的硬件架构描述数据;和获取所述目标神经网络,并基于所述目标神经网络和所述硬件架构描述数据,生成所述网络描述数据。
- 根据权利要求2所述的计算任务调度方法,其特征在于,所述基于所述目标神经网络和所述硬件架构描述数据,生成所述网络描述数据,包括:对所述目标神经网络进行模型解析,得到中间图;基于所述硬件架构描述数据,对所述中间图进行图优化处理,得到优化图;和对所述优化图进行编译处理,得到所述网络描述数据。
- 根据权利要求2所述的计算任务调度方法,其特征在于,所述基于所述目标神经网络和所述硬件架构描述数据,生成所述网络描述数据,包括:确定所述目标神经网络中的各个网络层,以及所述网络层之间的所述依赖关系;获取各个网络层分别对应的预设网络层描述数据;和利用所述预设网络层描述数据,基于所述依赖关系,生成所述网络描述数据。
- 根据权利要求1-4中任一项所述的计算任务调度方法,其特征在于,所述基于所述网络描述数据,确定各个所述网络层任务之间的依赖关系,包括:从所述网络描述数据中确定各个所述网络层任务分别对应的网络描述子数据;从各个所述网络描述子数据中解析得到对应的下一网络层指针;和基于各个所述下一网络层指针,得到所述依赖关系。
- 根据权利要求1-5中任一项所述的计算任务调度方法,其特征在于,所述检测人工智能加速计算部件上的空闲寄存器组,包括:响应于处于初始化阶段,将所述人工智能加速计算部件上的所有寄存器组确定为所述空闲寄存器组。
- 根据权利要求1-5中任一项所述的计算任务调度方法,其特征在于,所述检测人工智能加速计算部件上的空闲寄存器组,包括:响应于不处于所述初始化阶段,检测到目标网络层任务完成通知,确定所述目标网络层任务对应的第二功能模块;基于所述第二功能模块的类型,更新所述网络描述数据中与所述类型对应的空闲寄存器组标识;和根据更新后的所述空闲寄存器组标识,确定所述第二功能模块对应的所述空闲寄存器组;其中,所述空闲寄存器组为所述第二功能模块对应的两组乒乓寄存器组中的一个。
- 根据权利要求1-7中任一项所述的计算任务调度方法,其特征在于,所述基于所述依赖关系、所述网络描述数据和空闲寄存器组类型,生成目标寄存器配置,包括:基于所述依赖关系,确定与所述空闲寄存器组类型匹配的候选网络层任务;在所述网络描述数据中确定与所述候选网络层任务对应的候选描述子数据;和利用所述候选描述子数据和所述人工智能加速计算部件对应的硬件架构描述数据,生成所述目标寄存器配置。
- 根据权利要求1-8中任一项所述的计算任务调度方法,其特征在于,所述基于所述依赖关系确定所述目标网络层任务完成通知对应的目标网络层任务的下一任务,包括:解析所述目标网络层任务完成通知,得到所述目标网络层任务对应的任务标识;基于所述依赖关系,利用所述任务标识确定所述目标网络层任务对应的后续任务;将各个所述后续任务对应的执行等待计数减一;和将所述执行等待减一后为零的目标后续任务确定为所述下一任务。
- 根据权利要求1-9中任一项所述的计算任务调度方法,其特征在于,还包括:基于所述依赖关系,确定所述人工智能加速计算部件上各个目标功能模块对应的使能顺序;和基于所述使能顺序的倒序,对各个所述目标功能模块进行使能处理,以使被使能处理后的目标功能模块基于对应的非空闲寄存器组进行数据计算准备操作。
- 一种计算任务调度装置,其特征在于,应用于任务调度器,所述装置包括:网络描述获取模块,用于获取网络描述数据;所述网络描述数据用于描述目标神经网络中各个网络层分别对应的网络层任务;依赖确定模块,用于基于所述网络描述数据,确定各个所述网络层任务之间的依赖关系;空闲检测模块,用于检测人工智能加速计算部件上的空闲寄存器组;所述人工智能加速计算部件上各个功能模块分别对应于至少两个寄存器组;寄存器配置模块,用于基于所述依赖关系、所述网络描述数据和空闲寄存器组类型,生成目标寄存器配置,并将所述目标寄存器配置写入到所述空闲寄存器组;和启动模块,用于响应于检测到目标网络层任务完成通知,基于所述依赖关系确定所述目标网络层任务完成通知对应的目标网络层任务的下一任务,并将所述下一任务在所述人工智能加速计算部件上对应的第一功能模块启动,以便执行所述下一任务。
- 一种电子设备,其特征在于,包括存储器及一个或多个处理器,所述存储器中储存有计算机可读指令,所述计算机可读指令被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-10任意一项所述的方法的步骤。
- 一个或多个存储有计算机可读指令的非易失性计算机可读存储介质,其特征在于,所述计算机可读指令被一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-10任意一项所述的方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18/725,590 US12498971B2 (en) | 2022-04-20 | 2022-06-30 | Determination of a next task of a target network layer task for a task scheduling based on dependencies and register configuration |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202210413206.1A CN114510339B (zh) | 2022-04-20 | 2022-04-20 | 一种计算任务调度方法、装置、电子设备及可读存储介质 |
| CN202210413206.1 | 2022-04-20 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2023201893A1 true WO2023201893A1 (zh) | 2023-10-26 |
Family
ID=81554635
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/CN2022/102769 Ceased WO2023201893A1 (zh) | 2022-04-20 | 2022-06-30 | 一种计算任务调度方法、装置、电子设备及可读存储介质 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US12498971B2 (zh) |
| CN (1) | CN114510339B (zh) |
| WO (1) | WO2023201893A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117290074A (zh) * | 2023-11-23 | 2023-12-26 | 知行汽车科技(苏州)股份有限公司 | 一种车型配置中的进程设置方法、装置、设备及介质 |
Families Citing this family (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114510339B (zh) | 2022-04-20 | 2022-07-29 | 苏州浪潮智能科技有限公司 | 一种计算任务调度方法、装置、电子设备及可读存储介质 |
| CN114860412B (zh) * | 2022-05-19 | 2023-04-04 | 北京百度网讯科技有限公司 | 任务处理方法、装置、电子设备和介质 |
| CN115801424B (zh) * | 2022-11-29 | 2025-08-26 | 北京威努特技术有限公司 | 一种流量快速转发的方法 |
| CN118550659A (zh) * | 2023-02-27 | 2024-08-27 | 华为技术有限公司 | 一种任务运行方法、装置及相关设备 |
| CN117971437B (zh) * | 2024-03-26 | 2025-01-24 | 摩尔线程智能科技(北京)股份有限公司 | 任务分配方法、电路、设备、介质及程序 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6871343B1 (en) * | 1999-09-22 | 2005-03-22 | Kabushiki Kaisha Toshiba | Central processing apparatus and a compile method |
| CN112711475A (zh) * | 2021-01-20 | 2021-04-27 | 上海交通大学 | 一种基于图卷积神经网络的工作流调度方法及系统 |
| US20210157283A1 (en) * | 2019-11-26 | 2021-05-27 | Apex Artificial Intelligence Industries, Inc. | Adaptively controlling groups of automated machines |
| CN113448692A (zh) * | 2020-03-25 | 2021-09-28 | 杭州海康威视数字技术股份有限公司 | 分布式图计算的方法、装置、设备及存储介质 |
| CN113961333A (zh) * | 2021-12-22 | 2022-01-21 | 北京燧原智能科技有限公司 | 循环任务的生成、执行方法、装置、ai芯片及存储介质 |
| CN114510339A (zh) * | 2022-04-20 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 一种计算任务调度方法、装置、电子设备及可读存储介质 |
Family Cites Families (30)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2001188767A (ja) * | 1999-12-28 | 2001-07-10 | Fuji Xerox Co Ltd | ニューラルネットワーク演算装置及びニューラルネットワークの演算方法 |
| JP4204522B2 (ja) * | 2004-07-07 | 2009-01-07 | 株式会社東芝 | マイクロプロセッサ |
| US8423728B1 (en) * | 2005-06-16 | 2013-04-16 | Emc Corporation | Physical based scheduler using run count and skip count values |
| US7508396B2 (en) * | 2005-09-28 | 2009-03-24 | Silicon Integrated Systems Corp. | Register-collecting mechanism, method for performing the same and pixel processing system employing the same |
| JP4781133B2 (ja) * | 2006-03-08 | 2011-09-28 | コニカミノルタビジネステクノロジーズ株式会社 | 画像形成装置、情報処理装置、画像処理プログラム、および画像処理方法 |
| TWI396132B (zh) * | 2008-08-06 | 2013-05-11 | Nat Univ Tsing Hua | 非規則性暫存器集之指令管線化方法 |
| US8868695B2 (en) * | 2011-03-02 | 2014-10-21 | Cleversafe, Inc. | Configuring a generic computing device utilizing specific computing device operation information |
| US9154451B2 (en) * | 2012-08-21 | 2015-10-06 | Advanced Micro Devices, Inc. | Systems and methods for sharing devices in a virtualization environment |
| JP6079208B2 (ja) * | 2012-12-19 | 2017-02-15 | 株式会社ソシオネクスト | マイクロコンピュータ,そのミドルウエア及びマイクロコンピュータの動作方法 |
| US9672020B2 (en) * | 2014-09-19 | 2017-06-06 | Microsoft Technology Licensing, Llc | Selectively loading precompiled header(s) and/or portion(s) thereof |
| CN105653258A (zh) * | 2015-11-06 | 2016-06-08 | 乐视移动智能信息技术(北京)有限公司 | 一种代码处理方法及装置 |
| CN105893159B (zh) * | 2016-06-21 | 2018-06-19 | 北京百度网讯科技有限公司 | 数据处理方法和装置 |
| CN108475347A (zh) * | 2017-11-30 | 2018-08-31 | 深圳市大疆创新科技有限公司 | 神经网络处理的方法、装置、加速器、系统和可移动设备 |
| CN109978129B (zh) * | 2017-12-28 | 2020-08-25 | 中科寒武纪科技股份有限公司 | 调度方法及相关装置 |
| US11636327B2 (en) * | 2017-12-29 | 2023-04-25 | Intel Corporation | Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism |
| US10719970B2 (en) * | 2018-01-08 | 2020-07-21 | Apple Inc. | Low latency firmware command selection using a directed acyclic graph |
| US20200175396A1 (en) * | 2018-12-04 | 2020-06-04 | Intel Corporation | Deterministic neural networking interoperability |
| CN109754073B (zh) * | 2018-12-29 | 2020-03-10 | 中科寒武纪科技股份有限公司 | 数据处理方法、装置、电子设备和可读存储介质 |
| CN112291293B (zh) * | 2019-07-27 | 2023-01-06 | 华为技术有限公司 | 任务处理方法、相关设备及计算机存储介质 |
| US20210073669A1 (en) * | 2019-09-06 | 2021-03-11 | American Express Travel Related Services Company | Generating training data for machine-learning models |
| US11442794B1 (en) * | 2019-09-27 | 2022-09-13 | Amazon Technologies, Inc. | Event assignment for synchronization of concurrent execution engines |
| US11797277B2 (en) * | 2019-10-22 | 2023-10-24 | Shenzhen Corerain Technologies Co., Ltd. | Neural network model conversion method server, and storage medium |
| TWI727493B (zh) * | 2019-11-08 | 2021-05-11 | 瑞昱半導體股份有限公司 | 一種閘道器控制晶片及其網路封包處理方法 |
| US11068641B1 (en) * | 2020-03-04 | 2021-07-20 | Mythic, Inc. | Systems and methods for intelligently buffer tracking for optimized dataflow within an integrated circuit architecture |
| US11080026B1 (en) * | 2020-07-28 | 2021-08-03 | Electronic Arts Inc. | Combined building of dual representation program instructions |
| US12198037B2 (en) * | 2020-11-06 | 2025-01-14 | Samsung Electronics Co., Ltd. | Hardware architecture determination based on a neural network and a network compilation process |
| US12574782B2 (en) * | 2021-01-05 | 2026-03-10 | Intel Corporation | Network controlled small gap (NCSG) configurations to reduce interruptions due to intra-rat bandwidth part (BWP) transitions |
| CN112949847B (zh) * | 2021-03-29 | 2023-07-25 | 上海西井科技股份有限公司 | 神经网络算法加速系统、调度系统及调度方法 |
| KR20230040757A (ko) * | 2021-09-16 | 2023-03-23 | 삼성전자주식회사 | 모델 메타 데이터 및 제어 데이터에 기초하여 뉴럴 네트워크 연산을 수행하는 전자 장치 및 뉴럴 네트워크 모듈 |
| CN114239816B (zh) * | 2021-12-09 | 2023-04-07 | 电子科技大学 | 一种卷积神经网络-图卷积神经网络可重构硬件加速架构 |
-
2022
- 2022-04-20 CN CN202210413206.1A patent/CN114510339B/zh active Active
- 2022-06-30 US US18/725,590 patent/US12498971B2/en active Active
- 2022-06-30 WO PCT/CN2022/102769 patent/WO2023201893A1/zh not_active Ceased
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6871343B1 (en) * | 1999-09-22 | 2005-03-22 | Kabushiki Kaisha Toshiba | Central processing apparatus and a compile method |
| US20210157283A1 (en) * | 2019-11-26 | 2021-05-27 | Apex Artificial Intelligence Industries, Inc. | Adaptively controlling groups of automated machines |
| CN113448692A (zh) * | 2020-03-25 | 2021-09-28 | 杭州海康威视数字技术股份有限公司 | 分布式图计算的方法、装置、设备及存储介质 |
| CN112711475A (zh) * | 2021-01-20 | 2021-04-27 | 上海交通大学 | 一种基于图卷积神经网络的工作流调度方法及系统 |
| CN113961333A (zh) * | 2021-12-22 | 2022-01-21 | 北京燧原智能科技有限公司 | 循环任务的生成、执行方法、装置、ai芯片及存储介质 |
| CN114510339A (zh) * | 2022-04-20 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 一种计算任务调度方法、装置、电子设备及可读存储介质 |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN117290074A (zh) * | 2023-11-23 | 2023-12-26 | 知行汽车科技(苏州)股份有限公司 | 一种车型配置中的进程设置方法、装置、设备及介质 |
| CN117290074B (zh) * | 2023-11-23 | 2024-02-02 | 知行汽车科技(苏州)股份有限公司 | 一种车型配置中的进程设置方法、装置、设备及介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20240385878A1 (en) | 2024-11-21 |
| US12498971B2 (en) | 2025-12-16 |
| CN114510339B (zh) | 2022-07-29 |
| CN114510339A (zh) | 2022-05-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| WO2023201893A1 (zh) | 一种计算任务调度方法、装置、电子设备及可读存储介质 | |
| US9043770B2 (en) | Program module applicability analyzer for software development and testing for multi-processor environments | |
| US20140006751A1 (en) | Source Code Level Multistage Scheduling Approach for Software Development and Testing for Multi-Processor Environments | |
| US20140007044A1 (en) | Source Code Generator for Software Development and Testing for Multi-Processor Environments | |
| KR20210021261A (ko) | 가속기에서 이종 컴포넌트들을 구성하기 위한 방법들 및 장치 | |
| US11016769B1 (en) | Method and apparatus for processing information | |
| US12210438B1 (en) | Breakpoints in neural network accelerator | |
| CN116107669B (zh) | 深度学习框架的算子注册方法、装置、设备及存储介质 | |
| WO2008113291A1 (en) | Method and system for calling functions | |
| WO2023124543A1 (zh) | 用于大数据的数据处理方法和数据处理装置 | |
| JP2025521149A (ja) | シミュレーション装置、シミュレーションシステム及びそのシミュレーション方法、記憶媒体 | |
| US20200226051A1 (en) | Generating a debugging network for a synchronous digital circuit during compilation of program source code | |
| CN109558226B (zh) | 一种基于核间中断的dsp多核并行计算调度方法 | |
| WO2025124578A1 (zh) | 张量处理装置、方法及计算机可读存储介质 | |
| CN119781850A (zh) | 基于dpu异构架构的向量化执行引擎的算子卸载方法及系统 | |
| CN113918290B (zh) | 一种api调用方法以及装置 | |
| CN116225821A (zh) | 支持软件定义的性能监控事件的可编程性能监控单元 | |
| CN107820605A (zh) | 用于动态低延迟优化的系统和方法 | |
| CN116107728A (zh) | 一种任务执行方法、装置、存储介质及电子设备 | |
| CN115202666A (zh) | 数据流架构优化方法、装置、电子设备 | |
| CN114880290A (zh) | 一种虚拟文件系统的监控方法、监控装置及计算设备 | |
| US10803007B1 (en) | Reconfigurable instruction | |
| WO2025179868A1 (zh) | 嵌入式系统的硬件资源访问方法、装置及服务器 | |
| CN100576175C (zh) | 用于多个内核的并行执行的方法和系统 | |
| CN103345392B (zh) | 处理信息的方法及其装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 22938119 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 18725590 Country of ref document: US |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 22938119 Country of ref document: EP Kind code of ref document: A1 |
|
| 32PN | Ep: public notification in the ep bulletin as address of the adressee cannot be established |
Free format text: NOTING OF LOSS OF RIGHTS PURSUANT TO RULE 112(1) EPC (EPO FORM 1205 DATED 14/03/2025) |
|
| WWG | Wipo information: grant in national office |
Ref document number: 18725590 Country of ref document: US |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 22938119 Country of ref document: EP Kind code of ref document: A1 |