IP Library › Granted Patent US 12,443,847
Granted Patent B2
US 12,443,847 · App. 17/284,201 · Granted Oct 14, 2025

Task processing method and device based on neural network

Inventors: Yi Xiong (Guangzhou, CN); Songsong Yi (Guangzhou, CN)
Assignee: BIGO TECHNOLOGY PTE. LTD.
G06N3/082G06F9/485G06F9/4881G06N3/063
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,443,847
App. No.
17/284,201
Granted
Oct 14, 2025
Kind
B2
Abstract

Provided is a task processing method based on a neural network, including: acquiring input data, wherein the input data is intended to trigger thread tasks, and is source input data or cache exchange data; generating processing result data by scheduling at least two corresponding module threads in parallel based on at least two triggered thread tasks to process the input data, wherein the at least two module threads respectively correspond to at least two network modules in the neural network; and outputting the processing result data to a cache as the cache exchange data of module threads except the at least two module threads, or outputting the processing result data as a processing result of the source input data.

Claims (58)

1. A task processing method based on a neural network, applied in a neural network-related application of a device, comprising:

acquiring input data, wherein the input data is intended to trigger thread tasks, and is source input data or cache exchange data;

generating processing result data by scheduling at least two corresponding module threads in parallel based on at least two triggered thread tasks to process the input data, wherein the at least two module threads respectively correspond to at least two network modules in the neural network;

outputting the processing result data to a cache, wherein the processing result data is used as the cache exchange data of module threads except the at least two module threads, or outputting the processing result data, wherein the processing result data is used as a processing result of the source input data;

wherein the at least two module threads at least comprise a start module thread and an end module thread;

wherein generating the processing result data by scheduling at least two corresponding module threads in parallel based on at least two triggered thread tasks to process the input data comprises:

scheduling the start module thread based on the triggered thread task to process input data to the start module thread; and

scheduling the end module thread based on the triggered thread task to process input data to the end module thread; and

executing tasks of the scheduled start module thread on a first core of a multi-core processor and executing tasks of the scheduled end module thread on a different core of the multi-core processor.

2. The method according to claim 1 , wherein prior to acquiring the input data, the method further comprises:

acquiring the at least two network modules by dividing a plurality of network layers in the neural network.

3. The method according to claim 2 , wherein acquiring the at least two network modules by dividing the plurality of network layers in the neural network comprises:

determining a number of channels between adjacent network layers in the neural network;

identifying a former network layer in the adjacent network layers as an input layer for inputting a network module and identifying a latter network layer in the adjacent network layers as an output layer for outputting the network module in response to determining that one channel is present between the adjacent network layers; and

generating the at least two network modules based on the output layer for outputting the network module and the input layer for inputting the network module.

4. The method according to claim 1 , wherein a difference value between processing times of the at least two network modules is less than a predetermined threshold.

5. The method according to claim 1 , wherein

scheduling the start module thread based on the triggered thread task to process input data to the start module thread comprises: calling the start module thread to pre-process the source input data, performing task processing based on a start network module of the neural network corresponding to the start module thread, and outputting the processing result data to the cache as the cache exchange data; and

scheduling the end module thread based on the triggered thread task to process input data to the end module thread comprises: calling the end module thread to acquire the corresponding cache exchange data from the cache as the input data, performing task processing based on an end network module of the neural network corresponding to the end module thread, and post-processing and outputting processing result data as the processing result of the source input data.

6. The method according to claim 1 , wherein the at least two module threads further comprise at least one intermediate module thread; and scheduling the at least one intermediate module thread based on the triggered thread task to process the input data comprises:

calling the at least one intermediate module thread to acquire the corresponding cache exchange data from the cache as input data to the intermediate module thread, performing task processing based on an intermediate network module of the neural network corresponding to the intermediate module thread, and outputting the processing result data to the cache as the cache exchange data.

7. The method according to claim 1 , wherein the source input data is image frame data, the pre-processing is image pre-processing, the post-processing is image post-processing, and the neural network is a convolutional neural network.

8. The method according to claim 1 , wherein acquiring the input data comprises:

determining the data written in a target cache space as the input data in response to monitoring that data is written in a target cache space correspondingly read by the thread tasks, wherein the module threads are bound to the thread tasks in one-to-one correspondence, and the thread tasks are bound to the target cache space.

9. The method according to claim 1 , wherein the module threads are bound to processor cores in one-to-one correspondence.

10. A task processing device based on a neural network, comprising: a multi-core processor and a memory storing at least one instruction therein;

wherein the instruction, when executed by the multi-core processor, causes the device to execute a task processing method comprising:

acquiring input data, wherein the input data is intended to trigger thread tasks, and is source input data or cache exchange data;

generating processing result data by scheduling at least two corresponding module threads in parallel based on at least two triggered thread tasks to process the input data, wherein the at least two module threads respectively correspond to at least two network modules in the neural network;

outputting the processing result data to a cache, wherein the processing result data is used as the cache exchange data of module threads except the at least two module threads, or outputting the processing result data, wherein the processing result data is used as a processing result of the source input data;

wherein the at least two module threads at least comprise a start module thread and an end module thread;

wherein generating the processing result data by scheduling at least two corresponding module threads in parallel based on at least two triggered thread tasks to process the input data comprises:

scheduling the start module thread based on the triggered thread task to process input data to the start module thread; and

scheduling the end module thread based on the triggered thread task to process input data to the end module thread; and

executing tasks of the scheduled start module thread on a first core of the multi-core processor and executing tasks of the scheduled end module thread on a different core of the multi-core processor.

11. The device according to claim 10 , wherein prior to acquiring the input data, the method further comprises:

acquiring the at least two network modules by dividing a plurality of network layers in the neural network.

12. The device according to claim 11 , wherein acquiring the at least two network modules by dividing the plurality of network layers in the neural network comprises:

determining a number of channels between adjacent network layers in the neural network;

identifying a former network layer in the adjacent network layers as an input layer for inputting a network module and identifying a latter network layer in the adjacent network layers as an output layer for outputting the network module in response to determining that one channel is present between the adjacent network layers; and

generating the at least two network modules based on the output layer for outputting the network module and the input layer for inputting the network module.

13. The device according to claim 10 , wherein a difference value between processing times of the at least two network modules is less than a predetermined threshold.

14. The device according to claim 10 , wherein scheduling the start module thread based on the triggered thread task to process the input data to the start module thread comprises: calling the start module thread to pre-process the source input data, performing task processing based on a start network module of the neural network corresponding to the start module thread, and outputting the processing result data to the cache as the cache exchange data; and

scheduling the end module thread based on the triggered thread task to process the input data to the end module thread comprises: calling the end module thread to acquire the corresponding cache exchange data from the cache as the input data, performing task processing based on an end network module of the neural network corresponding to the end module thread, and post-processing and outputting processing result data as the processing result of the source input data.

15. The device according to claim 10 , wherein the at least two module threads further comprise at least one intermediate module thread; and scheduling the at least one intermediate module thread based on the triggered thread task to process the input data comprises:

calling the at least one intermediate module thread to acquire the corresponding cache exchange data from the cache as input data to the intermediate module thread, performing task processing based on an intermediate network module of the neural network corresponding to the intermediate module thread, and outputting the processing result data to the cache as the cache exchange data.

16. The device according to claim 10 , wherein the source input data is image frame data, the pre-processing is image pre-processing, the post-processing is image post-processing, and the neural network is a convolutional neural network.

17. The device according to claim 10 , wherein acquiring the input data comprises:

determining data written in a target cache space as the input data in response to monitoring that data is written in a target cache space correspondingly read by the thread tasks, wherein the module threads are bound to the thread tasks in one-to-one correspondence, and the thread tasks are bound to the target cache space.

18. A non-transitory computer-readable storage medium, storing at least one instruction therein, wherein the at least one instruction, when executed by a multi-core processor of a device, causes the device to execute a task processing method based on a neural network comprising:

acquiring input data, wherein the input data is intended to trigger thread tasks, and is source input data or cache exchange data;

generating processing result data by scheduling at least two corresponding module threads in parallel based on at least two triggered thread tasks to process the input data, wherein the at least two module threads respectively correspond to at least two network modules in the neural network;

outputting the processing result data to a cache, wherein the processing result data is used as the cache exchange data of module threads except the at least two module threads, or outputting the processing result data, wherein the processing result data is used as a processing result of the source input data;

wherein the at least two module threads at least comprise a start module thread and an end module thread;

wherein generating the processing result data by scheduling at least two corresponding module threads in parallel based on at least two triggered thread tasks to process the input data comprises:

scheduling the start module thread based on the triggered thread task to process input data to the start module thread; and

scheduling the end module thread based on the triggered thread task to process input data to the end module thread; and

executing tasks of the scheduled start module thread on a first core of the multi-core processor and executing tasks of the scheduled end module thread on a different core of the multi-core processor.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE ADDRESS PREVIOUSLY RECORDED ON REEL 055882 FRAME 0610. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded May 10, 2021
From: XIONG, YI; YI, SONGSONG
To: BIGO TECHNOLOGY PTE. LTD.
Reel/Frame 056185/0579 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 9, 2021
From: XIONG, YI; YI, SONGSONG
To: BIGO TECHNOLOGY PTE. LTD.
Reel/Frame 055882/0610 →
Priority Claims (1)
CN 201811180174.5 · Oct 10, 2018 · national
Continuity (1)
Related Publication 20210357759A1 · Nov 18, 2021
References Cited (37)
US 10878314B2 · Nagaraja · 2020 [cited by examiner]
US 20120089812A1 · Smith · 2012 [cited by examiner]
US 20140143509A1 · Vorbach · 2014 [cited by examiner]
US 20170169326A1 · Diamos · 2017 [cited by examiner]
US 20170344880A1 · Nekuii · 2017 [cited by applicant]
US 20180191642A1 · Biederman · 2018 [cited by examiner]
US 20180260692A1 · Nagaraja · 2018 [cited by applicant]
CN 101819651A · 2010 [cited by applicant]
CN 104657111A · 2015 [cited by applicant]
CN 104899561A · 2015 [cited by applicant]
CN 105869117A · 2016 [cited by applicant]
CN 106650925A · 2017 [cited by applicant]
CN 106682729A · 2017 [cited by applicant]
CN 106875013A · 2017 [cited by applicant]
CN 106909971A · 2017 [cited by applicant]
CN 107451659A · 2017 [cited by applicant]
CN 107491811A · 2017 [cited by applicant]
CN 107730905A · 2018 [cited by applicant]
CN 108196882A · 2018 [cited by applicant]
CN 108491924A · 2018 [cited by applicant]
CN 109409513A · 2019 [cited by applicant]
WO 2018125462A1 · 2018 [cited by applicant]
Gurgel, Saskya TA, and Andrei de A. Formiga. “Parallel implementation of feedforward neural networks on GPUs.” 2013 Brazilian Conference on Intelligent Systems. IEEE, 2013. (Year: 2013). [cited by examiner]
Minkovich, Kirill, et al. “HRLSim: A high performance spiking neural network simulator for GPGPU clusters.” IEEE transactions on neural networks and learning systems 25.2 (2013): 316-331. (Year: 2013). [cited by examiner]
Eldridge, Schuyler, et al. “Towards general-purpose neural network computing.” 2015 International Conference on Parallel Architecture and Compilation (PACT). IEEE, 2015. (Year: 2015). [cited by examiner]
Sakivama, Kazumasa, et al. “Deep learning on large-scale muticore clusters.” 2018 30th International Symposium on Computer Architecture and High Performance Computing (SBAC-PAD). IEEE, Sep. 2018. (Year: 2018). [cited by examiner]
Gostovic, Marko, et al. “Experience from porting complex algorithms on heterogeneous multi-core systems.” 2017 IEEE 7th International Conference on Consumer Electronics-Berlin (ICCE-Berlin). IEEE, 2017. (Year: 2017). [cited by examiner]
Cunial, Lorenzo, et al. “Parallelized convolutions for embedded ultra low power deep learning soc.” 2018 IEEE 4th International Forum on Research and Technology for Society and Industry (RTSI). IEEE, Sep. 2018. (Year: 2… [cited by examiner]
Search Report and Written Opinion of Singaporean Application No. 11202103656S issued on Feb. 14, 2023. [cited by applicant]
International Search Report of the International Searching Authority for China National Intellectual Property Administration in PCT application No. PCT/CN2019/102139 issued on Nov. 27, 2019, which is an international ap… [cited by applicant]
The State Intellectual Property Office of People's Republic of China, First Office Action in Patent Application No. 201811180174.5 issued on Jun. 10, 2020, which is a foreign counterpart application corresponding to thi… [cited by applicant]
The State Intellectual Property Office of People's Republic of China, Second Office Action in Patent Application No. 201811180174.5 issued on Oct. 9, 2020, which is a foreign counterpart application corresponding to thi… [cited by applicant]
Notification to grant patent right for invention of Chinese application No. 201811180174.5 issued on Feb. 4, 2021. [cited by applicant]
Hu-Ming Zhu, et al; “Review of Parallel Deep Neural Network; Chinese Journal of Computers”, vol. 41, No. 8; Jan. 19, 2018. [cited by applicant]
Yumin Wang, et al; “Parallel Algorithm of Convolutional Neural Network in Multi-GPU Environment; Journal of Chinese Computer Systems”, Mar. 31, 2017. [cited by applicant]
Noriyuki Aibe, et al; “A probabilistic neural network hardware system using a learning-parameter parallel architecture; Proceedings of the 2002 International Joint Conference on Neural Networks. IJCNN”02 (Cat. No.02CH37… [cited by applicant]
Richard Neill, et al; “Automated Analysis of Task-Parallel Execution Behavior Via Artificial Neural Networks”, 2018 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), Aug. 6, 2018. [cited by applicant]