KR102411173B1 - 태스크 할당 방법 및 장치 - Google Patents
태스크 할당 방법 및 장치 Download PDFInfo
- Publication number
- KR102411173B1 KR102411173B1 KR1020200143895A KR20200143895A KR102411173B1 KR 102411173 B1 KR102411173 B1 KR 102411173B1 KR 1020200143895 A KR1020200143895 A KR 1020200143895A KR 20200143895 A KR20200143895 A KR 20200143895A KR 102411173 B1 KR102411173 B1 KR 102411173B1
- Authority
- KR
- South Korea
- Prior art keywords
- clusters
- tasks
- task
- sparse code
- values
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- General Factory Administration (AREA)
Abstract
본 발명에 따른 태스크 할당 방법은 복수의 태스크를 투영하여 태스크 벡터(B)를 생성하는 단계; 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하는 단계; 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하는 단계; 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하는 단계; 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하는 단계; 및 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계를 포함한다.
Description
본 발명은 태스크 할당 방법 및 장치에 관한 것이다. 더욱 구체적으로는 혼합정수계획법(MIP, Mixed Integer Programming) 기반으로 복수 태스크들에 복수 워커들을 신속하게 할당하는 방법 및 장치에 관한 것이다.
적군으로부터 복수의 탄도 미사일이나 전투기들이 아군을 향해 날아오고 있는 상황이 발생하면, 아군이 보유하고 있는 예컨대 지대공 미사일과 같은 방어 무기들을 이용하여 적군의 무기들을 효과적으로 격추해야 할 것이다. 이 경우, 효과적으로 적군의 무기를 제거하기 위해서는 아군의 방어 무기들을 적군의 무기들에 효과적으로 할당해야 한다. 이는 혼합정수계획법(MIP) 기반의 복수 워커들-복수 태스크들 간의 할당 문제로 해결할 수 있다. 여기서 복수의 태스크들은 적군의 무기들에 대응할 수 있고, 복수의 태스크들을 처리하는 복수의 워커들(workers)은 아군의 방어 무기들에 대응할 수 있다.
그러나, 혼합정수계획법(MIP) 기반 복수 태스크들의 할당 문제는 태스크들의 수 및 워커들의 수가 증가함에 따라, 계산 복잡도가 급격하게 증가한다는 문제가 존재한다. 계산 복잡도는 태스크들의 수 및 워커들의 수에 조합으로(combinatorial) 커진다고 알려져 있으며, 계산에 소요되는 시간은 계산 복잡도에 비례한다. 적군의 무기가 아군으로 날아오고 있는 급박한 상황에서 아군의 피해를 최소화하기 위해서는 태스크들에 워커들을 할당하는 시간을 최소화하는 것이 필요하다.
본 발명이 해결하고자 하는 과제는 혼합정수계획법(MIP, Mixed Integer Programming) 기반으로 태스크들에 워커들을 할당하는 방법 및 장치를 제공하는 것이다.
상술한 기술적 과제들을 달성하기 위한 기술적 수단으로서, 본 발명의 일 측면에 따른 태스크 할당 방법은 컴퓨팅 장치에 의해 수행된다. 상기 태스크 할당 방법은 복수의 태스크를 투영하여 태스크 벡터(B)를 생성하는 단계, 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하는 단계, 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하는 단계, 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하는 단계, 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하는 단계, 및 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계를 포함한다.
일 예에 따르면, 상기 태스크 벡터(B)는 m차원 실수 공간(B ∈ m)에서 정의되어 제1 내지 제m 원소(b1, ... , bm})의 값들을 가질 수 있다. 상기 태스크 벡터(B)의 제i 원소(bi)(i ∈ {1, ... , m})의 값은 상기 복수의 태스크들 각각의 제i 속성 값을 누적한 값일 수 있다.
다른 예에 따르면, 상기 W개의 클러스터 벡터(D1, ... , DW) 각각은 상기 m차원 실수 공간(D1, ... , DW ∈ m)에서 정의될 수 있다. 상기 W개의 클러스터 벡터(D1, ... , DW) 중 제w 클러스터 벡터(Dw)(w ∈ {1, ... , W})의 제i 원소(dwi)(i ∈ {1, ... , m})의 값은 제i 속성에 대하여 상기 제2 클러스터 벡터(Dw)에 포함되는 적어도 하나의 워커가 처리할 수 있는 크기일 수 있다.
또 다른 예에 따르면, 상기 스파스 코드(c)는 에 따라 산출되고, 제1 내지 제W 값들을 포함할 수 있다. 상기 파라미터(λ)는 상기 스파스 코드(c)의 비제로(non-zero) 희소성을 결정할 수 있다.
또 다른 예에 따르면, 상기 스파스 코드(c)의 상기 제1 내지 제W 값들 각각은 0 또는 1일 수 있다.
또 다른 예에 따르면, 상기 J개의 클러스터는 상기 사전 행렬(D)과 상기 스파스 코드(c)의 행렬-벡터 곱(D×c)에 의해 결정될 수 있다.
또 다른 예에 따르면, 상기 스파스 코드(c)의 상기 제1 내지 제W 값들 각각은 0 이상 1 이하의 실수 값일 수 있다.
또 다른 예에 따르면, 상기 J개의 클러스터를 선택하는 단계는 상기 스파크 코드(c)의 상기 제1 내지 제W 값들을 미리 설정된 기준치와 비교하여, 수정 스파스 코드(rc)를 생성하는 단계로서, 상기 수정 스파스 코드(rc)의 제1 내지 제W 값들 각각은 0 또는 1인 단계, 및 상기 사전 행렬(D)에 상기 수정 스파스 코드(rc)를 곱하여 상기 J개의 클러스터를 결정하는 단계를 포함할 수 있다.
또 다른 예에 따르면, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계는 상기 복수의 태스크들의 개수(K)를 획득하는 단계, 제1 내지 제K 태스크들 각각과 상기 J개의 클러스터에 포함되는 워커들 각각 간의 비용값들(cvjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 획득하는 단계, 및 상기 비용값들(cvjk)을 적용한 정수계획법(MIP) 알고리즘을 이용하여, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당한 할당 결과(x)를 산출하는 단계를 포함할 수 있다. 상기 할당 결과(x)는 각각 0 또는 1의 값을 갖는 (J×K)개의 원소들(xjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 포함할 수 있다.
또 다른 예에 따르면, 상기 할당 결과(x)는 상기 원소들(xjk)에 대한 의 값이 상기 제j 클러스터에 포함되는 워커들의 개수 이하일 제1 조건, 및 상기 원소들(xjk)에 대한 의 값이 1일 제2 조건을 만족하도록 에 따라 산출될 수 있다.
본 발명의 일 측면에 따른 컴퓨터 프로그램은 컴퓨팅 장치를 이용하여 전술한 태스크 할당 방법을 실행시키기 위하여 매체에 저장된다.
본 발명의 일 측면에 따른 태스크 할당 장치는 메모리와 적어도 하나의 프로세서를 포함한다. 상기 적어도 하나의 프로세서는 복수의 태스크를 투영하여 태스크 벡터(B)를 생성하고, 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하고, 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하고, 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하고, 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하고, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하도록 구성된다.
본 발명에 따르면, 혼합정수계획법(MIP) 기반 멀티 태스크들의 할당 단계 전에 프루닝(Pruning) 단계를 수행하여 복수 워커들-복수 태스크들 간의 할당 문제의 계산 복잡도를 감소시킴으로써, 태스크들에 워커들을 할당하는 시간을 감소시킬 수 있다.
프루닝 단계로 인하여 계산 복잡도(Computational Complexity)가 감소되지만 이에 대한 트레이드-오프(trade-off)로서 비최적성(Sub-optimality)이 발생할 수 있다. 그러나, 계산 시간의 감소로 인해 적군의 무기에 받게 되는 아군의 피해를 감소시킬 수 있다는 이득은 비최적성으로 인한 비용 증가의 손해보다 훨씬 클 것이다.
프루닝 단계에서 스파스 최적화(Sparse Optimization, 즉, LASSO) 문제는 볼록 최적화(Convex Optimization) 문제로써, 태스크들의 수 및 워커들의 수에 비의존적인 계산복잡도를 갖는다. 따라서, 태스크들의 수 및 워커들의 수가 증가하더라도 프루닝 단계의 계산 복잡도는 증가하지 않을 것이며, 전체 계산 시간을 감소시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 태스크 할당 방법을 설명하는 순서도이다.
도 2는 본 발명의 일 실시예에 따른 태스크 할당 방법의 프루닝 스테이지를 설명하는 순서도이다.
도 3a는 본 발명의 일 실시예에 따른 예시적인 태스크 벡터(B)를 이미지화한 도면이고, 도 3b는 본 발명의 일 실시예에 따른 예시적인 사전 행렬(D)을 이미지화한 도면이다.
도 4는 본 발명에 따라 태스크들에 클러스터들에 포함되는 워커가 할당되는 예가 도시된다.
도 5는 본 발명의 일 실시예에 따른 태스크 할당 장치의 구성 및 동작을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 태스크 할당 방법의 프루닝 스테이지를 설명하는 순서도이다.
도 3a는 본 발명의 일 실시예에 따른 예시적인 태스크 벡터(B)를 이미지화한 도면이고, 도 3b는 본 발명의 일 실시예에 따른 예시적인 사전 행렬(D)을 이미지화한 도면이다.
도 4는 본 발명에 따라 태스크들에 클러스터들에 포함되는 워커가 할당되는 예가 도시된다.
도 5는 본 발명의 일 실시예에 따른 태스크 할당 장치의 구성 및 동작을 설명하기 위한 도면이다.
아래에서는 첨부한 도면을 참조하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 다양한 실시예들을 상세히 설명한다. 그러나 본 개시의 기술적 사상은 다양한 형태로 변형되어 구현될 수 있으므로 본 명세서에서 설명하는 실시예들로 제한되지 않는다. 본 명세서에 개시된 실시예들을 설명함에 있어서 관련된 공지 기술을 구체적으로 설명하는 것이 본 개시의 기술적 사상의 요지를 흐릴 수 있다고 판단되는 경우 그 공지 기술에 대한 구체적인 설명을 생략한다. 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
본 명세서에서 어떤 요소가 다른 요소와 "연결"되어 있다고 기술될 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라 그 중간에 다른 요소를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 어떤 요소가 다른 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 요소 외에 또 다른 요소를 배제하는 것이 아니라 또 다른 요소를 더 포함할 수 있는 것을 의미한다.
일부 실시예들은 기능적인 블록 구성들 및 다양한 처리 단계들로 설명될 수 있다. 이러한 기능 블록들의 일부 또는 전부는 특정 기능을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 본 개시의 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 본 개시의 기능 블록이 수행하는 기능은 복수의 기능 블록에 의해 수행되거나, 본 개시에서 복수의 기능 블록이 수행하는 기능들은 하나의 기능 블록에 의해 수행될 수도 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다.
도 1은 본 발명의 일 실시예에 따른 태스크 할당 방법을 설명하는 순서도이다.
도 1을 참조하면, 태스크 할당 방법은 프루닝 스테이지(S100)와 혼합정수계획법(Mixed Integer Programming, 이하 'MIP'라 함) 스테이지(S200)를 포함한다. 본 발명의 태스크 할당 방법은 메모리와 적어도 하나의 프로세서를 갖는 컴퓨터 장치에 의해 수행될 수 있다.
본 발명의 일 실시예에 따른 태스크 할당 방법은 혼합정수계획법(MIP, Mixed Integer Programming) 기반으로 복수 태스크들을 신속하게 할당하는 방법에 관한 것이다. 프루닝 스테이지(S100)는 복수 태스크들에 할당될 가능성이 낮다고 판단되는 일부 워커들을 제거하고 나머지 일부 워커들만 선택하는 단계이다. MIP 스테이지(S200)는 MIP 기반으로 프루닝 스테이지(S100)에서 선택된 워커들을 복수 태스크들에 할당하는 단계이다. MIP 스테이지(S200)는 프루닝 스테이지(S100) 후에 수행된다.
본 명세서에서, '태스크'는 예컨대 적군의 탄도 미사일이나 전투기와 같이 다수로 존재하는 대상에 대응한다. 적군의 탄도 미사일들이나 전투기들은 아군의 방어 무기(예컨대, 요격 유도탄, 지대공 미사일 등)에 의해 요격 되어야 할 것이다. 본 명세서에서, '워커'는 '태스크'를 처리하기 위해 '태스크'에 할당되어야 하는 대상으로서, 예컨대, 아군의 방어 무기에 대응할 수 있다. '워커들'은 복수의 클러스터로 그룹핑될 수 있다. 예를 들면, 클러스터는 복수의 미사일을 발사할 수 있는 미사일 부대 또는 미사일 발사대에 대응될 수 있다. 클러스터들 각각에는 적어도 하나의 워커가 포함된다.
본 발명에 따르면, 워커들과 클러스터들의 개수 및 속성에 관한 정보들은 미리 저장되어 있을 수 있다. 태스크들의 속성에 관한 정보는 프루닝 스테이지(S100)에서 예컨대 레이다 장비, 및 분석 장비 등을 이용하여 획득될 수 있다. 태스크들 각각의 위치에 관한 정보는 MIP 스테이지(S200)에서 획득될 수 있다. 예컨대, 프루닝 스테이지(S100)에서는 태스크들의 대략적인 위치 정보가 획득되고, 이후 MIP 스테이지(S200)에서는 추가적인 분석을 통해 태스크들의 정확한 위치 및 개수에 관한 정보가 획득될 수 있다.
혼합정수계획법(MIP)과 같은 최적화 알고리즘은 문제 크기가 커짐에 따라 시간 복잡도가 크게 증가한다. 본 발명은 이러한 최적화 알고리즘의 빠른 실행을 위해 문제의 크기를 효율적으로 축소시키는 방법을 제안한다. 우선, 복수의 태스크들과 이들을 처리할 수 있는 복수의 워커들이 존재한다고 가정한다. 본 발명에 따르면, MIP를 이용하여 태스크 할당 문제를 직접적으로 풀지 않고, 프루닝 스테이지(S100)에서 비유망 워커들(Unpromising Workers)을 제거한다. MIP 스테이지(S200)에서 남은 선택 워커들(Selected Workers)을 복수의 캐스트들에 할당한다.
아래에서 도 2 내지 도 3a 및 도 3b를 참조하여 프루닝 스테이지(S100)에 대하여 더욱 자세히 설명한다.
도 2는 본 발명의 일 실시예에 따른 태스크 할당 방법의 프루닝 스테이지를 설명하는 순서도이다. 도 3a는 본 발명의 일 실시예에 따른 예시적인 태스크 벡터(B)를 이미지화한 도면이고, 도 3b는 본 발명의 일 실시예에 따른 예시적인 사전 행렬(D)을 이미지화한 도면이다.
도 2, 도 3a 및 도 3b를 참조하면, 본 발명의 일 실시예에 따른 프루닝 스테이지에서는 복수의 태스크들을 처리하기에 적합해보이지 않는 워커들이 우선적으로 제거된다. 일 예에 따르면, 프루닝 스테이지에서 스파스 최적화(Sparse Optimization)가 사용될 수 있다. 스파스 최적화는 라쏘(LASSO) 회귀분석 알고리즘을 이용하여 구현될 수 있다.
복수의 태스크들을 투영하여 태스크 벡터(B)가 생성될 수 있다(S110). 복수의 태스크들은 m차원의 태스크 벡터(B)에 투영될 수 있다. 태스크 벡터(B)는 m차원 실수 공간(B ∈ m)에서 정의될 수 있으며, 제1 내지 제m 원소(b1, ... , bm})의 값들을 가질 수 있다. 여기서, m은 미리 설정된 자연수이다. m은 태스크들이 가질 수 있는 속성들의 총 개수에 기초하여 미리 설정될 수 있다. m의 크기는 태스크들의 속성을 어떻게 정의하느냐에 따라 결정될 수 있다.
태스크 벡터(B)의 m차원 중에서 제i 차원은 태스크들의 제i 속성에 대응하며, 태스크 벡터(B)의 제i 원소(bi)(i ∈ {1, ... , m})의 값은 복수의 태스크들 각각의 제i 속성 값을 누적한 값일 수 있다. 태스크들의 개수가 T개로 알려져 있다면, 태스크 벡터(B)의 제i 원소(bi)는 와 같이 표현될 수 있다. bi,t는 T개의 태스크들 중에서 제t 태스크의 제i 속성 값을 나타낸다.
이와 같이, 태스크들을 고정된 차원(m)의 태스크 벡터(B)에 투영함으로써, 태스크들의 개수에 비의존적인 태스크 벡터(B)가 생성될 수 있다.
도 3a에는 예시적인 태스크 벡터(B)를 이미지화한 도면이 도시된다. 도 3a의 도면은 m개의 셀들을 포함하고, 셀들은 태스크들의 속성들에 각각 대응한다. 각 셀의 밝기는 태스크들의 해당 속성의 누적 값을 나타낸다.
다른 실시예에 따르면, 도 3a와 같은 도면으로부터 태스크 벡터(B)를 생성할 수도 있다. 예컨대, 레이다 영상, 소나 영상 등과 같은 탐지 영상에 적군 무기들이 출현한 경우, 이 영상으로부터 태스크 벡터(B)가 생성될 수 있다. 탐지 영상의 픽셀들은 m개의 그룹들로 그룹핑될 수 있으며, m개의 그룹들은 태스크 벡터(B)의 m차원에 대응할 수 있다. 태스크 벡터(B)의 제i 원소(bi)의 값은 제i 그룹 내의 픽셀들의 밝기, 크기, 분석 결과들에 기초하여 결정될 수 있다.
W개의 클러스터에 대응하는 W개의 클러스터 벡터(D1, ... , DW)가 생성될 수 있다(S120). W개의 클러스터 각각에는 적어도 하나의 워커가 포함된다. 전술한 바와 같이, 워커가 대공 미사일에 대응한다면, 클러스터는 미사일 기지에 대응할 수 있다. 워커의 개수와 클러스터의 개수는 미리 알고 있다. W개의 클러스터가 존재하는 것으로 가정한다.
W개의 클러스터 벡터(D1, ... , DW) 각각은 태스크 벡터(B)에 대응하며, W개의 클러스터 벡터(D1, ... , DW) 각각은 태스크 벡터(B)와 동일하게 m차원 실수 공간(D1, ... , DW ∈ m)에서 정의될 수 있다.
W개의 클러스터 벡터(D1, ... , DW) 중 제w 클러스터 벡터(Dw)(w ∈ {1, ... , W})의 제i 원소(dw,i)(i ∈ {1, ... , m})의 값은 제i 속성에 대하여 상기 제w 클러스터 벡터(Dw)에 포함되는 적어도 하나의 워커가 처리할 수 있는 크기를 의미할 수 있다. 즉, 제w 클러스터 벡터(Dw)(w ∈ {1, ... , W})의 제i 원소(dw,i)(i ∈ {1, ... , m})의 값은 제w 클러스터 벡터(Dw)에 포함되는 적어도 하나의 워커는 태스크 벡터(B)의 제i 속성에 대하여 dw,i만큼 처리할 수 있다는 것을 의미한다.
W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)이 생성될 수 있다(130). 사전 행렬(D)은 (m×W) 차원 실수 공간(D ∈ m×W)에서 정의될 수 있다. 사전 행렬(D)은 D = [D1 | D2 | ... | Dw]와 같이 생성될 수 있으며, W개의 클러스터 벡터들(D1, ... , DW)은 사전 행렬(D)의 열 벡터들에 해당한다. 즉, 제w 클러스터 벡터(Dw)는 사전 행렬(D)의 w번째 열 벡터이다.
도 3b에는 사전 행렬(D)로 결합된 제1 및 제2 클러스터 벡터들(D1, D2, ... )을 이미지화한 도면이 도시된다. 도 3b의 제1 및 제2 클러스터 벡터들(D1, D2) 각각의 도면은 m개의 셀들을 포함한다. m개의 셀들도 역시 m개의 속성들에 각각 대응한다. 제1 클러스터 벡터(D1)를 이미지화한 도면에서 각 셀의 밝기는 제1 클러스터에 포함되는 적어도 하나의 워커가 해당 속성을 처리할 수 있는 크기를 나타낸다.
태스크 벡터(B)와 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)가 산출될 수 있다(S140). 일 예에 따르면, 스파스 코드(c)는 에 따라 산출될 수 있다. 스파스 코드(c)는 스파스 최적화에서 구하고자 하는 결정 변수(decision variable)로서, 비제로(non-zero) 요소의 개수가 작아지도록 최적화에서 고려된다. 스파스 코드(c)는 w차원 실수 공간(c ∈ w)에서 정의되어 W개의 값들, 즉, 제1 내지 제W 값들을 포함할 수 있다. 스파스 코드(c)의 제1 내지 제W 값들은 0 이상 1 이하의 실수 값일 수 있다. 예컨대, 제1 내지 제W 값들은 0 또는 1일 수 있다.
다른 예에 따르면, 스파스 코드(c)는 에 따라 산출될 수 있다. 여기서, 파라미터(λ)는 스파스 코드(c)의 비제로(non-zero) 희소성을 결정하는 값으로서, 미리 설정될 수 있다. 스파스 코드(c)는 W개의 값들, 즉, 제1 내지 제W 값들을 포함할 수 있다. 스파스 코드(c)의 제1 내지 제W 값들은 0 이상 1 이하의 실수 값일 수 있다. 예컨대, 제1 내지 제W 값들은 0 또는 1일 수 있다.
파라미터(λ)가 커지면, 스파스 코드(c)의 비제로(non-zero) 희소성이 커지므로, 스파스 코드(c)의 W개의 값들 중에서 0의 값을 가진 원소들이 많아진다. 이 경우, W개의 클러스터 중에서 선택되는 클러스터의 개수는 감소하게 된다. 그에 따라 이후 복수 워커들-복수 태스크들 간 할당 속도는 빨라지지만, 손실되는 정보의 양도 많아지므로 최적성은 감소하게 된다. 반대로 파라미터(λ)이 작아지면, 스파스 코드(c)의 비제로(non-zero) 희소성이 작아지며, 스파스 코드(c)의 W개의 값들 중에서 0의 값을 가진 원소들이 줄어든다. 이 경우, W개의 클러스터 중에서 선택되는 클러스터의 개수는 증가하게 된다. 파라미터(λ)는 실행 속도와 최적성의 트레이드-오프 관계를 고려하여 미리 설정될 수 있다.
스파스 코드(c)를 구하기 위한 목적 함수()에서, 첫 번째 항은 데이터-일관성 촉진항(Data-Consistency-promoting term)으로서, 사전 행렬(D) 내의 클러스터 벡터들(D1, ... , DW) 중에서 태스크 벡터(B)에 최적 적합(optimal fit)한 최적의 클러스터 벡터들을 선택하도록 촉진한다. 두 번째 항은 희소성 촉진항(Sparsity-promoting term)으로서, 스파스 코드(c)의 비제로(non-zero) 요소의 개수를 작게 하는 클러스터 벡터들을 선택하도록 촉진한다. 파라미터(λ)는 비제로(non-zero) 요소의 희소성의 정도를 결정할 수 있다. 스파스 코드(c)의 비제로 요소가 적을수록, 적은 수의 클러스터 벡터들이 최종적으로 선택될 것이며, 이는 이후 MIP 스테이지(S200)에서 계산복잡도를 낮출 것이다. 그러나, 비제로 요소의 희소성이 커질수록, 즉, 프루닝의 정도가 커질수록, 비최적성(sub-optimality)도 커지는 트레이드 오프 문제가 발생한다.
사전 행렬(D)과 스파스 코드(c)에 기초하여 W개의 클러스터 중에서 적어도 하나의 클러스터가 선택될 수 있다(S150). 일 예에 따라서, 스파스 코드(c)의 제1 내지 제W 값들은 0 또는 1일 수 있다. 이 경우, 단계(S15)에서 선택되는 클러스터는 선택 클러스터로 지칭된다. 선택 클러스터는 사전 행렬(D)과 스파스 코드(c)의 곱, 즉, D×c에 의해 결정될 수 있다. 사전 행렬(D)에 포함되는 제1 내지 제W 클러스터 벡터들(D1, ... , DW) 중에서, 스파스 코드(c)의 제1 내지 제W 값들 중 1인 값에 대응하는 클러스터 벡터들에 해당하는 클러스터들이 선택 클러스터로 선택될 수 있다. 선택 클러스터의 개수는 J개인 것으로 가정한다. J는 W보다 작은 자연수이다.
다른 예에 따라서, 스파스 코드(c)의 제1 내지 제W 값들 각각은 0 이상 1 이하의 실수 값일 수 있다. 이 경우, 스파크 코드(c)의 제1 내지 제W 값들은 미리 설정된 기준치와 비교될 수 있다. 미리 설정된 기준치는 0.5일 수 있다. 미리 설정된 기준치는 예컨대 0.3일 수 있다. 미리 설정된 기준치는 파라미터(λ)와 유사하게, 비제로(non-zero) 요소의 희소성의 정도를 결정할 수 있다. 미리 설정된 기준치의 예시적인 수치는 본 발명을 한정하지 않는다. 스파스 코드(c)의 제1 내지 제W 값들 중에서 미리 설정된 기준치보다 작은 값들은 0으로 결정되고, 미리 설정된 기준치 이상인 값들은 1로 결정될 수 있다. 이러한 과정을 통해 스파스 코드(c)는 수정 스파스 코드(rc)로 변형될 수 있다. 수정 스파스 코드(rc)의 제1 내지 제W 값들 각각은 0 또는 1이다.
선택 클러스터는 사전 행렬(D)과 수정 스파스 코드(rc)의 곱, 즉, D×rc에 의해 결정될 수 있다. 사전 행렬(D)에 포함되는 제1 내지 제W 클러스터 벡터들(D1, ... , DW) 중에서, 수정 스파스 코드(rc)의 제1 내지 제W 값들 중 1인 값에 대응하는 클러스터 벡터들에 해당하는 클러스터들이 선택 클러스터로 선택될 수 있다. 선택 클러스터는 J개인 것으로 가정한다. J는 W보다 작은 자연수이다.
도 2에 도시되는 프루닝 스테이지 단계들이 수행됨으로써, W개의 클러스터에 포함되는 워커들 중에서 J개의 선택 클러스터에 포함되는 워커들만 남게 되므로, MIP 문제의 크기가 감소되며, 계산복잡도가 감소하게 된다.
다시 도 1을 참조하면, MIP 스테이지(S200)에서, 복수의 태스크 각각에 J개의 선택 클러스터에 포함되는 워커들이 할당될 수 있다. 프루닝 스테이지(S100)에서 산출되는 스파스 코드(c) 통해 비제로(non-zero) 요소에 해당하는 클러스터들이 선택된다. MIP 스테이지(S200)에서는 프루닝 스테이지(S100)에서 선택된 선택 클러스터들에 포함된 워커들만 MIP 문제에 포함시킴으로써, 문제의 크기가 줄어들게 되고, MIP 계산의 복잡도가 감소될 수 있다.
복수의 태스크 각각에 J개의 클러스터에 포함되는 워커들을 할당하기 위해서, 복수의 태스크들의 개수가 획득될 수 있다. 태스크들의 개수는 K개라고 가정하며, K개의 태스크들은 제1 내지 제K 태스크들이다.
제1 내지 제K 태스크들 각각과 J개의 클러스터에 포함되는 워커들 각각 간의 비용값들(cvjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})이 획득될 수 있다. 비용값(cvjk)은 제1 내지 제K 태스크들 중에서 제k 태스크에 제1 내지 제J 클러스터들 중 제j 클러스터에 포함되는 워커들 중 하나를 할당하는데 소요되는 비용을 의미한다. 여기서, j는 1 이상 J 이하의 자연수이고, k는 1 이상 K 이하의 자연수이다. 제j 클러스터에 복수의 워커들이 포함되더라도, 제j 클러스터에 포함되는 워커들 사이에는 비용값(cvjk)의 차이가 없다.
일 예에 따르면, 제j 클러스터의 위치를 pj (pj ∈ 3)라고 하고, 제k 태스크의 위치를 pk (pk ∈ 3)라고 하면, 제k 태스크를 제j 클러스터에 포함되는 하나의 워커를 할당하는 비용값(cvjk)은 와 같이 유클리디안 거리의 제곱 값으로 정의될 수 있다. 그러나, 이는 예시적이며, 주어진 조건, 상황 등에 따라 비용값(cvjk)은 다르게 정의될 수 있다.
비용값들(cvjk)을 적용한 정수계획법(MIP) 알고리즘을 이용하여, K개의 태스크 각각에 J개의 클러스터에 포함되는 워커들을 할당한 할당 결과(x)가 산출될 수 있다. 할당 결과(x)는 각각 0 또는 1의 값을 갖는 (J×K)개의 원소들(xjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 포함할 수 있다. 할당 결과(x)의 원소(xjk)의 값이 1인 경우, 제k 태스크에 제j 클러스터에 포함되는 하나의 워커가 할당된다는 것을 의미하고, 할당 결과(x)의 원소(xjk)의 값이 0인 경우, 제k 태스크에 제j 클러스터에 포함되는 워커가 할당되지 않는다는 것을 의미한다.
K개의 태스크 각각에 J개의 클러스터에 포함되는 워커들을 할당한 할당 결과(x)가 산출하기 위해, 비용값들(cvjk)을 정수계획법(MIP) 알고리즘에 적용하면, 와 같이 정식화(Formulation)할 수 있다. 이때, 제j 클러스터에 포함되는 워커들의 개수를 초과하여 태스크들에 할당될 수 없으므로, 원소들(xjk)에 대한 의 값이 제j 클러스터에 포함되는 워커들의 개수 이하이어야 한다. 또한, 태스크들 각각에 하나의 워커가 할당되어야 할 경우, 원소들(xjk)에 대한 의 값이 1이어야 한다. 다른 예에 따라서, 태스크들 각각에 예컨대 2개 이하의 워커가 할당되는 것이 허용되는 조건이라면, 원소들(xjk)에 대한 의 값이 2이하라는 조건이 만족하도록 변형될 수도 있다.
도 4는 본 발명에 따라 태스크들에 클러스터들에 포함되는 워커가 할당되는 예가 도시된다. x23=1은 제2 클러스터에 포함된 하나의 워커가 제3 태스크에 할당된다는 것을 의미한다. 또한, Capacity0 = 3은 제0 클러스터에 포함된 워커들이 3개라는 것을 의미하고, Capacity1 = 5은 제1 클러스터에 포함된 워커들이 5개라는 것을 의미한다.
도 5는 본 발명의 일 실시예에 따른 태스크 할당 장치의 구성 및 동작을 설명하기 위한 도면이다.
일 실시예에서 태스크 할당 장치(100)는 메모리(110), 프로세서(120), 통신 모듈(130) 및 입출력 인터페이스(140)를 포함할 수 있다.
메모리(110)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(110)에는 태스크 할당 장치(100)를 제어하기 위한 프로그램 코드가 일시적 또는 영구적으로 저장될 수 있다. 메모리(110)에는 워커들과 클러스터들에 관한 정보, 예컨대, 클러스터들의 개수 및 위치, 클러스터들 각각에 포함되는 워커들의 개수, 워커들의 속성, 클러스터들의 속성 등과 같은 정보가 일시적 또는 영구적으로 저장될 수 있다. 또한, 메모리(110)에는 태스크의 속성에 관한 정보가 일시적으로 저장될 수 있다.
프로세서(120)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(110) 또는 통신 모듈(130)에 의해 프로세서(120)로 제공될 수 있다. 예를 들어 프로세서(120)는 메모리(110)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다. 일 실시예에서 태스크 할당 장치(100)의 프로세서(120)는 복수의 태스크를 투영하여 태스크 벡터(B)를 생성하고, 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하고, 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하고, 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하고, 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하고, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하도록 구성될 수 있다.
통신 모듈(130)은 네트워크를 통해 외부 서버와 통신하기 위한 기능을 제공할 수 있다. 일례로, 태스크 할당 장치(100)의 프로세서(120)가 메모리(110)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이 통신 모듈(130)의 제어에 따라 네트워크를 통해 외부 서버로 전달될 수 있다. 역으로, 외부 서버의 프로세서의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 네트워크를 거쳐 통신 모듈(130)을 통해 태스크 할당 장치(100)로 수신될 수 있다. 예를 들어 통신 모듈(130)을 통해 수신된 외부 서버의 제어 신호나 명령 등은 프로세서(120)나 메모리(110)로 전달될 수 있고, 컨텐츠나 파일 등은 태스크 할당 장치(100)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.
일 예에 따르면, 태스크 할당 장치(100)의 프로세서(120)는 통신 모듈(130)을 통해 태스크들의 속성에 관한 정보 및 태스크들의 개수 및 위치 등에 관한 정보를 수신할 수 있다. 통신 방식은 제한되지 않으며, 네트워크가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.
통신 모듈(130)은 외부 서버와 무선 네트워크를 통해 통신할 수 있다. 통신 방식은 제한되지 않지만, 네트워크는 근거리 무선통신망일 수 있다. 예를 들어, 네트워크는 블루투스(Bluetooth), BLE(Bluetooth Low Energy), Wifi 통신망일 수 있다.
입출력 인터페이스(140)는 입출력 장치와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(140)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 예를 들면, 태스크 할당 장치(100)의 프로세서(120)는 메모리(110)로부터 로딩된 컴퓨터 프로그램의 명령을 처리하여 생성한 데이터 처리 결과를 입출력 인터페이스(140)를 통해 디스플레이에 표시할 수 있다.
프로세서(120)는 도 1 및 도 2를 참조로 앞에서 설명한 태스크 할당 방법을 수행하도록 태스크 할당 장치(100)를 제어할 수 있다. 예를 들어, 프로세서(120) 및 프로세서(120)의 구성요소들은 메모리(110)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 프로세서(120)의 구성요소들은 태스크 할당 장치(100)에 저장된 프로그램 코드가 제공하는 명령에 따라 프로세서(120)에 의해 수행되는 프로세서(120)의 서로 다른 기능들(different functions)의 표현들일 수 있다.
본 명세서에서 설명되는 다양한 실시예들은 예시적이며, 서로 구별되어 독립적으로 실시되어야 하는 것은 아니다. 본 명세서에서 설명된 실시예들은 서로 조합된 형태로 실시될 수 있다.
이상 설명된 다양한 실시예들은 컴퓨터 상에서 다양한 구성요소를 통하여 실행될 수 있는 컴퓨터 프로그램의 형태로 구현될 수 있으며, 이와 같은 컴퓨터 프로그램은 컴퓨터로 판독 가능한 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
본 명세서에서, "부", "모듈" 등은 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다. 예를 들면, "부", "모듈" 등은 소프트웨어 구성 요소들, 객체 지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들에 의해 구현될 수 있다.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
Claims (14)
- 컴퓨팅 장치에 의해 수행되는 태스크 할당 방법으로서,
복수의 태스크를 투영하여 태스크 벡터(B)를 생성하는 단계;
각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하는 단계;
상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하는 단계;
상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하는 단계;
상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하는 단계; 및
상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계를 포함하는 태스크 할당 방법. - 제5 항 또는 제6항에 있어서,
상기 스파스 코드(c)의 상기 제1 내지 제W 값들 각각은 0 또는 1인 태스크 할당 방법. - 제7 항에 있어서,
상기 J개의 클러스터는 상기 사전 행렬(D)과 상기 스파스 코드(c)의 곱(D×c)에 의해 결정되는 태스크 할당 방법. - 제5 항 또는 제6항에 있어서,
상기 스파스 코드(c)의 상기 제1 내지 제W 값들 각각은 0 이상 1 이하의 실수 값인 태스크 할당 방법. - 제9 항에 있어서,
상기 J개의 클러스터를 선택하는 단계는,
상기 스파스 코드(c)의 상기 제1 내지 제W 값들을 미리 설정된 기준치와 비교하여, 수정 스파스 코드(rc)를 생성하는 단계로서, 상기 수정 스파스 코드(rc)의 제1 내지 제W 값들 각각은 0 또는 1인 단계; 및
상기 사전 행렬(D)에 상기 수정 스파스 코드(rc)를 곱하여 상기 J개의 클러스터를 결정하는 단계를 포함하는 태스크 할당 방법. - 제1 항에 있어서,
상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계는,
상기 복수의 태스크들의 개수(K)를 획득하는 단계;
제1 내지 제K 태스크들 각각과 상기 J개의 클러스터에 포함되는 워커들 각각 간의 비용값들(cvjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 획득하는 단계; 및
상기 비용값들(cvjk)을 적용한 정수계획법(MIP) 알고리즘을 이용하여, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당한 할당 결과(x)를 산출하는 단계를 포함하고,
상기 할당 결과(x)는 각각 0 또는 1의 값을 갖는 (J×K)개의 원소들(xjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 포함하는 태스크 할당 방법. - 컴퓨팅 장치를 이용하여 제1 항 내지 제6항, 제11항 및 제12항 중 어느 한 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
- 프로그램 코드를 저장하는 메모리; 및
복수의 태스크를 투영하여 태스크 벡터(B)를 생성하고, 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하고, 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하고, 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하고, 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하고, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하도록 상기 프로그램 코드에 따라 수신되는 명령을 실행하는 적어도 하나의 프로세서를 포함하는 태스크 할당 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20190138910 | 2019-11-01 | ||
KR1020190138910 | 2019-11-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210053247A KR20210053247A (ko) | 2021-05-11 |
KR102411173B1 true KR102411173B1 (ko) | 2022-06-21 |
Family
ID=75915209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200143895A KR102411173B1 (ko) | 2019-11-01 | 2020-10-30 | 태스크 할당 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102411173B1 (ko) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012079225A (ja) | 2010-10-05 | 2012-04-19 | Osaka Prefecture Univ | 協調フィルタリング処理方法およびプログラム |
JP2017117449A (ja) | 2015-12-24 | 2017-06-29 | インテル コーポレイション | ベクトル推定に基づくグラフ分割を伴う、コンピューティング装置のデータフロープログラミング |
CN109657704A (zh) | 2018-11-27 | 2019-04-19 | 福建亿榕信息技术有限公司 | 一种基于稀疏融合的核化场景特征提取方法 |
JP2019095935A (ja) | 2017-11-20 | 2019-06-20 | ヤフー株式会社 | 学習装置、学習方法、学習プログラムおよび動作プログラム |
-
2020
- 2020-10-30 KR KR1020200143895A patent/KR102411173B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012079225A (ja) | 2010-10-05 | 2012-04-19 | Osaka Prefecture Univ | 協調フィルタリング処理方法およびプログラム |
JP2017117449A (ja) | 2015-12-24 | 2017-06-29 | インテル コーポレイション | ベクトル推定に基づくグラフ分割を伴う、コンピューティング装置のデータフロープログラミング |
JP2019095935A (ja) | 2017-11-20 | 2019-06-20 | ヤフー株式会社 | 学習装置、学習方法、学習プログラムおよび動作プログラム |
CN109657704A (zh) | 2018-11-27 | 2019-04-19 | 福建亿榕信息技术有限公司 | 一种基于稀疏融合的核化场景特征提取方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20210053247A (ko) | 2021-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831547B2 (en) | Accelerator control apparatus for analyzing big data, accelerator control method, and program | |
US10946282B2 (en) | Control object spatial location determining method and apparatus | |
JP2014059860A (ja) | 複数ビークルに組織的なタスク割当を行うためのミッション再計画 | |
Li et al. | Modified particle swarm optimization for BMDS interceptor resource planning | |
WO2010112907A1 (en) | Assigning weapons to threats | |
KR102698931B1 (ko) | 태스크 분산 처리를 관리하는 마스터 장치, 태스크를 처리하는 태스크 처리 장치, 및 그 동작 방법 | |
CN112731961A (zh) | 路径规划方法、装置、设备及存储介质 | |
US9805502B2 (en) | Rendering system and method | |
CN113190041B (zh) | 一种基于约束松弛技术的无人机集群在线目标分配方法 | |
US10387395B2 (en) | Parallelized execution of window operator | |
KR102411173B1 (ko) | 태스크 할당 방법 및 장치 | |
US11543540B2 (en) | Apparatus and method of selecting airborne position reference node | |
US11372379B2 (en) | Computer system and control method | |
CN115496835B (zh) | 一种基于cpu和gpu异构并行架构的点云数据赋色方法和系统 | |
KR102276027B1 (ko) | 상황적응형 자동화 컨테이너 터미널 이송 차량 글로벌 풀링 시스템 및 방법 | |
KR102142767B1 (ko) | 데이터간 상대적 거리 비율 및 클러스터의 중심 데이터 간의 거리를 고려한 데이터 클러스터링 방법 및 시스템 | |
US20190324662A1 (en) | Storage Controller and IO Request Processing Method | |
CN110738175A (zh) | 人脸图像处理方法、装置、计算机设备和存储介质 | |
CN115237097A (zh) | 自动驾驶仿真测试方法、装置、计算机设备和存储介质 | |
CN112950085B (zh) | 无人机集群监测方法、计算机存储介质及电子设备 | |
JP2006071192A (ja) | 防空シミュレーションシステム | |
KR20220107616A (ko) | 추론 태스크들을 병렬적으로 처리하는 가속기 및 이의 동작 방법 | |
KR101988484B1 (ko) | 무장 할당 방법 및 장치 | |
KR102456005B1 (ko) | 페이지 캐시를 사용하는 컨테이너의 스케줄링을 위한 방법, 시스템, 및 컴퓨터 판독가능한 기록 매체 | |
US20210064480A1 (en) | Data relocation management in a network of data centers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |