KR102625105B1 - 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법 - Google Patents

디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법 Download PDF

Info

Publication number
KR102625105B1
KR102625105B1 KR1020230016133A KR20230016133A KR102625105B1 KR 102625105 B1 KR102625105 B1 KR 102625105B1 KR 1020230016133 A KR1020230016133 A KR 1020230016133A KR 20230016133 A KR20230016133 A KR 20230016133A KR 102625105 B1 KR102625105 B1 KR 102625105B1
Authority
KR
South Korea
Prior art keywords
gpu
buildings
cpu
optimizer
load balancing
Prior art date
Application number
KR1020230016133A
Other languages
English (en)
Inventor
이재영
조익
Original Assignee
주식회사 케이쓰리아이
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 주식회사 케이쓰리아이 filed Critical 주식회사 케이쓰리아이
Priority to KR1020230016133A priority Critical patent/KR102625105B1/ko
Application granted granted Critical
Publication of KR102625105B1 publication Critical patent/KR102625105B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/003Navigation within 3D models or images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/10Geometric CAD
    • G06F30/13Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Architecture (AREA)
  • Remote Sensing (AREA)
  • Civil Engineering (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Structural Engineering (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법이 개시된다. 본 발명에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치는, 렌더링 대상지역에 관한 지역 데이터를, 공간정보 오픈 플랫폼으로부터 다운로드하여 메모리에 저장하는 Data Manager; 렌더링 수단에서 동작하는 GPU의 성능에 상응하여, GPU/CPU 연산 비율을 결정하는 Allocation Ratio Handling Server; 및 상기 메모리로부터 상기 지역 데이터를 가져와 상기 렌더링 대상지역의 전체 건물을 확인하고, GPU의 ComputeShader와 CPU의 Job System을 호출 함으로써, 상기 ComputeShader와 상기 Job System 각각이, 상기 GPU/CPU 연산 비율 만큼 건물을 렌더링하도록 제어하는 Load Balancing Optimizer를 포함한다.

Description

디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법{DEVICE AND METHOD FOR OPTIMIZING MASS LOADING OF BUILDINGS IN 3D URBAN SPACE BASED ON DIGITAL TWIN}
본 발명은, 디지털트윈을 기반으로 하는 3D 도시공간에서, 대량의 건물을 최적하게 로딩하기 위한, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법을 제공한다.
특히, 본 발명은 렌더링 대상의 전체 건물 중에서, GPU 성능에 맞춰 정해지는 특정 개수의 건물을 GPU의 연산으로 렌더링하고, 나머지 건물을 CPU의 연산으로 렌더링 함으로써, 최적한 속도로 전체 건물에 대해 렌더링을 빠르게 처리되도록 하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법에 관한 것이다.
한국 등록번호 10- 2351002(2022.01.10) : 3d 모델링을 이용한 실내 일조량 정보 제공 장치 및 방법
기존 3D 도시공간에서의 렌더링 기법은, CPU에서 실행되는 비동기 방법으로, 3D 도시공간으로 건물을 생성하고, 생성된 건물을 로딩하여 구현하였다.
하지만, 기존의 렌더링 기법은, CPU의 비동기 방법 만을 사용 함으로써, 건물의 수가 많을 경우에는 건물의 로딩 및 구현 속도가 현저히 느려지는 한계를 가지고 있다.
이를 개선하기 위해 개발된, 유니티의 Job System과 ComputeShader는, 비동기 방법 보다 빠른 실행을 가능하게 하였다.
그러나 이들 개선된 기법들은, 실행환경의 성능에 따라 속도 차이가 많이 나게 된다는 단점을 가지고 있다.
특히, GPU를 이용하여 많은 건물을 생성할 때에는, GPU의 성능에 따른 차이가 크게 나타나는 경향이 있다.
따라서, CPU와 GPU를 모두 활용하여, 3D 도시공간에서 대량의 건물을 최적하게 생성 및 로딩 할 수 있는, 새로운 기술의 등장이 요구되고 있다.
본 발명의 실시예는, 3D 도시공간에서의 건물 생성에 있어, GPU 성능에 따라 CPU와 GPU에 대한 적절한 연산 배분을 통하여 대량의 건물을 생성하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법을 제공하는 것을 목적으로 한다.
또한, 본 발명의 실시예는, 디지털트윈 기반 3D 도시공간에서 대량의 건물을 로딩하여 구현하기 위해 실행되는 최적화 구현 방법을 제시하는 것을 목적으로 한다.
본 발명에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치는, 렌더링 대상지역에 관한 지역 데이터를, 공간정보 오픈 플랫폼으로부터 다운로드하여 메모리에 저장하는 Data Manager; 렌더링 수단에서 동작하는 GPU의 성능에 상응하여, GPU/CPU 연산 비율을 결정하는 Allocation Ratio Handling Server; 및 상기 메모리로부터 상기 지역 데이터를 가져와 상기 렌더링 대상지역의 전체 건물을 확인하고, GPU의 ComputeShader와 CPU의 Job System를 호출 함으로써, 상기 ComputeShader와 상기 Job System 각각이, 상기 GPU/CPU 연산 비율 만큼 건물을 렌더링하도록 제어하는 Load Balancing Optimizer를 포함할 수 있다.
또한, 본 발명에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법은, Data Manager에서, 렌더링 대상지역에 관한 지역 데이터를, 공간정보 오픈 플랫폼으로부터 다운로드하여 메모리에 저장하는 단계; Allocation Ratio Handling Server에서, 렌더링 수단에서 동작하는 GPU의 성능에 상응하여, GPU/CPU 연산 비율을 결정하는 단계; 및 Load Balancing Optimizer에서, 상기 메모리로부터 상기 지역 데이터를 가져와 상기 렌더링 대상지역의 전체 건물을 확인하고, GPU의 ComputeShader와 CPU의 Job System를 호출 함으로써, 상기 ComputeShader와 상기 Job System 각각이, 상기 GPU/CPU 연산 비율 만큼 건물을 렌더링하도록 제어하는 단계를 포함하여 구성 할 수 있다.
본 발명에 따르면, 3D 도시공간에서의 건물 생성에 있어, GPU 성능에 따라 CPU와 GPU에 대한 적절한 연산 배분을 통하여 대량의 건물을 생성하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법을 제공할 수 있다.
또한, 본 발명에 의해서는, 디지털트윈 기반 3D 도시공간에서 대량의 건물을 로딩하여 구현하기 위해 실행되는 최적화 구현 방법을 제시할 수 있다.
도 1은 본 발명에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치의 내부 구성을 도시한 블록도이다.
도 2는, 건물 로딩 최적화 구현 장치 내 구성 모듈과의 상호관계를 설명하기 위한 도이다.
도 3은, Allocation Ratio Handling Server의 내부 구성을 상세화 한 도이다.
도 4는 Load Balancing Optimizer의 작동 과정을 설명하기 위한 도이다.
도 5는 본 발명에 따라 비율이 결정된 GPU 연산과 CPU 연산에 의해, 건물 생성 렌더링이 적용되는 일례를 보여주기 위한 도이다.
도 6은 본 발명에 따른 건물 로딩 최적화 구현 장치에 의한 구체적인 실시예를 보여주기 위한 도이다.
도 7은 본 발명에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법의 순서를 도시한 흐름도이다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 그러나, 실시예들에는 다양한 변경이 가해질 수 있어서 특허출원의 권리 범위가 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 실시예들에 대한 모든 변경, 균등물 내지 대체물이 권리 범위에 포함되는 것으로 이해되어야 한다.
실시예에서 사용한 용어는 단지 설명을 목적으로 사용된 것으로, 한정하려는 의도로 해석되어서는 안된다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 실시예가 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 실시예를 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 실시예의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치의 내부 구성을 도시한 블록도이다.
도 1을 참조하면, 본 발명에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치(이하, '건물 로딩 최적화 구현 장치'라 약칭함, 100)는, Data Manager(110), Allocation Ratio Handling Server(120), Load Balancing Optimizer(130), ComputeShader(140), 및 Job System(150)을 포함하여 구성할 수 있다.
우선, Data Manager(110)는, 렌더링 대상지역에 관한 지역 데이터를, 공간정보 오픈 플랫폼으로부터 다운로드하여 메모리에 저장한다. 즉, Data Manager(110)는 디지털트윈 기반 3D 도시공간 내, 렌더링하고자 하는 렌더링 대상지역에 대한 건물, 지형 등의 지역 데이터를 공간정보 오픈 플랫폼으로부터 획득하여, 메모리에 유지하는 역할을 할 수 있다.
공간정보 오픈 플랫폼은, 국가에서 보유하고 있는 공개 가능한 공간정보를 자유롭게 활용할 수 있도록 다양한 방법을 제공하는 공간정보체계를 지칭할 수 있다. 공간정보 오픈 플랫폼은, 2D(수치지도를 그래픽화한 배경지도), 3D(수치표고모형과 건물 및 시설물로 구성되는 모형)공간정보를 제공하는 지도서비스, 3차원 특화 프로그램인 3D 데스크톱, 브이월드 활용 및 개발을 지원하는 OpenAPI 등 다양한 서비스를 제공할 수 있다.
Allocation Ratio Handling Server(120)는 렌더링 수단에서 동작하는 GPU의 성능에 상응하여, GPU/CPU 연산 비율을 결정한다. 즉, Allocation Ratio Handling Server(120)는 GPU가 발휘할 수 있는 성능을 고려하여, CPU와 GPU 각각에 할당되는 연산 비율을 정하는 역할을 할 수 있다.
예컨대, Allocation Ratio Handling Server(120)는 GPU 성능이, GPU 성능에 대해서 실험적으로 도출한 기준으로서 규정된 기준 성능 이상으로 높은 경우, GPU에 의해 렌더링되는 건물 비율이 많아지는 방향으로, 상기 GPU/CPU 연산 비율을 결정할 수 있다.
반면, Allocation Ratio Handling Server(120)는 GPU 성능이 상기 기준 성능 보다 낮은 경우, GPU에 의한 건물 렌더링 비율 보다, CPU의 비동기 처리 방식에 의한 건물 렌더링 비율이 많아지도록, 상기 GPU/CPU 연산 비율을 결정할 수 있다.
Load Balancing Optimizer(130)는, 상기 메모리로부터 상기 지역 데이터를 가져와 상기 렌더링 대상지역의 전체 건물을 확인하고, GPU의 ComputeShader(140)와 CPU의 Job System(150)을 호출 함으로써, 상기 ComputeShader(140)와 상기 Job System(150) 각각이, 상기 GPU/CPU 연산 비율 만큼 건물을 렌더링하도록 제어한다. 즉, Load Balancing Optimizer(130)는, 메모리에서 렌더링 대상지역에 관한 지역 데이터를 로딩하고, 로딩한 지역 데이터를 분석하여 확인되는 렌더링 대상지역 내의 전체 건물에 대해, GPU/CPU 연산 비율에 따른 ComputeShader(140)와 Job System(150)의 연산에 의해, 건물 렌더링이 수행되도록 제어하는 역할을 할 수 있다.
ComputeShader(140)는 렌더링 파이프라인 외부의 GPU에서 실행되는 프로그램으로, CPU의 부하를 줄이고 코어수가 훨씬 많은 GPU를 이용하여 더 많은 연산을 할 수 있게 하는 프로그램일 수 있다.
Job System(150)은, 사용 가능한 CPU 코어를 사용하여 코드를 실행할 수 있도록 하는 멀티스레드 코드를 작성 함으로써, 응용 프로그램의 성능을 향상시키는 프로그램일 수 있다.
상기 GPU의 ComputeShader(140)와 상기 CPU의 Job System(150)은, 상기 Load Balancing Optimizer(130)의 호출 및 제어에 따라, 상기 전체 건물 중, 상기 GPU/CPU 연산 비율에 상응하는 일부의 건물에 대해 렌더링하여, 상기 전체 건물을 시각화할 수 있다. 즉, ComputeShader(140)와 Job System(150)은, 결정된 GPU/CPU 연산 비율에 맞춰 각각 개별 연산함으로써, 렌더링 대상지역 내의 건물을 렌더링 할 수 있다.
건물 렌더링에 있어, Load Balancing Optimizer(130)는, 상기 전체 건물의 수에, 상기 GPU/CPU 연산 비율을 곱셈하여, 상기 GPU의 ComputeShader(140)와 상기 CPU의 Job System(150) 각각에서 렌더링해야 하는 건물의 수를 상이하게 정할 수 있다.
예컨대, GPU/CPU 연산 비율이 "GPU : CPU = 0.35 : 0.65"로 결정되는 경우, Load Balancing Optimizer(130)는, 전체 건물의 수 '100채'에, 0.35를 곱셈 적용하여, GPU의 ComputeShader(140)에서 렌더링해야 하는 건물의 수를 '35채'로 정하고, CPU의 Job System(150)에서 렌더링해야 하는 건물의 수를 '65채'로 정할 수 있다.
실시예에 따라, 건물 로딩 최적화 구현 장치(100)는, 렌더링 대상지역에 대한 지형의 렌더링에 관해서는, 건물 렌더링 때와 달리, ComputeShader(140)와 Job System(150)에 대한 연산 비율을 동일하게 결정할 수 있다.
이를 위해, Load Balancing Optimizer(130)는, 상기 지역 데이터를 상기 메모리로부터 로딩하고, 상기 지역 데이터 내 지형 객체를 분석하여 상기 렌더링 대상지역의 지형을 확인하되, 상기 확인된 지형의 렌더링을 위한 연산 비율을, 상기 GPU의 ComputeShader(140)와 상기 CPU의 Job System(150)에서 균등하게 정할 수 있다.
이를 통해, Load Balancing Optimizer(130)는, 건물에 비해 상대적으로 연산 수가 작은 지형의 렌더링이, CPU와 GPU의 균형된 연산 처리에 의해 적정한 수준으로 수행되도록 할 수 있다.
실시예에 따라, 건물 로딩 최적화 구현 장치(100)는 GPU의 성능을 인지하여, 상기 GPU/CPU 연산 비율을 결정할 수 있다.
이를 위해, Load Balancing Optimizer(130)는, 상기 지역 데이터를 상기 메모리로부터 로딩하고, 상기 지역 데이터 내 건물 객체를 분석하여 상기 렌더링 대상지역의 전체 건물을 확인할 수 있다. 즉, Load Balancing Optimizer(130)는, 렌더링 대상지역 내, 렌더링 해야 할 전체 건물의 수를, 지역 데이터를 통해 인지할 수 있다.
또한, Load Balancing Optimizer(130)는, 상기 GPU에 관한 GPU 정보를 생성하여 상기 Allocation Ratio Handling Server(120)에 전달 함으로써, 상기 Allocation Ratio Handling Server에서 상기 GPU의 성능을 인지하도록 할 수 있다. 즉, Load Balancing Optimizer(130)는, 렌더링 수단에서 동작하는 GPU의 성능을 포함하여 GPU 정보를 생성하고, GPU/CPU 연산 비율을 결정할 수 있게, Allocation Ratio Handling Server(120)에, 생성된 GPU 정보를 제공할 수 있다.
Allocation Ratio Handling Server(120)는, 상기 Load Balancing Optimizer(130)로부터 전달된 GPU 정보에 대응하여 저장되는 bandwidth를, GPUInfo.table로부터 추출하고, 상기 추출된 bandwidth와 연관되어, Function.table로부터 변수를 조회하며, 상기 bandwidth와, 상기 변수에 의한 선형함수의 연산을 통해, 상기 GPU의 성능에 상응하는 상기 GPU/CPU 연산 비율을 결정할 수 있다.
즉, Allocation Ratio Handling Server(120)는, GPU 정보로부터 취득한 GPU Name에 해당하는 bandwidth를 GPUInfo.table로부터 추출하고, 추출된 bandwidth에 대응하여 유지되는 변수 a(slope), b(intercept)를 Function.table로부터 조회할 수 있다.
이후, Allocation Ratio Handling Server(120)는, 선형함수 f(w) = aw + b에, bandwidth w와, 변수 a(slope), b(intercept)를 대입하여, 상기 GPU/CPU 연산 비율을 결정할 수 있다. 즉, Allocation Ratio Handling Server(120)는, Function.table에서 검색한 slope(a), intercept(b)와 GPUInfo.table에서 검색한 bandwidth(w)를 함수 f(w) = aw + b에 대입하여 GPU/CPU 연산 비율을 구할 수 있다.
본 발명에 따르면, 3D 도시공간에서의 건물 생성에 있어, GPU 성능에 따라 CPU와 GPU에 대한 적절한 연산 배분을 통하여 대량의 건물을 생성하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법을 제공할 수 있다.
또한, 본 발명에 의해서는, 디지털트윈 기반 3D 도시공간에서 대량의 건물을 로딩하여 구현하기 위해 실행되는 최적화 구현 방법을 제시할 수 있다.
도 2는, 건물 로딩 최적화 구현 장치 내 구성 모듈과의 상호관계를 설명하기 위한 도이다.
도 2에 도시한 바와 같이, 로딩 최적화를 구현하고 시각화하기 위한, 건물 로딩 최적화 구현 장치(200)는, Data Manager(210), Allocation Ratio Handling Server(220), Load Balancing Optimizer(230), GPU(ComputeShader)(240), 및 CPU(Job System)(250)를 포함하여 구성할 수 있다.
Data Manager(210)는 EarthManager 및 DataLoading을 이용하여, 공간정보 오픈 플랫폼(브이월드 등)에서 특정 지역에 대한 지역 데이터를 다운로드 하여 메모리에 저장 할 수 있다. 상기 지역 데이터에는, 3D 도시모델을 위한 지형 데이터와 건물 데이터 등을 포함 할 수 있다.
Data Manager(210)는, 렌더링 대상지역의 위도 및 경도를 파악하여, 상기 공간정보 오픈 플랫폼으로부터 상기 렌더링 대상지역에 대한 지역 데이터를 다운로드 하여 메모리에 저장 할 수 있다.
Data Manager(210)는, 효과적으로 지역 데이터를 처리하기 위해서 비동기 처리 기법을 사용할 수 있다.
Allocation Ratio Handling Server(220)는 Optimal allocation ratio finder와, Database를 포함하여 구성 할 수 있다.
Allocation Ratio Handling Server(220)는 GPU 성능에 관한 GPU 정보를 이용하여 GPU/CPU 연산 비율을 결정할 수 있다.
Allocation Ratio Handling Server(220)는 Load Balancing Optimizer(230)에서 전달받은 GPU 정보를 이용하여 Database로부터 bandwidth를 확인할 수 있다.
Allocation Ratio Handling Server(220)는 bandwidth에 따른 GPU 성능을 확인하고, 확인된 GPU 성능에 맞춰 GPU/CPU 연산 비율을 결정할 수 있다.
Allocation Ratio Handling Server(220)는 Regression(회귀) 기법으로 계산된 GPU/CPU 연산 비율을 Load Balancing Optimizer(230)로 전달 할 수 있다.
Load Balancing Optimizer(230)는 LoadBalancingManager와, GPUScript 및 JobScript를 포함할 수 있다.
Load Balancing Optimizer(230)는 메모리에 있는 지역 데이터를 GPU/CPU 연산 비율에 따라 배분 함으로써, GPU의 ComputeShader와 CPU의 Job System이 배분된 지역 데이터를 각자의 성능에 맞춰 최적하게 연산하도록 할 수 있다.
Load Balancing Optimizer(230)는 메모리에 저장한 지역 데이터를 이용하여 지형과 건물 객체를 생성 할 수 있다.
Load Balancing Optimizer(230)는 Allocation Ratio Handling Server(220)와 통신하여 건물처리에 필요한 GPU/CPU 연산 비율을 입력받을 수 있다.
Load Balancing Optimizer(230)는 지형과 건물 객체의 생성 시간을 단축하기 위해, Allocation Ratio Handling Server(220)로부터 전달받은 GPU/CPU 연산 비율을 기준으로 GPU 연산과 CPU 연산이 실행되도록 제어 할 수 있다.
Load Balancing Optimizer(230)는 메모리에 저장된 지역 데이터를, 3D 객체에 필요한 지형과 건물 객체(Mesh)를 생성할 수 있다.
Load Balancing Optimizer(230)는 GPU 성능의 확인을 위한 GPU 정보를 Allocation Ratio Handling Server(220)에 제공하고, Allocation Ratio Handling Server(220)로부터 GPU/CPU 연산 비율을 제공 받을 수 있다.
Load Balancing Optimizer(230)는 제공받은 GPU/CPU 연산 비율에 따라, ComputeShader에 의한 GPU 연산과, Job System에 의한 CPU 연산이 수행되도록 제어하여, 건물 객체의 생성 시간을 최소화 할 수 있다.
Load Balancing Optimizer(230)는 GPU/CPU 연산 비율에 맞게 ComputeShader을 호출하여 GPU 연산하고, Job System을 비동기 호출하여 CPU 연산을 실행 할 수 있다.
GPU(ComputeShader)(240)는 GPU Tile.Compute, 및 GPU Building.Compute를 포함할 수 있다.
GPU(ComputeShader)(240)는 Load Balancing Optimizer(230)에 의한 호출시 연산하여 지형과 건물 객체에 필요한 Mesh 데이터를 생성한 후 Graphics Buffer를 이용하여 렌더링 할 수 있다.
CPU(Job System)(250)는 Job System을 포함할 수 있다.
CPU(Job System)(250)는 Load Balancing Optimizer(230)에 의한 비동기 호출시, 전체 렌더링 대상 중, GPU(ComputeShader)(240)에서 처리하고 남은 나머지의 지형과 건물 객체에 대한 Mesh 데이터를 생성할 수 있다.
CPU(Job System)(250)는 메모리의 지역 데이터를 Job System의 Native Array로 전달하고 비동기 처리로 Job System에 의해 Mesh 데이터를 생성할 수 있다.
도 3은, Allocation Ratio Handling Server의 내부 구성을 상세화 한 도이다.
도 3에 도시한 바와 같이, Allocation Ratio Handling Server(300)는, Optimal allocation ratio finder(310)와, Database를 구성하는 GPUInfo.table(320), Function.table(330), 및 TestData.table(340)을 포함 할 수 있다.
Optimal allocation ratio finder(310)는 GPU 정보로부터 GPU Name을 취득하고, 취득된 GPU Name에 해당하는 bandwidth를 GPUInfo.table(320)로부터 조회하여 회귀(Regression) 받음으로써, GPU/CPU 연산 비율(Ration)을 결정할 수 있다.
Optimal allocation ratio finder(310)는 Load Balancing Optimizer(230)로부터 전송받은 렌더링 수단의 GPU 정보를 이용하여 GPUInfo.table(320)에서 bandwidth를 조회하고, Function.table(330)에서 변수를 조회하여 GPU/CPU 연산 비율을 계산할 수 있다.
Optimal allocation ratio finder(310)는 GPU 정보를 이용하여 bandwidth를 조회하고 Function.table(330)에서 변수에 따른 선형 함수를 이용하여 GPU/CPU 연산 비율을 구할 수 있다.
Optimal allocation ratio finder(310)는 구해진 GPU/CPU 연산 비율을 Load Balancing Optimizer(230)로 전달할 수 있다.
Optimal allocation ratio finder(310)는 Function.table(330)에서 검색한 변수 a 'slope', 변수 b 'intercept'와, GPUInfo.table(320)에서 검색한 bandwidth(w)를 함수 f(w) = aw + b에 대입하여 GPU/CPU 연산 비율을 구할 수 있다.
Optimal allocation ratio finder(310)는 구해진 GPU/CPU 연산 비율을 Load Balancing Optimizer(230)에 전달할 수 있다.
Optimal allocation ratio finder(310)는 인터넷을 통해 정보를 안전하게 교환하기 위해 REST API 적용하여 GPU/CPU 연산 비율을 JSON형태로 Load Balancing Optimizer(230)에 전달할 수 있다.
GPUInfo.table(320)은 Database의 일 구성으로서, GPU 정보와 bandwidth를 저장하고 있는 테이블 일 수 있다.
Allocation Ratio Handling Server(300)는, GPUInfo.table(320)에 저장된 GPU 정보를 이용하여 bandwidth를 조회 할 수 있다.
Allocation Ratio Handling Server(300)는, 필요시 GPUInfo.table(320)에 대해 새로운 GPU 정보를 업데이트 할 수 있다.
Function.table(330)은 Database의 일 구성으로서, 비율 계산을 위한 함수 정보 테이블일 수 있다.
Function.table(330)은 GPU/CPU 연산 비율을 구하기 위한 계수를 저장하고 있는 테이블 일 수 있다.
Allocation Ratio Handling Server(300)는, bandwidth와 Function.table(330)의 계수를, 함수에 적용하여 GPU/CPU 연산 비율을 구할 수 있다.
Allocation Ratio Handling Server(300)는, 필요시 TestData.table(340)의 데이터를 이용하여 선형 추세선을 구하여 계수를 Function.table(330)에 저장할 수 있다.
TestData.table(340)은 Database의 일 구성으로서, 비율 계산 함수를 구하기 위한 실험 데이터 테이블일 수 있다.
TestData.table(340)은 선형 추세선을 구하기 위한 실험 데이터 테이블일 수 있다.
TestData.table(340)은 GPU의 bandwidth와 최적 비율을 구한 실험 데이터 테이블일 수 있다.
TestData.table(340)은 비율 함수의 계수를 구하는데 이용될 수 있다.
TestData.table(340)은 GPU의 bandwidth를 x, 비율을 y로 하여 선형 추세선을 구하는데 사용되는 데이터 테이블일 수 있다.
Allocation Ratio Handling Server는, 필요시 TestData.table(340)에 저장된 실험 데이터에 최소자승법(Method of Least Squares)을 이용하여 선형 추세선을 구하여 Function.table (330)에 저장할 수 있다.
도 4는 Load Balancing Optimizer의 작동 과정을 설명하기 위한 도이다.
단계 410에서 Load Balancing Optimizer(230)는, GPU 성능을 확인할 수 있다. Load Balancing Optimizer(230)는, GPU 성능에 관한 GPU 정보를 생성하고, GPU 정보를 Allocation Ratio Handling Server(220)에 전송한다.
GPU 정보를 수신한 Allocation Ratio Handling Server(220)는, GPU/CPU 연산 비율을 결정하여 Load Balancing Optimizer(230)로 제공 할 수 있다.
Load Balancing Optimizer(230)는, 수신된 GPU/CPU 연산 비율에 따라, GPU 연산과 CPU 연산을 실행할 때 할당되는 각각의 건물 수를 정할 수 있다.
단계 420에서 Load Balancing Optimizer(230)는, 지형 Mesh를 생성할 수 있다. Load Balancing Optimizer(230)는, 메모리로부터 지역 데이터를 가져와, GPU/CPU 연산을 통하여 지형 Mesh를 생성할 수 있다.
Load Balancing Optimizer(230)는, 지형 Mesh 생성에 있어, 지형 데이터를 ComputeShader와 Job System에 균등 배분하여 GPU 연산과 CPU 연산을 할당하여 지형 Mesh를 생성할 수 있다.
단계 430에서 Load Balancing Optimizer(230)는, 건물 Mesh를 생성할 수 있다. Load Balancing Optimizer(230)는, GPU/CPU 연산 비율을 전체 건물 수에 적용하여 GPU 연산과 CPU 연산을 배분할 수 있다.
Load Balancing Optimizer(230)는, 대량의 건물 생성에서 GPU/CPU 연산 비율에 따라 건물 처리에 분할하여 배분 할 수 있다.
Load Balancing Optimizer(230)는, Allocation Ratio Handling Server(220)로부터 전달 받은 GPU/CPU 연산 비율에 따라 GPU/CPU 연산에 의해 렌더링하는 건물 수를 결정할 수 있다.
Load Balancing Optimizer(230)는, 전체 건물에서 GPU 연산에 적용되는 할당 개수로서, 전체 개수에서 GPU/CPU 연산 비율을 곱셈 적용하여 건물 수를 결정할 수 있다.
단계 440에서 Load Balancing Optimizer(230)는, GPU(ComputeShader)(240)/CPU(Job System)(250)을 호출할 수 있다. Load Balancing Optimizer(230)는, 배분된 건물 개수만큼 GPU의 ComputeShader 연산을 호출할 수 있다. JOB System은 비동기로 호출할 수 있다.
Load Balancing Optimizer(230)는, 건물을 생성할 때 각각 배분된 수 만큼 GPU와 CPU로 연산하여 건물 객체를 생성할 수 있다.
Load Balancing Optimizer(230)는, 건물 전체 개수에서 GPU에 배분된 개수만큼 ComputeShader로 연산하고 나머지는 CPU의 Job System을 비동기로 실행하여 건물을 생성할 수 있다.
본 발명의 건물 로딩 최적화 구현 장치(100)는, 데이터를 분석하여 추출하는 기술을 구현할 수 있다.
건물 로딩 최적화 구현 장치(100)는, 렌더링 수단에서 동작하는 GPU의 GPU 정보를 확인하는 기술을 구현할 수 있다.
건물 로딩 최적화 구현 장치(100)는, GPU 정보 Database를 처리하는 기술을 구현할 수 있다.
건물 로딩 최적화 구현 장치(100)는, CPU의 비동기 처리 방식 기술을 구현할 수 있다.
건물 로딩 최적화 구현 장치(100)는, GPU의 ComputeShader에서 데이터를 추출하여 Mesh를 생성하는 기술을 구현할 수 있다.
건물 로딩 최적화 구현 장치(100)는, CPU의 Job System에서 데이터를 추출하여 Mesh를 생성하는 기술을 구현할 수 있다.
도 5는 본 발명에 따라 비율이 결정된 GPU 연산과 CPU 연산에 의해, 건물 생성 렌더링이 적용되는 일례를 보여주기 위한 도이다.
도 5에서와 같이, 건물 로딩 최적화 구현 장치(100)는, 명령 function RunBuilding()을 통해, '배율에 따라 GPU 실행 건물과 CPU 실행 건물 분류', 'Job System을 비동기로 호출', 'GPU 연산 호출', 및 'Job System 완료 기다림'을 실행할 수 있다.
CPU의 Job System에 의한 건물 생성에 있어, 건물 로딩 최적화 구현 장치(100)는, 명령 function RunCPU_Job System()을 통해, '메모리의 건물 정보를 Job System에 연결', 'Job System 실행하여 건물의 mesh 정보 생성', '완료'을 실행할 수 있다.
GPU의 ComputeShader에 의한 건물 생성에 있어, 건물 로딩 최적화 구현 장치(100)는, 명령 function RunGPU_ComputeShader()를 통해, '메모리의 건물 정보를 GPU 입력에 연결', 'GPU의 출력을 건물의 mesh 연결', ' 'GPU의 ComputeShader로 건물의 mesh 생성'을 실행할 수 있다.
도 6은 본 발명에 따른 건물 로딩 최적화 구현 장치에 의한 구체적인 실시예를 보여주기 위한 도이다.
도 6의 실시예에서, 로딩 대상 건물은, 예컨대 부산 시청 주변 반경 1.0Km 내의 건물 수 약 8000개를 대상으로 한다.
도 6a에서, 건물 로딩 최적화 구현 장치(100)는, CPU의 비동기처리, CPU의 Job System, GPU의 ComputeShader, GPU와 CPU의 배분처리로 테스트를 실행할 수 있다. 실행 회수는 각각 50회일 수 있다.
건물 로딩 최적화 구현 장치(100)는, 렌더링 수단의 GPS 성능에 따른 GPU/CPU 배분 실행이 어떤 조건에서도 가장 빠른 속도로 보여 줄 수 있다.
GPU가 고 사양(bandwidth : 500GB/s 이상) 환경에서는 CPU의 Job System과, GPU의 ComputeShader가 비슷하거나 GPU의 ComputeShader가 약간 빠른 현상을 보인다(Job System : ComputeShader = 510 : 470).
GPU가 중간 사양(bandwidth 가 200GB/s 이상) 환경에서는 CPU의 Job System이 GPU의 ComputeShader 보다 빠른 속도를 보인다(Job System : ComputeShader = 790 : 990).
GPU가 저 사양 환경에서는 GPU의 ComputeShader가 CPU의 Job System 보다 훨씬 느린 속도를 보인다(Job System : ComputeShader = 905 : 250).
도 6b에는, 본 발명에 따른, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현의 실제 결과물을 예시하여 보여준다.
기존 3D 도시공간 시스템에서 많은 수의 건물을 로딩하여 생성할 때 많은 시간이 소요되나, 건물 로딩 최적화 구현 장치(100)는, 이를 개선하여 최적의 속도로 생성하는 방법을 제시할 수 있다.
기존 방법은 CPU의 비동기 방법이나 유니티의 Job System, GPU의 ComputeShader 실행 중 한 가지 방법으로 건물을 생성하였다. 그러나, 기존의 방법은 Job System이나 GPU 연산으로만 했을 때 렌더링 수단의 실행환경에 따라 느려지는 경우가 나타날 수 있다.
본 발명에 의해서는, GPU연산으로 적절한 수의 건물을 실행하게 하고 CPU의 Job System을 비동기로 실행하여 최적의 속도로 실행할 수 있다.
도 7은 본 발명에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법의 순서를 도시한 흐름도이다.
본 실시예에 따른 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법은, 상술한 건물 로딩 최적화 구현 장치(100)에 의해 수행될 수 있다.
우선, 건물 로딩 최적화 구현 장치(100)의 Data Manager에서, 렌더링 대상지역에 관한 지역 데이터를, 공간정보 오픈 플랫폼으로부터 다운로드하여 메모리에 저장한다(710). 단계(710)는 Data Manager에 의해, 디지털트윈 기반 3D 도시공간 내, 렌더링하고자 하는 렌더링 대상지역에 대한 건물, 지형 등의 지역 데이터를 공간정보 오픈 플랫폼으로부터 획득하여, 메모리에 유지하는 과정일 수 있다.
공간정보 오픈 플랫폼은, 국가에서 보유하고 있는 공개 가능한 공간정보를 자유롭게 활용할 수 있도록 다양한 방법을 제공하는 공간정보체계를 지칭할 수 있다. 공간정보 오픈 플랫폼은, 2D(수치지도를 그래픽화한 배경지도), 3D(수치표고모형과 건물 및 시설물로 구성되는 모형)공간정보를 제공하는 지도서비스, 3차원 특화 프로그램인 3D 데스크톱, 브이월드 활용 및 개발을 지원하는 OpenAPI 등 다양한 서비스를 제공할 수 있다.
또한, 건물 로딩 최적화 구현 장치(100)의 Allocation Ratio Handling Server에서, 렌더링 수단에서 동작하는 GPU의 성능에 상응하여, GPU/CPU 연산 비율을 결정한다(720). 단계(720)는 Allocation Ratio Handling Server에 의해, GPU가 발휘할 수 있는 성능을 고려하여, CPU와 GPU 각각에 할당되는 연산 비율을 정하는 과정일 수 있다.
예컨대, Allocation Ratio Handling Server는 GPU 성능이, GPU 성능에 대해서 실험적으로 도출한 기준으로서 규정된 기준 성능 이상으로 높은 경우, GPU에 의해 렌더링되는 건물 비율이 많아지는 방향으로, 상기 GPU/CPU 연산 비율을 결정할 수 있다.
반면, Allocation Ratio Handling Server는 GPU 성능이 상기 기준 성능 보다 낮은 경우, GPU에 의한 건물 렌더링 비율 보다, CPU의 비동기 처리 방식에 의한 건물 렌더링 비율이 많아지도록, 상기 GPU/CPU 연산 비율을 결정할 수 있다.
계속해서, 건물 로딩 최적화 구현 장치(100)의 Load Balancing Optimizer에서, 상기 메모리로부터 상기 지역 데이터를 가져와 상기 렌더링 대상지역의 전체 건물을 확인하고, GPU의 ComputeShader와 CPU의 Job System을 호출 함으로써, 상기 ComputeShader와 상기 Job System 각각이, 상기 GPU/CPU 연산 비율 만큼 건물을 렌더링하도록 제어한다(730). 단계(730)는 Load Balancing Optimizer에 의해, 메모리에서 렌더링 대상지역에 관한 지역 데이터를 로딩하고, 로딩한 지역 데이터를 분석하여 확인되는 렌더링 대상지역 내의 전체 건물에 대해, GPU/CPU 연산 비율에 따른 ComputeShader와 Job System의 연산에 의해, 건물 렌더링이 수행되도록 제어하는 과정일 수 있다.
ComputeShader는 렌더링 파이프라인 외부의 GPU에서 실행되는 프로그램으로, CPU의 부하를 줄이고 코어수가 훨씬 많은 GPU를 이용하여 더 많은 연산을 할 수 있게 하는 프로그램일 수 있다.
Job System은, 사용 가능한 CPU 코어를 사용하여 코드를 실행할 수 있도록 하는 멀티스레드 코드를 작성 함으로써, 응용 프로그램의 성능을 향상시키는 프로그램일 수 있다.
상기 GPU의 ComputeShader와 상기 CPU의 Job System은, 상기 Load Balancing Optimizer의 호출 및 제어에 따라, 상기 전체 건물 중, 상기 GPU/CPU 연산 비율에 상응하는 일부의 건물에 대해 렌더링하여, 상기 전체 건물을 시각화할 수 있다. 즉, ComputeShader와 Job System은, 결정된 GPU/CPU 연산 비율에 맞춰 각각 개별 연산함으로써, 렌더링 대상지역 내의 건물을 렌더링 할 수 있다.
건물 렌더링에 있어, Load Balancing Optimizer는, 상기 전체 건물의 수에, 상기 GPU/CPU 연산 비율을 곱셈하여, 상기 GPU의 ComputeShader와 상기 CPU의 Job System 각각에서 렌더링해야 하는 건물의 수를 상이하게 정할 수 있다.
예컨대, GPU/CPU 연산 비율이 "GPU : CPU = 0.35 : 0.65"로 결정되는 경우, Load Balancing Optimizer는, 전체 건물의 수 '100채'에, 0.35를 곱셈 적용하여, GPU의 ComputeShader에서 렌더링해야 하는 건물의 수를 '35채'로 정하고, CPU의 Job System에서 렌더링해야 하는 건물의 수를 '65채'로 정할 수 있다.
실시예에 따라, 건물 로딩 최적화 구현 장치(100)는, 렌더링 대상지역에 대한 지형의 렌더링에 관해서는, 건물 렌더링 때와 달리, ComputeShader와 Job System에 대한 연산 비율을 동일하게 결정할 수 있다.
이를 위해, Load Balancing Optimizer는, 상기 지역 데이터를 상기 메모리로부터 로딩하고, 상기 지역 데이터 내 지형 객체를 분석하여 상기 렌더링 대상지역의 지형을 확인하되, 상기 확인된 지형의 렌더링을 위한 연산 비율을, 상기 GPU의 ComputeShader와 상기 CPU의 Job System에서 균등하게 정할 수 있다.
이를 통해, Load Balancing Optimizer는, 건물에 비해 상대적으로 연산 수가 작은 지형의 렌더링이, CPU와 GPU의 균형된 연산 처리에 의해 적정한 수준으로 수행되도록 할 수 있다.
실시예에 따라, 건물 로딩 최적화 구현 장치(100)는 GPU의 성능을 인지하여, 상기 GPU/CPU 연산 비율을 결정할 수 있다.
이를 위해, Load Balancing Optimizer는, 상기 지역 데이터를 상기 메모리로부터 로딩하고, 상기 지역 데이터 내 건물 객체를 분석하여 상기 렌더링 대상지역의 전체 건물을 확인할 수 있다. 즉, Load Balancing Optimizer는, 렌더링 대상지역 내, 렌더링 해야 할 전체 건물의 수를, 지역 데이터를 통해 인지할 수 있다.
또한, Load Balancing Optimizer는, 상기 GPU에 관한 GPU 정보를 생성하여 상기 Allocation Ratio Handling Server(120)에 전달 함으로써, 상기 Allocation Ratio Handling Server에서 상기 GPU의 성능을 인지하도록 할 수 있다. 즉, Load Balancing Optimizer는, 렌더링 수단에서 동작하는 GPU의 성능을 포함하여 GPU 정보를 생성하고, GPU/CPU 연산 비율을 결정할 수 있게, Allocation Ratio Handling Server에, 생성된 GPU 정보를 제공할 수 있다.
Allocation Ratio Handling Server는, 상기 Load Balancing Optimizer로부터 전달된 GPU 정보에 대응하여 저장되는 bandwidth를, GPUInfo.table로부터 추출하고, 상기 추출된 bandwidth와 연관되어, Function.table로부터 변수를 조회하며, 상기 bandwidth와, 상기 변수에 의한 선형함수의 연산을 통해, 상기 GPU의 성능에 상응하는 상기 GPU/CPU 연산 비율을 결정할 수 있다.
즉, Allocation Ratio Handling Server는, GPU 정보로부터 취득한 GPU Name에 해당하는 bandwidth를 GPUInfo.table로부터 추출하고, 추출된 bandwidth에 대응하여 유지되는 변수 a(slope), b(intercept)를 Function.table로부터 조회할 수 있다.
이후, Allocation Ratio Handling Server는, 선형함수 f(w) = aw + b에, bandwidth w와, 변수 a(slope), b(intercept)를 대입하여, 상기 GPU/CPU 연산 비율을 결정할 수 있다. 즉, Allocation Ratio Handling Server는, Function.table에서 검색한 slope(a), intercept(b)와 GPUInfo.table에서 검색한 bandwidth(w)를 함수 f(w) = aw + b에 대입하여 GPU/CPU 연산 비율을 구할 수 있다.
본 발명에 따르면, 3D 도시공간에서의 건물 생성에 있어, GPU 성능에 따라 CPU와 GPU에 대한 적절한 연산 배분을 통하여 대량의 건물을 생성하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법을 제공할 수 있다.
또한, 본 발명에 의해서는, 디지털트윈 기반 3D 도시공간에서 대량의 건물을 로딩하여 구현하기 위해 실행되는 최적화 구현 방법을 제시할 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 저장 될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 청구범위의 범위에 속한다.
100 : 건물 로딩 최적화 구현 장치
110 : Data Manager
120 : Allocation Ratio Handling Server
130 : Load Balancing Optimizer
140 : ComputeShader
150 : Job System

Claims (15)

  1. 렌더링 대상지역에 관한 지역 데이터를, 공간정보 오픈 플랫폼으로부터 다운로드하여 메모리에 저장하는 데이터 매니저(Data Manager);
    렌더링 수단에서 동작하는 GPU의 성능에 상응하여, GPU/CPU 연산 비율을 결정하는 얼로케이션 레이시오 핸들링 서버(Allocation Ratio Handling Server); 및
    상기 메모리로부터 상기 지역 데이터를 가져와 상기 렌더링 대상지역의 전체 건물을 확인하고, GPU의 컴퓨트 쉐이더(ComputeShader)와 CPU의 잡 시스템(Job System)을 호출 함으로써, 상기 컴퓨트 쉐이더와 상기 잡 시스템 각각이, 상기 GPU/CPU 연산 비율 만큼 건물을 렌더링하도록 제어하는 로드 밸런싱 옵티마이저(Load Balancing Optimizer)
    를 포함하고,
    상기 로드 밸런싱 옵티마이저는,
    상기 지역 데이터를 상기 메모리로부터 로딩하고, 상기 지역 데이터 내 건물 객체를 분석하여 상기 렌더링 대상지역의 전체 건물을 확인하고,
    상기 GPU에 관한 GPU 정보를 생성하여 상기 얼로케이션 레이시오 핸들링 서버에 전달 함으로써, 상기 얼로케이션 레이시오 핸들링 서버에서 상기 GPU의 성능을 인지하도록 하고,
    상기 얼로케이션 레이시오 핸들링 서버는,
    상기 로드 밸런싱 옵티마이저로부터 전달된 GPU 정보에 대응하여 저장되는 밴드위스(bandwidth)를, GPU인포 테이블(GPUInfo.table)로부터 추출하고,
    상기 추출된 밴드위스와 연관되어, 펑션 테이블(Function.table)로부터 변수를 조회하며,
    상기 밴드위스와, 상기 변수에 의한 선형함수의 연산을 통해, 상기 GPU의 성능에 상응하는 상기 GPU/CPU 연산 비율을 결정하는,
    디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치.
  2. 제1항에 있어서,
    상기 GPU의 컴퓨트 쉐이더와 상기 CPU의 잡 시스템은,
    상기 로드 밸런싱 옵티마이저의 호출 및 제어에 따라, 상기 전체 건물 중, 상기 GPU/CPU 연산 비율에 상응하는 일부의 건물에 대해 렌더링하여, 상기 전체 건물을 시각화하는,
    디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치.
  3. 제2항에 있어서,
    상기 로드 밸런싱 옵티마이저는,
    상기 전체 건물의 수에, 상기 GPU/CPU 연산 비율을 곱셈하여, 상기 GPU의 컴퓨트 쉐이더와 상기 CPU의 잡 시스템 각각에서 렌더링해야 하는 건물의 수를 상이하게 정하는,
    디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치.
  4. 제2항에 있어서,
    상기 로드 밸런싱 옵티마이저는,
    상기 지역 데이터를 상기 메모리로부터 로딩하고, 상기 지역 데이터 내 지형 객체를 분석하여 상기 렌더링 대상지역의 지형을 확인하되, 상기 확인된 지형의 렌더링을 위한 연산 비율을, 상기 GPU의 컴퓨트 쉐이더와 상기 CPU의 잡 시스템에서 균등하게 정하는,
    디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치.
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 얼로케이션 레이시오 핸들링 서버는,
    상기 선형함수 f(w) = aw + b에, 밴드위스 w와, 변수 a(slope), b(intercept)를 대입하여, 상기 GPU/CPU 연산 비율을 결정하는
    디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 장치.
  8. 데이터 매니저에서, 렌더링 대상지역에 관한 지역 데이터를, 공간정보 오픈 플랫폼으로부터 다운로드하여 메모리에 저장하는 단계;
    얼로케이션 레이시오 핸들링 서버에서, 렌더링 수단에서 동작하는 GPU의 성능에 상응하여, GPU/CPU 연산 비율을 결정하는 단계;
    로드 밸런싱 옵티마이저에서, 상기 메모리로부터 상기 지역 데이터를 가져와 상기 렌더링 대상지역의 전체 건물을 확인하고, GPU의 컴퓨트 쉐이더와 CPU의 잡 시스템을 호출 함으로써, 상기 컴퓨트 쉐이더와 상기 잡 시스템 각각이, 상기 GPU/CPU 연산 비율 만큼 건물을 렌더링하도록 제어하는 단계;
    상기 로드 밸런싱 옵티마이저에서, 상기 지역 데이터를 상기 메모리로부터 로딩하고, 상기 지역 데이터 내 건물 객체를 분석하여 상기 렌더링 대상지역의 전체 건물을 확인하는 단계;
    상기 로드 밸런싱 옵티마이저에서, 상기 GPU에 관한 GPU 정보를 생성하여 상기 얼로케이션 레이시오 핸들링 서버에 전달 함으로써, 상기 얼로케이션 레이시오 핸들링 서버에서 상기 GPU의 성능을 인지하도록 하는 단계;
    상기 얼로케이션 레이시오 핸들링 서버에서, 상기 로드 밸런싱 옵티마이저로부터 전달된 GPU 정보에 대응하여 저장되는 밴드위스를, GPU인포 테이블로부터 추출하는 단계;
    상기 얼로케이션 레이시오 핸들링 서버에서, 상기 추출된 밴드위스와 연관되어, 펑션 테이블로부터 변수를 조회하는 단계; 및
    상기 얼로케이션 레이시오 핸들링 서버에서, 상기 밴드위스와, 상기 변수에 의한 선형함수의 연산을 통해, 상기 GPU의 성능에 상응하는 상기 GPU/CPU 연산 비율을 결정하는 단계
    를 포함하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법.
  9. 제8항에 있어서,
    상기 GPU의 컴퓨트 쉐이더와 상기 CPU의 잡 시스템에서, 상기 로드 밸런싱 옵티마이저의 호출 및 제어에 따라, 상기 전체 건물 중, 상기 GPU/CPU 연산 비율에 상응하는 일부의 건물에 대해 렌더링하여, 상기 전체 건물을 시각화하는 단계
    를 더 포함하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법.
  10. 제9항에 있어서,
    상기 로드 밸런싱 옵티마이저에서, 상기 전체 건물의 수에, 상기 GPU/CPU 연산 비율을 곱셈하여, 상기 GPU의 컴퓨트 쉐이더와 상기 CPU의 잡 시스템 각각에서 렌더링해야 하는 건물의 수를 상이하게 정하는 단계
    를 더 포함하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법.
  11. 제9항에 있어서,
    상기 로드 밸런싱 옵티마이저에서, 상기 지역 데이터를 상기 메모리로부터 로딩하고, 상기 지역 데이터 내 지형 객체를 분석하여 상기 렌더링 대상지역의 지형을 확인하되, 상기 확인된 지형의 렌더링을 위한 연산 비율을, 상기 GPU의 컴퓨트 쉐이더와 상기 CPU의 잡 시스템에서 균등하게 정하는 단계
    를 더 포함하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법.
  12. 삭제
  13. 삭제
  14. 제8항에 있어서,
    상기 얼로케이션 레이시오 핸들링 서버에서, 상기 선형함수 f(w) = aw + b에, 밴드위스 w와, 변수 a(slope), b(intercept)를 대입하여, 상기 GPU/CPU 연산 비율을 결정하는 단계
    를 더 포함하는, 디지털트윈 기반 3D 도시공간에서 대량의 건물 로딩 최적화 구현 방법.
  15. 제8항 내지 제11항, 제14항 중 어느 한 항의 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
KR1020230016133A 2023-02-07 2023-02-07 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법 KR102625105B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230016133A KR102625105B1 (ko) 2023-02-07 2023-02-07 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230016133A KR102625105B1 (ko) 2023-02-07 2023-02-07 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102625105B1 true KR102625105B1 (ko) 2024-01-16

Family

ID=89719291

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230016133A KR102625105B1 (ko) 2023-02-07 2023-02-07 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102625105B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170102726A (ko) * 2016-03-02 2017-09-12 한국전자통신연구원 이종 컴퓨팅 방법
KR20200005951A (ko) * 2018-07-09 2020-01-17 서울시립대학교 산학협력단 3차원 bim 객체 모델링 서버 및 이를 포함하는 3차원 bim 객체 모델링 시스템

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170102726A (ko) * 2016-03-02 2017-09-12 한국전자통신연구원 이종 컴퓨팅 방법
KR20200005951A (ko) * 2018-07-09 2020-01-17 서울시립대학교 산학협력단 3차원 bim 객체 모델링 서버 및 이를 포함하는 3차원 bim 객체 모델링 시스템

Similar Documents

Publication Publication Date Title
US11159392B2 (en) Managing service deployment
US9910714B2 (en) Scriptable dynamic load balancing in computer systems
US20170109210A1 (en) Program Execution On Heterogeneous Platform
CN114418127B (zh) 机器学习计算优化方法和平台
EP2804099B1 (en) Apparatus and method managing power based on data
JP2019533256A (ja) アプリケーションリンク拡張方法、装置、及びシステム
JP2019526128A (ja) 自動的にコンパイルされたコンピュートシェーダを用いるプリミティブカリング
US11663288B2 (en) Just-in-time front end template generation using logical document object models
CN109690482A (zh) 虚拟机图形处理器的分配
US20180081728A1 (en) Apparatus and method managing computing resources
US20160110209A1 (en) Apparatus and method for performing multi-core emulation based on multi-threading
US10785109B1 (en) Automated generation of a network service design
JP2019503534A (ja) データベース操作方法及び装置
WO2021156956A1 (ja) オフロードサーバ、オフロード制御方法およびオフロードプログラム
KR102625105B1 (ko) 디지털트윈 기반 3d 도시공간에서 대량의 건물 로딩 최적화 구현 장치 및 방법
JP6385471B2 (ja) 移行および遠隔ランタイム統合
CN110955380B (zh) 访存数据生成方法、存储介质、计算机设备和装置
KR101661475B1 (ko) 이기종 클러스터 상에서 하둡 부하 분산 방법, 이를 수행하기 위한 기록 매체 및 하둡 맵리듀스 시스템
CN116701143A (zh) 性能分析方法、装置、系统、计算设备及存储介质
CN112990461A (zh) 构建神经网络模型的方法、装置、计算机设备和存储介质
US20120017070A1 (en) Compile system, compile method, and storage medium storing compile program
US11977957B2 (en) Quantum computing program compilation using cached compiled quantum circuit files
JP2024505440A (ja) トリガ条件に依存する命令実行のための回路及び方法
AU2021258032A1 (en) Routing sql statements to elastic compute nodes using workload class
US20230096849A1 (en) Offload server, offload control method, and offload program

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant