KR102449016B1 - A method of reducing I/O resources through asynchronous parallel processing that does not support events and its parallel processing device - Google Patents
A method of reducing I/O resources through asynchronous parallel processing that does not support events and its parallel processing device Download PDFInfo
- Publication number
- KR102449016B1 KR102449016B1 KR1020200186403A KR20200186403A KR102449016B1 KR 102449016 B1 KR102449016 B1 KR 102449016B1 KR 1020200186403 A KR1020200186403 A KR 1020200186403A KR 20200186403 A KR20200186403 A KR 20200186403A KR 102449016 B1 KR102449016 B1 KR 102449016B1
- Authority
- KR
- South Korea
- Prior art keywords
- output
- input
- data
- parallel processing
- api
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
- H04N21/4431—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB characterized by the use of Application Program Interface [API] libraries
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Library & Information Science (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Communication Control (AREA)
Abstract
이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법 및 그 병렬처리 장치가 개시된다. 일 실시 예에 따른 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법은, 입력용 API를 호출하여 데이터를 입력받아 소정의 알고리즘에 따라 처리하는 단계; 출력 유무 검사용 API를 호출하여, 상기 처리된 결과 데이터를 저장하는 내부 버퍼에 적어도 하나의 데이터가 저장되어 있는지를 검사하되, 이를 소정의 시간 T 단위로 소정의 횟수 N 번 반복 검사하는 단계; 및 상기 반복 검사를 수행하면서, 처리 결과 데이터가 상기 내부 버퍼에 저장되어 있으면 출력용 API를 호출하여 처리 결과 데이터를 사용자 프로그램에 전달하고, 저장되어 있지 않으면 널(NULL) 데이터를 사용자 프로그램에 전달하는 단계를 포함한다. 이렇게 하여 연동하고자 하는 비동기식 병렬 처리 모듈의 이벤트 지원 여부에 관계없이 항상 동일한 리소스만으로 입출력을 수행할 수 있다.Disclosed are a method for reducing input/output resources through asynchronous parallel processing that does not support events and an apparatus for parallel processing thereof. An input/output resource reduction method through asynchronous parallel processing that does not support an event according to an embodiment includes the steps of calling an input API to receive data and processing it according to a predetermined algorithm; Calling an API for checking whether output is present, checking whether at least one data is stored in an internal buffer for storing the processed result data, and repeatedly checking it N times a predetermined number of times in a predetermined time T unit; and while performing the iterative check, if the processing result data is stored in the internal buffer, calling the output API to deliver the processing result data to the user program, and if not stored, transferring null data to the user program includes In this way, I/O can always be performed using the same resource regardless of whether the event is supported by the asynchronous parallel processing module to be interlocked.
Description
본 발명은 병렬처리 기술에 관한 것으로, 보다 구체적으로는 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법 및 그 병렬처리 장치에 관한 것이다.The present invention relates to parallel processing technology, and more particularly, to a method of reducing input/output resources through asynchronous parallel processing that does not support events, and a parallel processing apparatus thereof.
일반적으로 성능 향상을 목적으로 하여 프로그램 구조를 병렬화 할 때, 멀티 스레딩 또는 멀티 프로세싱을 통해 여러 작업을 동시에 수행할 수 있도록 설계하며 이러한 처리 구조를 비동기식 병렬 처리 모델이라고 한다. 이 때 병렬 처리 모델에 적용될 수 있는 모듈은 입출력을 가지고 어떤 작업을 수행하기 위한 단위 요소이며, 라이브러리, 알고리즘 또는 함수 등이 될 수 있다.In general, when parallelizing a program structure for the purpose of improving performance, it is designed to perform multiple tasks simultaneously through multi-threading or multi-processing, and this processing structure is called an asynchronous parallel processing model. In this case, a module that can be applied to the parallel processing model is a unit element for performing a certain operation with input/output, and may be a library, algorithm, or function.
예를 들어, 1초에 30 프레임씩 촬영되는 실시간 영상에 대해, 각 작업 수행에 따른 소요 시간이 약 33ms인 3가지 작업(작업 1, 2, 3)을 수행한다고 가정하면, 동기식 처리 모델로 프로그램을 구현하는 경우, 입력과 출력이 동시에 이루어져야 하기 때문에 각 작업들은 개별적으로 수행될 수 없어 작업 1에 대한 입력-처리-출력이 먼저 수행되고, 이어서 작업 2와 작업 3이 순차적으로 처리되므로 1개 프레임에 대해 작업 1~3을 수행하는데 걸리는 시간은 99ms이다. 즉 영상 입력 후 작업 1~3이 처리된 결과를 출력으로 얻기까지 99ms의 지연이 발생하므로 프레임 1을 처리하는 동안에 다음 프레임 2, 3은 처리할 수 없어 버려지므로 데이터의 67% 가량이 처리될 수 없어 데이터 손실율이 67%가 된다.For example, assuming that 3 tasks (tasks 1, 2, and 3) are performed with a time required for each task execution of about 33 ms for a real-time image captured at 30 frames per second, the program is programmed with a synchronous processing model. Since input and output must be performed at the same time, each task cannot be performed individually, so input-processing-output for task 1 is performed first, and then task 2 and task 3 are sequentially processed, so one frame The time it takes to perform tasks 1 to 3 for , is 99 ms. In other words, after image input, there is a delay of 99 ms until the processed result of tasks 1 to 3 is obtained as an output. Therefore, while processing frame 1, frames 2 and 3 cannot be processed and are discarded, so about 67% of the data can be processed. There is no data loss rate of 67%.
반면 비동기식 처리 모델의 경우, 입력과 출력이 각각 별도의 요청에 의해 처리되기 때문에 각 작업들은 병렬 처리에 의해 개별적으로 수행될 수 있다. 즉, 작업 1이 수행되는 동안 작업 2와 작업 3이 수행될 수 있다. 따라서 1개 프레임에 대해 작업 1~3을 순서대로 수행하는데 걸리는 시간 및 지연은 동일하게 99ms이지만, 프레임 1의 작업 2가 수행되는 동안 프레임 2의 작업 1이 수행될 수 있으므로 손실 없이 모든 데이터를 처리할 수 있으며, 결과적으로 초당 30 프레임을 실시간으로 처리할 수 있게 된다.On the other hand, in the case of the asynchronous processing model, since input and output are processed by separate requests, each operation can be individually performed by parallel processing. That is, tasks 2 and 3 may be performed while task 1 is being performed. Therefore, for one frame, the time and delay to perform tasks 1-3 in sequence is the same 99ms, but since task 1 of frame 2 can be performed while task 2 of frame 1 is being performed, all data is processed without loss As a result, it is possible to process 30 frames per second in real time.
이렇게 비동기식 처리 모델이 실현되기 위해서는, 입력과 출력이 분리되어 각각 별도의 요청에 의해 처리될 수 있어야 한다. 다시 말하면, 동기식의 경우 입출력이 동시에 처리될 수 있으므로, 최소 1개의 API를 지원해도 되며 별도의 버퍼가 필요하지 않은 반면, 비동기식의 경우 입력, 출력을 분리해야 하여 입출력이 별도로 처리될 수 있어야 하므로, 최소 2개의 API를 지원해야 하며 별도의 버퍼가 필요하다.In order to realize this asynchronous processing model, the input and output must be separated so that each can be processed by a separate request. In other words, in the case of synchronous, input and output can be processed at the same time, so at least one API can be supported and a separate buffer is not required. At least two APIs must be supported and a separate buffer is required.
도 1은 일반적인 비동기식 병렬 처리 모듈의 데이터 흐름을 설명하기 위한 도면이다.1 is a diagram for explaining a data flow of a general asynchronous parallel processing module.
도 1을 참조하면, 통상적으로 비동기식으로 설계된 병렬 처리 모듈(20)의 수행 결과를 얻기 위해서는, 사용자 프로그램(10)은 입력 단(입력 스레드)(110)과 분리된 별도의 스레드(출력 스레드)(120)를 생성하고 출력용 API(140)를 통해 출력 발생 유무를 검사하여 병렬 처리 모듈(20)의 수행이 완료되면 그 결과를 가져오도록 한다.Referring to FIG. 1 , in order to obtain the execution result of the
이러한 비동기식 구조는 입력, 수행, 출력을 동시에 수행할 수 있게 되지만 결국 동기식 순차 처리와 마찬가지로 병렬 처리 모듈(20)의 수행이 완료되어야 출력을 얻을 수 있으므로, 출력 스레드(120)에서는 병렬 처리 모듈(20)의 수행이 완료될 때까지 대기하며 출력 유무를 지속적으로 검사해야 한다. In this asynchronous structure, input, execution, and output can be performed simultaneously, but in the end, like synchronous sequential processing, an output can be obtained only when the
그런데 국내에서 대중적으로 사용되는 Windows 운영 체제의 경우 출력 유무의 검사는 일반적으로 이벤트를 통해 이루어지며, 다음 표 1과 형태의 코드로 출력 스레드가 구현될 수 있다.However, in the case of the Windows operating system that is popularly used in Korea, the check of the presence or absence of output is generally performed through an event, and an output thread can be implemented with the code shown in Table 1 below.
if ( WaitForSingleObject(EVENT) == WAIT_OBJECT_0 ) { // (1) 출력 완료 이벤트 검사 구문
C = asynchronous_proc_output(); // (2) 출력용 API 호출을 통한 모듈 수행 결과 획득
…
}
…
}while (true) {
if ( WaitForSingleObject(EVENT) == WAIT_OBJECT_0 ) { // (1) Output completion event check statement
C = asynchronous_proc_output(); // (2) Acquire module execution result through API call for output
…
}
…
}
출력 스레드는 위의 (1)에 해당하는 위치에서 출력이 발생될 때까지 대기 상태가 되고 이때는 CPU 리소스를 거의 요구하지 않는다. 그리고 모듈 수행이 완료되고 출력 완료에 대한 이벤트가 발생되면 대기 상태에서 깨어나, (2)에 해당하는 위치에서 앞에서 예시로 든 asynchronous_proc_output()과 같은 출력용 API를 통해 모듈 수행 결과를 가져와 사용한다. 여기에서 asynchronous_proc_output()은 Windows 운영 체제에서 실제로 제공되는 API가 아니라, 표 1의 예시를 위해 임의로 설정한 명칭이다.The output thread waits until output is generated at the location corresponding to (1) above, and hardly requires CPU resources at this time. And when the module execution is completed and an event for output completion occurs, it wakes up from the standby state, and uses the module execution result from the position corresponding to (2) through the output API such as asynchronous_proc_output(). Here, asynchronous_proc_output() is not an API actually provided in the Windows operating system, but an arbitrarily set name for the example in Table 1.
그러나 이러한 출력 스레드 운영 방식은 모듈에서 이벤트를 지원해야 한다는 제약이 따른다. 이벤트를 지원하려면 모듈 개발자 및 사용자 모두 이벤트 통지에 기반한 시스템 프로그래밍 지식을 알고 있어야 하고, 이벤트를 지원하기 위해 특정 OS에 종속되거나 이벤트를 사용하기 위한 라이브러리를 포함하고 있어야 하기 때문에 오픈 소스를 비롯한 많은 모듈들은 이벤트를 지원하지 않는 경우가 많다. 이러한 모듈의 경우 이벤트 대신 true/false 같은 형태로 출력 유무를 검사하기 위한 API를 추가로 제공하며, 다음 표 2와 같은 형태의 코드로 출력 스레드가 구현될 수 있다.However, this output thread operation method is limited in that the module must support events. In order to support events, both module developers and users need to know system programming knowledge based on event notification, and to support events, they must depend on a specific OS or contain libraries for using events. Events are often not supported. In the case of such a module, an API for checking the presence or absence of output in the form of true/false is additionally provided instead of an event, and an output thread can be implemented with the code shown in Table 2 below.
if ( asynchronous_is_availbale() == true ) { // (1) 출력 완료 여부 검사 구문
C = asynchronous_proc_output(); // (2) 출력용 API 호출을 통한 모듈 수행 결과 획득
…
}
else {
Sleep(N); // (3) 출력 검사 간격
}
…
}while (true) {
if ( asynchronous_is_availbale() == true ) { // (1) Output completion check statement
C = asynchronous_proc_output(); // (2) Acquire module execution result through API call for output
…
}
else {
Sleep(N); // (3) output check interval
}
…
}
그런데 이 경우 출력 완료 여부를 검사하기 위해 출력 스레드에서 계속 루프를 돌며 검사용 API를 반복적으로 호출해야 한다. 즉 출력이 발생하기 전까지 스레드를 대기 상태로 만드는 이벤트 기반 검사와 달리, 출력 유무에 관계없이 지속적으로 반복문을 돌며 CPU를 점유하게 된다. 이 경우 일반적인 데스크탑에서 CPU 사용률이 100%까지 치솟는 현상을 쉽게 볼 수 있으며, 이를 위해 Sleep()을 명령을 추가하여 스레드를 특정 시간 간격으로 중지시킬 수 있으나, 모듈의 알고리즘 성능이나 시스템 상태에 따라 수행 시간이 변화하기 때문에 명확한 기준을 정하기 어렵다.However, in this case, in order to check whether the output is complete, the output thread must loop continuously and repeatedly call the inspection API. In other words, unlike event-based inspection, which puts the thread in a waiting state until an output occurs, it continuously loops regardless of whether there is an output or not and occupies the CPU. In this case, it is easy to see the CPU usage rate soaring to 100% on a typical desktop. For this, a Sleep() command can be added to stop the thread at a specific time interval, but it is performed depending on the algorithm performance of the module or the system state. Because time changes, it is difficult to set clear standards.
일 실시 예에 따라, 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법 및 그 병렬처리 장치를 제공하고자 한다.According to an embodiment, an object of the present invention is to provide a method for reducing input/output resources through asynchronous parallel processing that does not support events, and a parallel processing apparatus thereof.
즉, 이벤트를 지원하지 않는 비동기식 병렬 처리 모듈의 입출력 리소스 절감 방법을 제안한다. 이벤트를 지원하지 않는 비동기식 모듈의 출력 유무를 검사하기 위해 발생되는 리소스를 절감함으로써 전체적인 시스템 안정성을 확보하는 것을 목적으로 한다.In other words, we propose a method of reducing I/O resources of an asynchronous parallel processing module that does not support events. The purpose of this is to secure overall system stability by reducing the resources generated to check the output of asynchronous modules that do not support events.
일 실시 예에 따른 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법은, 입력용 API를 호출하여 데이터를 입력받아 소정의 알고리즘에 따라 처리하는 단계; 출력 유무 검사용 API를 호출하여, 상기 처리된 결과 데이터를 저장하는 내부 버퍼에 적어도 하나의 데이터가 저장되어 있는지를 검사하되, 이를 소정의 시간 T 단위로 소정의 횟수 N 번 반복 검사하는 단계; 및 상기 반복 검사를 수행하면서, 처리 결과 데이터가 상기 내부 버퍼에 저장되어 있으면 출력용 API를 호출하여 처리 결과 데이터를 사용자 프로그램에 전달하고, 저장되어 있지 않으면 널(NULL) 데이터를 사용자 프로그램에 전달하는 단계를 포함한다.An input/output resource reduction method through asynchronous parallel processing that does not support an event according to an embodiment includes the steps of calling an input API to receive data and processing it according to a predetermined algorithm; Calling an API for checking whether output is present, checking whether at least one data is stored in an internal buffer for storing the processed result data, and repeatedly checking it N times a predetermined number of times in a predetermined time T unit; and while performing the iterative check, if the processing result data is stored in the internal buffer, calling the output API to deliver the processing result data to the user program, and if not stored, transferring null data to the user program includes
상기 내부 버퍼는 큐 방식의 저장 장치일 수 있으며, 상기 소정의 시간 T는 출력 유무 검사를 지속하면서 대기하는 시간이며, 상기 소정의 횟수 N은 한번의 입력에 대해 출력 유무를 검사하는 횟수일 수 있다.The internal buffer may be a queue-type storage device, the predetermined time T may be a waiting time while continuing to check whether an output is present, and the predetermined number N may be the number of times to check whether an output exists for one input .
또한 상기 입력용 API의 호출을 통한 데이터의 입력, 상기 출력 유무 검사용 API 호출을 통한 검사 및 상기 출력용 API 호출을 통한 데이터의 출력은 비동기식으로 병렬적으로 수행될 수 있다.In addition, the input of data through the call of the API for input, the check through the call of the API for checking whether the output is present, and the output of the data through the call of the API for the output may be asynchronously and parallelly performed.
한편, 다른 실시 예에 따른 이벤트를 지원하지 않는 비동기식 병렬처리 장치는, 내부 버퍼; 데이터를 입력받아 소정의 알고리즘에 따라 처리된 처리 결과 데이터를 상기 내부 버퍼에 저장하는 입력용 API 모듈; 상기 내부 버퍼에 적어도 하나의 데이터가 저장되어 있는지를 검사하되, 이를 소정의 시간 T 단위로 소정의 횟수 N 번 반복 검사하는 검사용 API 모듈; 및 상기 반복 검사를 수행하면서, 처리 결과 데이터가 상기 내부 버퍼에 저장되어 있으면 이를 사용자 프로그램에 전달하고, 저장되어 있지 않으면 널(NULL) 데이터를 사용자 프로그램에 전달하는 출력용 API 모듈을 포함할 수 있다.On the other hand, an asynchronous parallel processing device that does not support an event according to another embodiment, an internal buffer; an input API module for receiving data and storing processing result data processed according to a predetermined algorithm in the internal buffer; an API module for checking whether at least one data is stored in the internal buffer, and repeatedly checking it N times a predetermined number of times in a predetermined time T unit; and an API module for output that transmits the processing result data to the user program if it is stored in the internal buffer while performing the iterative check, and transmits null data to the user program if it is not stored.
내부 버퍼는 큐 방식의 저장 장치일 수 있으며, 상기 소정의 시간 T는 출력 유무 검사를 지속하면서 대기하는 시간이며, 상기 소정의 횟수 N은 한번의 입력에 대해 출력 유무를 검사하는 횟수일 수 있다.The internal buffer may be a queue-type storage device, the predetermined time T may be a waiting time while continuing to check whether an output is present, and the predetermined number N may be the number of times to check whether an output exists for one input.
또한, 상기 입력용 API 모듈의 호출을 통한 데이터의 입력, 상기 검사용 API 모듈의 호출을 통한 검사 및 상기 출력용 API 모듈의 호출을 통한 데이터의 출력은 비동기식으로 병렬적으로 수행될 수 있다.In addition, the input of data through the call of the API for input module, the check through the call of the API module for examination and the output of data through the call of the API module for output may be asynchronously and parallelly performed.
일 실시 예에 따른 비동기식 병렬처리를 통한 입출력 리소스 절감 방법은, 연동하고자 하는 비동기식 병렬 처리 모듈의 이벤트 지원 여부에 관계없이 항상 동일한 리소스만으로 입출력을 수행할 수 있다.The method of reducing input/output resources through asynchronous parallel processing according to an embodiment may always perform input/output with only the same resource regardless of whether an event is supported by an asynchronous parallel processing module to be interlocked.
도 1은 일반적인 비동기식 병렬 처리 모듈의 데이터 흐름을 설명하기 위한 도면,
도 2는 본 발명의 일 실시 예에 따른 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법의 흐름도,
도 3은 본 발명의 일 실시 예에 따른 이벤트를 지원하지 않는 비동기식 병렬처리 장치의 구성도,
도 4는 본 발명의 일 실시 예에 따른 입출력 리소스 절감 방법을 실시간 영상 처리에 적용한 예를 설명하기 위한 도면이다.1 is a diagram for explaining the data flow of a general asynchronous parallel processing module;
2 is a flowchart of a method of reducing input/output resources through asynchronous parallel processing that does not support events according to an embodiment of the present invention;
3 is a block diagram of an asynchronous parallel processing device that does not support an event according to an embodiment of the present invention;
4 is a diagram for explaining an example in which the input/output resource reduction method according to an embodiment of the present invention is applied to real-time image processing.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention, and a method of achieving them will become apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in various different forms, and only these embodiments allow the disclosure of the present invention to be complete, and common knowledge in the art to which the present invention pertains. It is provided to fully inform the possessor of the scope of the invention, and the present invention is only defined by the scope of the claims. Like reference numerals refer to like elements throughout.
본 발명의 실시 예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이며, 후술되는 용어들은 본 발명의 실시 예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.In describing the embodiments of the present invention, if it is determined that a detailed description of a well-known function or configuration may unnecessarily obscure the gist of the present invention, the detailed description will be omitted, and the terms to be described later are used in the embodiment of the present invention. As terms defined in consideration of the function of Therefore, the definition should be made based on the content throughout this specification.
첨부된 블록도의 각 블록과 흐름도의 각 단계의 조합들은 컴퓨터 프로그램인스트럭션들(실행 엔진)에 의해 수행될 수도 있으며, 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장치의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장치의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다.Each block in the accompanying block diagram and combinations of each step in the flowchart may be executed by computer program instructions (execution engine), which computer program instructions are transmitted to the processor of a general-purpose computer, special-purpose computer, or other programmable data processing device. It may be mounted so that its instructions, which are executed by the processor of a computer or other programmable data processing device, create means for performing the functions described in each block of the block diagram or in each step of the flowchart.
이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장치를 지향할 수 있는 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다.These computer program instructions may also be stored in a computer-usable or computer-readable memory that may direct a computer or other programmable data processing device to implement a function in a particular manner, and thus the computer-usable or computer-readable memory. It is also possible for the instructions stored in the block diagram to produce an article of manufacture containing instruction means for performing a function described in each block of the block diagram or each step of the flowchart.
그리고 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장치 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장치 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장치를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명되는 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.And since the computer program instructions may be mounted on a computer or other programmable data processing device, a series of operational steps is performed on the computer or other programmable data processing device to create a computer-executed process to create a computer or other programmable data processing device. It is also possible that the instructions for performing the data processing apparatus provide steps for executing the functions described in each block of the block diagram and each step of the flowchart.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능들을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있으며, 몇 가지 대체 실시 예들에서는 블록들 또는 단계들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하며, 또한 그 블록들 또는 단계들이 필요에 따라 해당하는 기능의 역순으로 수행되는 것도 가능하다.Additionally, each block or step may represent a module, segment, or portion of code comprising one or more executable instructions for executing specified logical functions, and in some alternative embodiments the blocks or steps referred to in the block or step. It should be noted that it is also possible for functions to occur out of sequence. For example, it is possible that two blocks or steps shown one after another may be performed substantially simultaneously, and also the blocks or steps may be performed in the reverse order of the corresponding functions, if necessary.
이하, 첨부 도면을 참조하여 본 발명의 실시 예를 상세하게 설명한다. 그러나 다음에 예시하는 본 발명의 실시 예는 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 다음에 상술하는 실시 예에 한정되는 것은 아니다. 본 발명의 실시 예는 이 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위하여 제공된다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the embodiments of the present invention illustrated below may be modified in various other forms, and the scope of the present invention is not limited to the embodiments described below. The embodiments of the present invention are provided to more completely explain the present invention to those of ordinary skill in the art to which the present invention pertains.
도 2는 본 발명의 일 실시 예에 따른 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법의 흐름도이다.2 is a flowchart of a method of reducing input/output resources through asynchronous parallel processing that does not support events according to an embodiment of the present invention.
먼저, 입력용 API를 호출하여 데이터를 입력받아 소정의 알고리즘에 따라 처리한다(210). 여기서 소정의 알고리즘에 따른 처리는 입출력을 가지고 수행하는 모든 작업이 될 수 있으며, 라이브러리, 알고리즘 또는 함수 등이 될 수 있다. 그리고 출력 유무 검사용 API를 호출하여, 상기 처리된 결과 데이터를 저장하는 내부 버퍼에 적어도 하나의 데이터가 저장되어 있는지를 판단한다(220). 판단 결과, 만일 결과 데이터가 저장되어 있으면 이를 출력한다(230). 즉 처리 결과 데이터가 내부 버퍼에 저장되어 있으면 출력용 API를 호출하여 처리 결과 데이터를 사용자 프로그램에 전달한다.First, the input API is called to receive data and process it according to a predetermined algorithm ( 210 ). Here, processing according to a predetermined algorithm may be any operation performed with input/output, and may be a library, algorithm, or function. Then, it is determined whether at least one data is stored in an internal buffer for storing the processed result data by calling the output check API ( 220 ). As a result of the determination, if the result data is stored, it is output ( 230 ). That is, if the processing result data is stored in the internal buffer, the API for output is called and the processing result data is delivered to the user program.
판단 결과, 만일 결과 데이터가 저장되어 있지 않으면 출력 유무 검사를 N 회 검사하였는지 판단한다(240). 여기서 N은 한번의 입력에 대해 출력 유무를 검사하는 횟수로 사용자에 의해 설정된 값이다. 만일 N 회 검사하였음에도 처리 결과 데이터가 내부 버퍼에 저장되어 있지 않으면 널(NULL) 데이터를 사용자 프로그램에 전달한다(250). 그리고, 출력 유무 검사 횟수가 N 회 미만이면, T 시간 동안 대기(260) 한 후, 다시 출력 유무 검사를 수행한다(220). 여기서 시간 T는 출력 유무 검사를 지속하면서 대기하는 시간이며 사용자에 의해 설정된 값이다. 이렇게 소정의 시간 T 단위로 소정의 횟수 N 번 반복 검사한다.As a result of the determination, if the result data is not stored, it is determined whether the output check is performed N times (240). Here, N is a value set by the user as the number of times to check whether an output exists for one input. If the processing result data is not stored in the internal buffer even after checking N times, null data is transferred to the user program ( 250 ). And, if the number of times of checking whether output is present is less than N times, after waiting 260 for T time, the check of whether or not output is performed again is performed ( 220 ). Here, the time T is the waiting time while continuing the output check, and is a value set by the user. In this way, the test is repeated N times a predetermined number of times in a predetermined time T unit.
한편, 내부 버퍼는 큐 방식의 저장 장치일 수 있으며, 이렇게 함으로써 입력용 API의 호출을 통한 데이터의 입력, 출력 유무 검사용 API의 호출을 통한 검사 및 출력용 API 호출을 통한 데이터의 출력은 비동기식으로 병렬적으로 수행된다.On the other hand, the internal buffer may be a queue-type storage device, whereby input of data through the call of the API for input, inspection through the call of the API for checking whether output is present, and the output of data through the call of the API for output are asynchronously parallel is performed negatively.
도 3은 본 발명의 일 실시 예에 따른 이벤트를 지원하지 않는 비동기식 병렬처리 장치의 구성도이다.3 is a block diagram of an asynchronous parallel processing device that does not support an event according to an embodiment of the present invention.
비동기식 병렬처리 장치(40)는 입력용 API 모듈(320), 내부 버퍼(330), 검사용 API 모듈(340) 및 출력용 API 모듈(350)을 포함한다.The asynchronous
입력용 API 모듈(320)은, 데이터를 입력받아 소정의 알고리즘에 따라 처리된 처리 결과 데이터를 내부 버퍼(330)에 저장한다. 여기서 소정의 알고리즘에 따른 처리는 입출력을 가지고 수행하는 모든 작업이 될 수 있으며, 라이브러리, 알고리즘 또는 함수 등이 될 수 있다. 내부 버퍼(330)는 큐 방식의 저장 장치일 수 있다.The
검사용 API 모듈(340)은 내부 버퍼(330)에 적어도 하나의 데이터가 저장되어 있는지를 검사하되, 이를 소정의 시간 T 단위로 소정의 횟수 N 번 반복 검사한다. 전술한 바와 같이, 소정의 시간 T는 출력 유무 검사를 지속하면서 대기하는 시간이며, 소정의 횟수 N은 한번의 입력에 대해 출력 유무를 검사하는 횟수이다.The
출력용 API 모듈(350)은 반복 검사를 수행하면서, 처리 결과 데이터가 내부 버퍼(330)에 저장되어 있으면 이를 사용자 프로그램(30) 내에서 출력용 API 모듈(350)을 호출한 메인 스레드(310)에 전달하고, 저장되어 있지 않으면 널(NULL) 데이터를 메인 스레드(310)에 전달한다. The
이렇게 입력용 API 모듈(320)의 호출을 통한 데이터의 입력, 검사용 API 모듈(340)의 호출을 통한 검사 및 출력용 API 모듈(350)의 호출을 통한 데이터의 출력은 비동기식으로 병렬적으로 수행된다.In this way, the input of data through the call of the
도 2 및 도 3의 실시 예에 따른 방법을 수행함으로써 사용자는 연동하고자 하는 비동기식 병렬 처리 모듈의 이벤트 지원 여부에 관계없이 항상 동일한 리소스만으로 입출력을 수행할 수 있다. 한 번의 입력에 대해 출력을 검사하는 횟수 N과, 검사 시마다 스레드를 대기 상태로 전환하기 위한 시간 T를 지정함으로써, 매번 최대 N x T 시간 내에 입출력이 완료된다. 또한, 이 때 하나의 입력에 대한 수행 결과를 출력으로 얻기까지 걸리는 최대 지연 시간은 입력 단위 시간의 곱으로 나타난다.By performing the method according to the embodiment of FIGS. 2 and 3 , the user can always perform input/output using the same resource regardless of whether an event is supported by the asynchronous parallel processing module to be interlocked. By specifying the number of times N to check the output for one input, and the time T to put the thread into the waiting state for each check, the input/output is completed within a maximum of N x T time each time. In addition, at this time, the maximum delay time required to obtain the result of performing one input as an output is expressed as the product of the input unit time.
도 4는 본 발명의 일 실시예에 따른 입출력 리소스 절감 방법을 실시간 영상 처리에 적용한 예를 설명하기 위한 도면이다.4 is a diagram for explaining an example of applying the input/output resource saving method to real-time image processing according to an embodiment of the present invention.
예를 들어, 초당 30프레임, 즉 33ms 간격으로 지속적으로 입력되는 실시간 영상에 대해, 50ms의 수행 시간이 걸리는 알고리즘을 비동기식 병렬 처리 방식으로 적용하는 상황을 가정해 보자. 이벤트는 지원되지 않으며, 입력 및 출력 처리 시간은 무시하기로 한다.For example, suppose that an algorithm that takes 50 ms execution time is applied in an asynchronous parallel processing method for a real-time image that is continuously input at 30 frames per second, that is, at an interval of 33 ms. Events are not supported, and input and output processing times are ignored.
만약 동기식 순차 처리 방식을 적용하면, 도 4의 (a)와 같이 2개의 입력 프레임에서 1개의 출력밖에 얻지 못하게 되어 50%의 데이터가 손실된다. 또한, 스레드를 이용한 비동기식 병렬 처리 구조를 적용한다면 도 4의 (b)와 같이 50ms의 지연과 0%의 손실율을 가지지만, 매 프레임 당 50ms 시간 동안 출력을 검사해야 하고 그만큼 시스템 리소스가 요구된다. Sleep() 같은 대기 상태 전환 명령이 없는 경우, 시스템 성능에 따라 매 프레임 당 수만 번 이상의 검사가 발생할 수 있다.If the synchronous sequential processing method is applied, only one output is obtained from two input frames as shown in FIG. 4A , and 50% of data is lost. In addition, if an asynchronous parallel processing structure using threads is applied, it has a delay of 50 ms and a loss rate of 0% as shown in FIG. In the absence of a standby state transition command such as Sleep(), tens of thousands of checks may occur per frame depending on system performance.
반면, 본 발명의 일 실시 예에 따른 방법을 적용하면 N, T 값의 설정에 따라 다양하게 지연 시간 및 리소스 요구량을 조절할 수 있는데, 예를 들어 N=6, T=3으로 매 입력마다 18ms 동안만 출력을 검사하게 한다고 하면, 도 4의 (c)와 같이 51ms의 지연이 발생하지만 출력을 검사하는 데 필요한 시스템 리소스는 매 프레임 최대 15ms밖에 요구되지 않는다. 그리고 실제로는 재검사 시 대기 상태로 전환되며, 검사 성공 시 반복이 종료되므로 더 적은 리소스를 사용할 수도 있다, 만약 N=1, T=0으로 반복 없이 매 입력마다 한 번만 출력을 검사하게 설정하면 출력을 검사하는데 필요한 시스템 리소스는 0에 수렴한다.On the other hand, if the method according to an embodiment of the present invention is applied, the delay time and resource demand can be variously adjusted according to the setting of N and T values. For example, N = 6, T = 3 for 18 ms for every input. If only the output is checked, a delay of 51 ms occurs as shown in (c) of FIG. 4, but the system resource required to check the output is only required up to 15 ms in every frame. And actually, it is converted to a standby state when re-testing, and since the iteration is terminated when the test is successful, fewer resources can be used. The system resources required to check converge to zero.
이제까지 본 발명에 대하여 그 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.Up to now, the present invention has been looked at focusing on the embodiments thereof. Those of ordinary skill in the art to which the present invention pertains will understand that the present invention can be implemented in modified forms without departing from the essential characteristics of the present invention. Therefore, the disclosed embodiments should be considered in an illustrative rather than a restrictive sense. The scope of the present invention is indicated in the claims rather than the foregoing description, and all differences within the scope equivalent thereto should be construed as being included in the present invention.
Claims (8)
입력용 API를 호출하여 데이터를 입력받아 소정의 알고리즘에 따라 처리하는 단계;
출력 유무 검사용 API를 호출하여, 상기 처리된 결과 데이터를 저장하는 내부 버퍼에 적어도 하나의 데이터가 저장되어 있는지를 검사하되, 이를 소정의 시간 T 단위로 소정의 횟수 N 번 반복 검사하는 단계; 및
상기 반복 검사를 수행하면서, 처리 결과 데이터가 상기 내부 버퍼에 저장되어 있으면 출력용 API를 호출하여 처리 결과 데이터를 사용자 프로그램에 전달하고, 저장되어 있지 않으면 널(NULL) 데이터를 사용자 프로그램에 전달하는 단계를 포함하는 것을 특징으로 하는 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법.In the method of reducing input/output resources using an asynchronous parallel processing unit that does not support events, the asynchronous parallel processing unit
receiving data by calling an input API and processing it according to a predetermined algorithm;
Calling an API for checking whether output is present, checking whether at least one data is stored in an internal buffer for storing the processed result data, and repeatedly checking it N times a predetermined number of times in a predetermined time T unit; and
While performing the iterative check, if the processing result data is stored in the internal buffer, calling the output API to deliver the processing result data to the user program, and if not stored, passing null data to the user program A method of reducing input/output resources through asynchronous parallel processing that does not support events, characterized in that it includes.
상기 내부 버퍼는 큐 방식의 저장 장치인 것을 특징으로 하는 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법.The method of claim 1,
The method of reducing input/output resources through asynchronous parallel processing that does not support events, characterized in that the internal buffer is a queue-type storage device.
상기 소정의 시간 T는 출력 유무 검사를 지속하면서 대기하는 시간이며, 상기 소정의 횟수 N은 한번의 입력에 대해 출력 유무를 검사하는 횟수인 것을 특징으로 하는 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법.The method of claim 1,
The predetermined time T is a waiting time while continuing to check whether the output exists, and the predetermined number N is the number of times to check whether an output exists for one input. Input/output through asynchronous parallel processing without supporting an event How to save resources.
상기 입력용 API의 호출을 통한 데이터의 입력, 상기 출력 유무 검사용 API 호출을 통한 검사 및 상기 출력용 API 호출을 통한 데이터의 출력은 비동기식으로 병렬적으로 수행되는 것을 특징으로 하는 이벤트를 지원하지 않는 비동기식 병렬처리를 통한 입출력 리소스 절감 방법.The method of claim 1,
Asynchronous, which does not support events, characterized in that the input of data through the call of the API for input, the check through the call of the API for checking whether the output is present, and the output of the data through the call of the API for the output are performed asynchronously and in parallel How to reduce I/O resources through parallel processing.
데이터를 입력받아 소정의 알고리즘에 따라 처리된 처리 결과 데이터를 상기 내부 버퍼에 저장하는 입력용 API 모듈;
상기 내부 버퍼에 적어도 하나의 데이터가 저장되어 있는지를 검사하되, 이를 소정의 시간 T 단위로 소정의 횟수 N 번 반복 검사하는 검사용 API 모듈; 및
상기 반복 검사를 수행하면서, 처리 결과 데이터가 상기 내부 버퍼에 저장되어 있으면 이를 사용자 프로그램에 전달하고, 저장되어 있지 않으면 널(NULL) 데이터를 사용자 프로그램에 전달하는 출력용 API 모듈을 포함하는 것을 특징으로 하는 이벤트를 지원하지 않는 비동기식 병렬처리 장치.internal buffer;
an input API module for receiving data and storing processing result data processed according to a predetermined algorithm in the internal buffer;
an API module for checking whether at least one data is stored in the internal buffer, and repeatedly checking it N times a predetermined number of times in a predetermined time T unit; and
While performing the iterative check, if the processing result data is stored in the internal buffer, it transmits it to the user program, and if it is not stored, it includes an API module for output that transmits null data to the user program Asynchronous parallel processing units that do not support events.
상기 내부 버퍼는 큐 방식의 저장 장치인 것을 특징으로 하는 이벤트를 지원하지 않는 비동기식 병렬처리 장치.6. The method of claim 5,
The internal buffer is an asynchronous parallel processing device that does not support an event, characterized in that the queue-type storage device.
상기 소정의 시간 T는 출력 유무 검사를 지속하면서 대기하는 시간이며, 상기 소정의 횟수 N은 한번의 입력에 대해 출력 유무를 검사하는 횟수인 것을 특징으로 하는 이벤트를 지원하지 않는 비동기식 병렬처리 장치.6. The method of claim 5,
The predetermined time T is a waiting time while continuously checking whether an output is present, and the predetermined number N is the number of times to check whether an output exists for one input.
상기 입력용 API 모듈의 호출을 통한 데이터의 입력, 상기 검사용 API 모듈의 호출을 통한 검사 및 상기 출력용 API 모듈의 호출을 통한 데이터의 출력은 비동기식으로 병렬적으로 수행되는 것을 특징으로 하는 이벤트를 지원하지 않는 비동기식 병렬처리 장치.6. The method of claim 5,
Input of data through the call of the API module for input, the test through the call of the API module for inspection, and the output of data through the call of the API module for output support an event, characterized in that asynchronously and in parallel Asynchronous parallel processing units that do not.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200186403A KR102449016B1 (en) | 2020-12-29 | 2020-12-29 | A method of reducing I/O resources through asynchronous parallel processing that does not support events and its parallel processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200186403A KR102449016B1 (en) | 2020-12-29 | 2020-12-29 | A method of reducing I/O resources through asynchronous parallel processing that does not support events and its parallel processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220094801A KR20220094801A (en) | 2022-07-06 |
KR102449016B1 true KR102449016B1 (en) | 2022-09-29 |
Family
ID=82400495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200186403A Active KR102449016B1 (en) | 2020-12-29 | 2020-12-29 | A method of reducing I/O resources through asynchronous parallel processing that does not support events and its parallel processing device |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102449016B1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130055272A1 (en) | 2007-04-11 | 2013-02-28 | Aaftab Munshi | Parallel runtime execution on multiple processors |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100594430B1 (en) * | 2004-12-14 | 2006-06-30 | 한국전자통신연구원 | Asynchronous I / O Processing in Network Environment |
KR101134464B1 (en) * | 2009-05-19 | 2012-04-13 | 한국전자통신연구원 | Method and apparatus for providing network asynchronous input/output processing |
KR101988444B1 (en) * | 2017-11-14 | 2019-06-12 | 엔에이치엔 주식회사 | A method of optimizing a domain of an API server responding to a call of a specific function and a terminal implementing the method |
-
2020
- 2020-12-29 KR KR1020200186403A patent/KR102449016B1/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130055272A1 (en) | 2007-04-11 | 2013-02-28 | Aaftab Munshi | Parallel runtime execution on multiple processors |
Also Published As
Publication number | Publication date |
---|---|
KR20220094801A (en) | 2022-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535367B (en) | Task scheduling method and related device | |
CN107450971B (en) | Task processing method and device | |
CN106802826A (en) | A kind of method for processing business and device based on thread pool | |
CN107943592B (en) | GPU cluster environment-oriented method for avoiding GPU resource contention | |
US20110185358A1 (en) | Parallel query engine with dynamic number of workers | |
JP7122299B2 (en) | Methods, apparatus, devices and storage media for performing processing tasks | |
CN112748855B (en) | Method and device for processing high concurrency data request | |
JP2009151645A (en) | Parallel processing device and program parallelization device | |
CN105224410A (en) | A kind of GPU of scheduling carries out method and the device of batch computing | |
CN111666141A (en) | Task scheduling method, device and equipment and computer storage medium | |
CN110955503A (en) | Task scheduling method and device | |
US10310915B2 (en) | Efficient sequencer for multiple concurrently-executing threads of execution | |
KR102449016B1 (en) | A method of reducing I/O resources through asynchronous parallel processing that does not support events and its parallel processing device | |
CN111158890A (en) | System and method for controlling task parallelism in task set | |
CN114661474A (en) | Information processing method, apparatus, device, storage medium, and program product | |
CN114035968A (en) | Conflict processing system and method for multi-stream parallelism | |
CN113126968A (en) | Task execution method and device, electronic equipment and storage medium | |
CN111949687A (en) | Distributed database architecture based on shared memory and multiple processes and implementation method thereof | |
Pumma et al. | Alleviating load imbalance in data processing for large-scale deep learning | |
US5586320A (en) | High speed synchronous processing system for executing parallel processing of programs having loops | |
US9081772B1 (en) | Method and apparatus for acid validation within a distributed relational database under controlled concurrent workloads | |
CN116755782A (en) | A method, device, equipment, storage medium and program product for instruction scheduling | |
CN119248201B (en) | Method, apparatus and storage medium for data management and distribution of machine learning platform | |
CN113377360A (en) | Task execution method, device, electronic equipment, storage medium and program product | |
CN116737331B (en) | Intelligent task flow arrangement method and platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
R18-X000 | Changes to party contact information recorded |
St.27 status event code: A-5-5-R10-R18-oth-X000 |
|
PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |