KR100960588B1 - 슬라이스 데이터 구조를 구축하는 방법 및 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 gpu 등으로의 실장 방법 - Google Patents

슬라이스 데이터 구조를 구축하는 방법 및 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 gpu 등으로의 실장 방법 Download PDF

Info

Publication number
KR100960588B1
KR100960588B1 KR1020080073990A KR20080073990A KR100960588B1 KR 100960588 B1 KR100960588 B1 KR 100960588B1 KR 1020080073990 A KR1020080073990 A KR 1020080073990A KR 20080073990 A KR20080073990 A KR 20080073990A KR 100960588 B1 KR100960588 B1 KR 100960588B1
Authority
KR
South Korea
Prior art keywords
voxel
data structure
particle
dimensional
calculation
Prior art date
Application number
KR1020080073990A
Other languages
English (en)
Other versions
KR20090027143A (ko
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 프로메텍·소프트웨어 가부시키가이샤
Publication of KR20090027143A publication Critical patent/KR20090027143A/ko
Application granted granted Critical
Publication of KR100960588B1 publication Critical patent/KR100960588B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/453Help systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/454Multi-language systems; Localisation; Internationalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Data Mining & Analysis (AREA)
  • Geometry (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Image Generation (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은, 슬라이스 데이터 구조, 및 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 GPU 등으로의 실장 방법에 관한 것으로서, 스트리밍 프로세서나 GPU 등을 사용한 입자법 시뮬레이션 등을 위한 슬라이스 데이터 구조는, 계산 공간에 대한 데이터 구조이며, 공간은 다수의 복셀로 구성되는 3차원 계산 공간이며, Y축에 직교하는 복수개의 슬라이스를 형성하여, 다수의 복셀을 복수개의 2차원 슬라이스로 분할하고, 복수개의 2차원 슬라이스 각각에서, 입자가 존재하는 복셀의 존재 범위에 대하여 최대 복셀과 최소 복셀 각각의 개시 좌표를 계산하고, 존재 범위를 직사각형의 형상으로 에워싸는 바운딩 박스를 결정하고, 복수개의 2차원 슬라이스 영역 각각의 바운딩 박스에 포함되는 복셀에 대하여 메모리를 확보한다.

Description

슬라이스 데이터 구조를 구축하는 방법 및 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 GPU 등으로의 실장 방법{METHOD FOR CONSTRUCTING DATA STRUCTURE, AND METHOD FOR LOADING PARTICLE-BASED SIMULATION USING SLICED DATA STRUCTURE INTO GPU, ETC.}
본 발명은, 입자를 사용한 유체 계산 방법에 따른 입자법 시뮬레이션 등으로, 근방 탐색에 사용하는 계산 격자의 사용법에 대하여 메모리 효율을 양호하게 하면서, 또한 근방 입자 탐색을 효율화하는 슬라이스 데이터 구조, 및 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 GPU 등으로의 실장 방법에 관한 것이다.
「입자법 시뮬레이션」은, 대상으로 하는 물체를 다수의 입자의 모임(집합)으로서 간주하고, 다수의 입자 각각의 거동에 주목해 계산을 행하는 시뮬레이션 방법이다. 컴퓨터에서의 계산 상, 상기 입자에는, 통상, 직경이 일정한 「구(球)」가 사용된다. 물체의 형상을 구의 집합체에 의해 표현할 때, 상기 구의 크기(직경)의 결정 방법에 의존하여 물체의 형상의 근사도 또는 공간 해상도가 변화한다. 또한, 구의 직경을 변화시키고, 공간 해상도를 변화시킴으로써, 컴퓨터에 의한 시뮬레이션 계산에서의 계산 정밀도와 계산 속도를 제어하는 것이 가능하게 된다.
최근, 전술한 입자법 시뮬레이션을 이용하여 유체 등의 거동(擧動) 계산이 행해지고, 컴퓨터의 표시 장치의 화면 상에서 유동 등의 유체 시뮬레이션의 연구가 행해지고 있다. 이 연구가 개시되는 문헌으로서 타나카 마사유키 등, 「입자법을 이용한 강체 계산 방법의 개발과 컴퓨터 그래픽스로의 적용」, 일본 기계 학회, 제19 회 계산 역학 강연회 강연 논문집, 701-702페이지, 2006을 들 수 있다. 입자법 시뮬레이션 기술의 연구는, 컴퓨터 그래픽스 CG의 기초가 되는 기술로서 중요하다.
입자법을 이용한 유체 시뮬레이션의 방법에는 MPS법(Moving Particle Semi-implicit Method)과 SPH(Smoothed Particle Hydrodynamics)가 있다. MPS법은 연속 식으로부터 도출하는 포아송 방정식을 풀어 비압축 흐름을 계산하지만, SPH는 비압축 조건을 부가하지 않고, 유사 비압축 흐름을 계산한다. 그러므로 MPS법은 SPH와 비교하여 계산 비용이 높아진다. 그러므로, 컴퓨터 그래픽스의 분야에서는 SPH의 방법이 주류로 되어 있다.
전술한 입자법 시뮬레이션의 연구에서는, 종래, 주로 CPU를 이용하여 계산 알고리즘을 만드는 방법은 많이 행해지고 있었다. 그러나, 최근에는, GPU(Graphics Processing Unit: 일반적으로 스트리밍 프로세서)를 이용한 입자법 시뮬레이션의 연구도 행해지고 있다. GPU는, 그래픽스의 처리로 특화하기 위해, 내부에 복수개의 프로세서가 병렬로 연산 처리를 행하는 구성으로 되어 있다. 그러므로, 정점의 좌표 변환 등의 처리이면, GPU는 CPU와 비교하여 극히 고속으로 처리할 수 있다. 또한, GPU는, 셰이더(shader)라는 프로그램을 사용함으로써 처리를 제어할 수 있으므로, 그래픽스 이 외의 다양한 처리에 사용할 수도 있다. 그래서, 입자법 시뮬레이션에 관한 계산도 GPU로 고속화하는 것도 시도되고 있다. 예를 들 면, 본 발명자는, SPH의 모든 시뮬레이션을, GPU를 사용하여 행하는 방법을 개발했다. 이 방법을 개시하는 문헌으로서 T. Harada, S. Koshizuka, and Y. Kawaguchi Real-time fluid simulation coupled with cloth. In Proc. of Theory and Practice of Computer Graphics, 2007, 및 T. Harada, S. Koshizuka, and Y. Kawaguchi Smoothed particle hydrodynamics on gpus. In Proc. of Computer Graphics International, pages 63-70, 2007을 들 수 있다.
본 발명자가 제안한 전술한 방법에서는, 입자법 시뮬레이션에서의 근방 입자의 탐색에 관하여 공간 상에 고정된 격자를 사용하였으므로, 메모리 효율이 나쁘고, 계산 영역에 대하여 제한이 생기는 문제가 있었다.
예를 들면, 입자를 사용하는 유체 계산 방법은, 격자를 사용하는 유체 계산 방법에 비하여, 일반적으로 계산 격자를 이용하지 않기 때문에, 미세한 비말(飛沫) 등도 용이하게 계산할 수 있고, 실제 유체 거동을 표현할 수 있는 이점이 있다. 한편, 입자를 사용하는 유체 계산 방법은, 계산 입자끼리가 접속 관계를 가지지 않고, 동적으로 입자의 배치를 변경하므로, 어떤 좌표에서의 물리량을 계산하기 위해서는 각 타임 단계에서, 상기 좌표의 근방에 존재하는 입자를 탐색하는 처리가 필요하다.
근방 입자 탐색을 효율적으로 행하기 위해서는, 계산 영역에 격자(계산 격자)를 배치하고, 어떤 입자의 번호를, 상기 입자가 들어가 있는 복셀(버킷 또는 그리드라고도 함)에 저장함으로써 효율화를 도모할 수 있다. 일반적으로는 계산 영역을 내포하도록 계산 격자가 준비된다.
상기에서, 계산 격자를 고정화하여 준비하면, 유체의 계산 영역 내의 입자 분포가 변화할 때는, 입자가 존재하지 않는 복셀이 많아지고, 메모리의 사용 효율이 악화된다. 시뮬레이션 프로그램이 사용할 수 있는 메모리의 크기는 한계가 있으므로, 계산 격자에 사용하는 메모리를 적게 하면 할수록, 유체를 표현하는 입자에 사용할 수 있는 메모리가 증가하고, 보다 대규모 유체 시뮬레이션을 행할 수 있다.
이상의 문제점으로부터, 입자법 시뮬레이션의 근방 입자 탐색에 사용하는 계산 격자의 메모리 효율을 높이는 것이 요구되고 있다.
본 발명의 목적은, 전술한 과제를 감안하여, 입자를 사용한 유체 계산 방법에 기초한 입자법 시뮬레이션에서, 근방 입자 탐색에 사용하는 계산 격자의 사용법에 대하여, 메모리의 사용 효율을 양호하게 하면서, 또한 근방 입자 탐색을 효율화할 수 있는 슬라이스 데이터 구조를 제공하는 것에 있다.
또한, 본 발명의 다른 목적은, 메모리의 사용 효율을 양호하게 할 수 있는 전술한 슬라이스 데이터 구조를 용이하게 GPU 등에 실장할 수 있는 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 GPU 등으로의 실장 방법을 제공하는 것에 있다.
본 발명에 따른 슬라이스 데이터 구조는, 전술한 목적을 달성하기 위해, 다음과 같이 구성된다.
입자법 시뮬레이션 등에 사용되는 슬라이스 데이터 구조는, CPU, 스트리밍 프로세서, 및 GPU 등을 사용하여 입자법 시뮬레이션의 계산 등에서 사용되는 공간에 대한 데이터 구조이다. 상기 공간은 다수의 복셀로 구성되는 3차원 계산 공간이다. 3차원 계산 공간에서 임의의 하나의 축에 직교하는 복수개의 2차원 슬라이스 영역(슬라이스)을 형성함으로써, 다수의 복셀(격자)을 복수개의 2차원 슬라이스 영역으로 분할한다. 복수개의 2차원 슬라이스 영역 각각에서는, 입자가 존재하는 복셀의 존재 범위에 대하여 최대 복셀과 최소 복셀 각각의 개시 좌표를 계산함으로써, 존재 범위를 직사각형의 형상으로 에워싸는 직사각형 범위(바운딩 박스)를 결정한다. 복수개의 2차원 슬라이스 영역 각각의 직사각형 범위 내에 포함되는 복셀은 메모리를 확보한다.
슬라이스 데이터 구조는, 전술한 구성에서, 입자가 존재하는 복셀에 대하여 확보된 메모리의 저장 요소에는 상기 입자를 특정하는 값(예를 들면, 입자 번호 등)이 저장된다.
슬라이스 데이터 구조는, 전술한 구성에서, 복수개의 2차원 슬라이스 영역 각각의 직사각형 범위 내에서의 어떤 점 (x, y, z)이 존재하는 복셀의 복셀 번호v(x, y, z)의 계산은, 각각의 2차원 슬라이스 영역의 직사각형 범위를 정의한 값, 슬라이스 번호를 결정하는 값, 및 선두 번호를 사용하여 행해진다.
본 발명의 입자법 시뮬레이션 등의 위한 슬라이스 데이터 구조는, 전술한 구성에서, 입자법 시뮬레이션의 계산은 근방 입자 탐색의 계산이며, 근방 입자 탐색의 계산을 효율화하기 위해 3차원 계산 공간이 2차원 슬라이스 영역에 의해 분할된다.
입자법 시뮬레이션 등을 위한 슬라이스 데이터 구조는, 전술한 구성에서, 입자법 시뮬레이션의 계산에 대하여 3차원 계산 공간을 2차원 슬라이스 영역에 의해 분할하는 계산은 스트리밍 프로세서나 GPU를 사용하여 행해진다.
슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 스트리밍 프로세서나 GPU로의 실장 방법은, 입자법 시뮬레이션의 근방 입자 탐색의 계산을 효율화하기 위한 데이터 구조를 구축하고, 이 데이터 구조를 사용하여 근방 입자 탐색을 GPU 등의 상에서 행하므로 필요한 데이터를 배열로 하여 비디오 메모리에 저장하여 GPU 등에 실장하는 방법이다. 이 방법은, 다수의 복셀로 구성되는 3차원 계산 공간에서 임의의 하나의 축에 직교하는 복수개의 2차원 슬라이스 영역을 형성하여 다수의 복셀을 복수개의 2차원 슬라이스 영역으로 분할하는 단계와, 복수개의 2차원 슬라이스 영역 각각에서, 입자가 존재하는 복셀의 존재 범위에 대하여 최대 복셀과 최소 복셀 각각의 개시 좌표를 계산함으로써, 존재 범위를 직사각형의 형상으로 에워싸는 직사각형 범위를 결정하는 단계와, 적어도 1차원의 배열을 준비하는 단계와, 복수개의 2차원 슬라이스 영역 각각을 정의하는 데 최소로 필요한 4개의 값을 배열의 요소(GPU의 경우에는 RGBA 채널)에 저장하는 단계와, 적어도 1차원의 다른 배열을 준비하는 단계와, 입자의 입자 번호를 상기 다른 배열에 저장하는 단계를 포함한다.
전술한 GPU 등으로의 실장 방법에서, GPU로의 프로그램의 실장으로 셰이더를 사용할 때, 배열로서 텍스처(texture)가 사용된다.
전술한 실장 방법에서, 최소한의 4개의 값은, 임의의 2차원 슬라이스 영역 i에서의 선두의 복셀의 번호 pi, 최소의 복셀의 개시 좌표 bxi , min과 bzi , min, 소정의 축 방향의 복셀 수 nxi이다.
본 발명에 의하면, 고정 격자를 이용하지 않고, 3차원 계산 공간을 1개의 축방향에 직교하는 2차원 슬라이스 영역으로 분할하여, 소정의 직사각형 범위 즉 바운딩 박스로 하는 컨셉을 이용하여 메모리에 저장하는 복셀을 제한했기 때문에, GPU 등의 비디오 메모리를 효율적으로 이용할 수 있고, GPU 등을 사용한 입자 시뮬레이션의 근방 입자 탐색에 사용하는 복셀(격자)의 메모리 효율을 양호하게 할 수 있고, 근방 입자 탐색을 효율화할 수 있다.
이하에, 본 발명의 바람직한 실시예를 첨부 도면에 기초하여 설명한다. 도 1은, GPU를 사용한 입자법 시뮬레이션에서, 근방 입자 탐색의 계산에서 슬라이스 데이터 구조를 사용하고, 이 슬라이스 데이터 구조를 이용하여 구축되는 시뮬레이션 방법이 실시되는 컴퓨터 시스템의 구성을 나타낸다
컴퓨터 시스템(10)은, 예를 들면, PC(Personal Computer)를 이용하여 구성되며, 연산 처리부로서의 통상적인 컴퓨터의 연산 처리를 행하는 CPU(11)와, 화상 처리로 특화된 연산 처리를 행하는 GPU(12)를 구비하고 있다. 또한, 컴퓨터 시스템(10)은, 기억 장치로서 메인 메모리(13A)와 비디오 메모리 VRAM(13B)을 구비하고, 주변 장치로서 적어도 입력 장치(14) 및 표시 장치(15)를 구비하고 있다. CPU(11)와 GPU(12)와 메인 메모리(13A)와 입력 장치(14)와 표시 장치(15)는 버스(16)를 통하여 서로 접속되어 있다. 입력 장치(14)는 입력 인터페이스(17)를 통하여 버스(16)에 접속되고, 표시 장치(15)는 출력 인터페이스(18)를 통하여 버스(16)에 접속되어 있다. 또한, 비디오 메모리(13B)는 GPU(12)에 직접 접속되어 있다. 비디오 메모리(13B)에 대하여는 GPU(12)를 통해 데이터의 교환이 행해진다.
그리고, 본 실시예에서는, GPU(12)에서 적용되는 프로그래밍 방법은 셰이더(shader)를 사용하는 구성으로 되어 있다.
CPU(중앙 연산처리장치)(11)는, 예를 들면, PC 등에 장비되는 통상적인 연산 처리부이다. 또한, GPU(12)는 「Graphics Processing Unit」이며, 화상 연산 처리를 실행한다. CPU에는, 예를 들면, 「Core X6800」이 사용된다.
GPU(12)는, 복수개의 프로세서를 내장하여 이루어지고, 병렬 계산기로서 사용된다. GPU(12)로서는, 예를 들면, NVIDIA사 제의 「GeForce 8800GTX」가 사용된다. 그리고, GPU(12)로 사용되는 제품은 이에 한정되지 않고, 유사한 구조·기능을 가지는 다른 스트리밍 프로세서를 사용할 수 있다. 이 GPU(12)는, 메인 메모리(13A)에 저장된 근방 입자 탐색 프로그램(13A-1)을 실행하고, 입자법 시뮬레이션에서의 근방 입자 탐색 연산을 실시한다. 근방 입자 탐색 프로그램(13A-1)은, 근방 입자 탐색에 사용하는 데이터 구조의 구축을 실행한다. 본 발명에 따른 특징적인 구조를 가지는 데이터 구조의 구축 방법에 대해서는 나중에 상세하게 설명한다.
또한, GPU(12)는, 메인 메모리(13A)에 저장된 통상적인 화상 처리 프로그램(13A-2)을 실행하고, 근방 입자 탐색의 계산으로 얻어지면서, 또한 텍스처에 저장된 화상 데이터를 사용하여 화상 처리를 실시하고, 작성된 화상 데이터를 사용하여 표시 장치(15)의 화면에 묘화(표시를 위한 렌더링)한다. 표시 장치(15)의 화면에는, 입자법 시뮬레이션의 계산에 기초하여, CG 화상이 표시된다.
본 실시예의 이하의 설명에서는, 예를 들면, 입자법 시뮬레이션에 기초한 유 체 시뮬레이션의 계산예가 설명된다. 이 유체 시뮬레이션의 연산에서는, 주로 GPU(12)의 특징적인 내부 구조 및 기능을 이용하여, 근방 입자 탐색에 사용하기 위한 데이터 구조의 구축 방법이 실행된다. 본 실시예에서 설명되는 데이터 구조를, 후술하는 바와 같이, 「슬라이스 데이터 구조(또는 슬라이스 베이스 데이터 구조)」라고 한다. 그리고, CPU를 이용하여 실행할 수도 있다.
다음에, 도 2를 참조하여 전술한 GPU(12) 내의 주요부의 기본 구조를 설명한다. 도 2는 GPU(12)의 내부 구조를 모식적으로 나타낸 블록도이다. GPU(12)는, 병렬적으로 배치된 복수개의 프로세서(21)를 구비하고, 이들 프로세서에 의한 병렬 계산 처리에 기초하여, 표시(묘화)를 위한 렌더링이 실행된다. 특히 본 실시예에 따른 근방 입자 탐색에 사용되는 데이터 구조의 구축(복셀(또는 버킷)의 구축) 방법에 의하면, 1개의 복셀에 4개의 입자가 존재할 때, 4개의 입자의 입자 번호를 1개의 픽셀의 RGBA 채널 각각에 기록한다. GPU(12)에서의 상기 복셀의 구축 처리에 의해 화상 연산 처리의 고속화가 실현된다.
GPU(12)는, 통상, 전단 측에서 병렬적으로 배치된, 예를 들면, 8개의 버텍스(vertex)(정점) 셰이더 VS(22)와, 후단 측에서 병렬적으로 배치된, 예를 들면, 24개의 프래그먼트 셰이더(fragment shader) FS(23)를 가지고 있다. 복수개의 버텍스(정점) 프로세서(21A) 각각에서 실행되는 프로그램이 버텍스 셰이더(22)이며, 프래그먼트 프로세서(21B) 각각에서 실행되는 것이 프래그먼트 셰이더(23)이다.
전술한 경우에, 버텍스 프로세서는 병렬적으로 배치된 프로세서이며, 다수의 정점의 좌표 변환(입력된 정점 좌표를, 렌더링되는 화상 공간에서의 좌표로 변환 함)을 일제히 처리하는 것으로 특화된 프로세서이다. GPU(12)는, 정점의 좌표 변환을 CPU와 비교하여 고속으로 계산할 수 있다. 버텍스 프로세서의 동작을 지정하는 것이 버텍스 셰이더이다.
또한, GPU(12)에는, 깊이 테스트 기능부(24), 컬러 마스크 기능부(25), 스텐실(stencil) 테스트 기능부(26)가 구비되어 있다. 또한, 블록(27)은 셰이더 지령 분배부이다.
GPU(12)를 사용한 입자법 시뮬레이션에서 사용되는 본 실시예에 따른 데이터 구조로서의 「슬라이스 데이터 구조」의 기본적인 개념에 대하여 설명한다.
입자법에 기초한 유체 계산에서는, 각 타임 스텝에서 실행되는 근방 입자 탐색을 위한 계산에 사용하는 공간(또는 영역)을 설정한다. 이 공간을 「계산 공간」이라고 한다. 이 계산 공간은, 도 3에 나타낸 바와 같이, 서로 직교하는 X축, Y축, Z축의 3축으로 정의되는 3차원의 공간(31)이다. 계산 공간(31)에서는 다수의 격자(32)가 준비된다. 다수의 격자(32)는 계산 공간(31)을 형성하고, 각 격자(32)는 한 변이 「d」인 작은 입방체이다. 본 실시예의 설명에서는, 격자(32)를 「복셀」이라고 부르기로 한다. 그리고, 「복셀」에 대해서는, 그 밖에 「버킷」 또는 「그리드」라 부를 수도 있다.
전술한 다수의 격자, 즉 복셀(32)은 무한하게 확대되며, 계산중에는 계산 공간(31) 상에서 그 배치는 변경되지 않는다. 본 실시예에 의한 계산 방법에서는, 계산 공간(31)을 형성하는 전술한 다수의 복셀(32) 중, 후술하는 바와 같이, 필요한 것만 비디오 메모리(13B) 상에 유지한다.
그리고, 종래의 계산 방법과 같이 고정된 격자를 사용하는 경우에는, 계산 공간 내에서 계산 영역을 위한 바운딩 박스를 결정하고, 상기 바운딩 박스의 내부의 복셀을 위한 입자의 유무에 관계없이 메모리를 확보하도록 하고 있었다. 즉, 입자가 존재하지 않는 복셀에 대해서도 메모리를 확보하도록 하고 있었다. 이에 비해, 본 실시예의 계산 방법에서는, 원칙적으로, 입자가 존재하고 있는 복셀에 메모리를 확보하도록 하고 있다.
본 실시예의 계산 방법에서는, 먼저, 계산 공간(31)에 대하여 1개의 축에 직교하는 복수개의 슬라이스(31a)를 형성하고, 계산 공간(31)에 준비된 다수의 복셀(32)을 복수개의 슬라이스(31a) 각각에 포함되도록 분할한다. 각 슬라이스(31a)의 차원은, 계산 공간(31)의 차원(3차원)보다 1차원 낮아져서, 2차원이 된다. 각 슬라이스(31a)의 두께에 해당하는 치수는 복셀(32)의 한 변 d와 거의 같다. 즉, 슬라이스(31a)가 직교하는 1개의 축의 방향으로는 1복셀 분만큼 가지게 된다. 이 「1개의 축」으로서는, 예를 들면, X축, Y축, Z축 등의 임의의 하나의 축을 선택할 수 있다. 예를 들면, 「1개의 축」으로서 Y축을 선택하면, 슬라이스(31a)는 XZ축으로 정해지는 XZ 평면 방향으로 넓어지는 2차원 공간이 된다. 이하에서는, 3차원의 계산 공간(31)을 Y축에 수직인 2차원의 슬라이스(31a)로 분할한 경우의 예를 설명한다.
계산 공간(31)을 복수개의 슬라이스(31a)로 분할한 후에, 각각의 슬라이스(31a)에서 XZ축 방향 대한 바운딩 박스를 정의한다. 상기 바운딩 박스는, 1개의 슬라이스(31a) 내에서 입자가 존재하는 영역을 직사각형의 영역에 의해 가능한 한 좁게 확정하기 위한 경계로 구획되는 범위를 의미하고 있다. 이 슬라이스(31a)에서 바운딩 박스를 정의한 것은, XZ축 방향에서의 최대 복셀과 최소 복셀의 개시 좌표 bxi , max, bxi , min, bzi , max, bzi , min을 계산하는 것을 의미한다. 여기서 「i」는 슬라이스를 특정하는 번호를 의미한다. XZ축 방향에서의 최대 복셀과 최소 복셀의 개시 좌표 bxi , max, bxi , min, bzi , max, bzi , min을 계산함으로써, 1개의 슬라이스(31a)의 바운딩 박스에 포함되는 복셀의 수, 환언하면 슬라이스(31a)에 포함되는 XZ축 방향의 복셀의 개수 nxi, nzi는 하기 수식 1의 (1)식과 (2)식에서 구해진다.
(수식 1)
Figure 112008054633711-pat00001
전술한 nxi, nzi를 사용함으로써 번호 i의 슬라이스(31a)에서의 복셀의 개수 ni는, ni = nxi × zi로 구할 수 있다. 본 실시예의 계산 방법에서는, 각 슬라이스 내의 바운딩 박스의 내부 영역만의 복셀에 관하여 메모리를 확보한다.
여기서, 계산 공간(31)은 n개의 슬라이스 {S0, S1, S2, …,Sn -1}로 분해되는 것으로 한다. 최초의 슬라이스 Si에서의 선두의 복셀의 번호 pi는 슬라이스 S0로부 터 Si -1에 있는 복셀의 개수의 합으로서 하기 수식 2의 (3)식으로 계산된다.
(수식 2)
Figure 112008054633711-pat00002
도 4에, 종래의 계산 방법에 따른 고정 격자의 구조를 사용하는 경우의 바운딩 박스의 예 (A)와, 본 실시예의 계산 방법에 따르는 복셀을 결정하기 위한 바운딩 박스의 예(B)를 나타낸다. 도 4의 것(A)과(B)에서는, 도시되는 오덕 X축, Y축, Z축이 정의되어 있다. 도 4의 것(A)과(B)는, Z 축방향에 대하여 직교하는 1개의 XY축 방향의 하나의 정사각형의 면(XY 평면)에서 나타내고 있다. 도 4의 것(A)과(B)에 있어서, 정사각형(41)으로 정해진 범위 내가 작은 정사각형(41a)는 1개의 복셀을 나타내고, 또한 원(42)는 복셀 내에 존재하고 있는 입자를 나타내고 있다. 따라서, 정사각형(41)의 범위 내에는 입자(42)가 존재하는 복셀과 입자(42)가 존재하지 않는 복셀이 포함되어 있다.
도 4의 (A)와 (B)에서 Y축 방향으로 직교하는 인용 부호 43으로 나타내는 층형의 부분이 전술한 슬라이스(31a)에 대응하고 있다.
그리고, 도 4에서 전술한 인용 부호 41a, 42, 43은 각각 일부만을 가리키고 있고, 그 외의 동일한 것에는 인용 부호를 부여하는 것을 생략하고 있다.
종래의 계산 방법에 의하면, 고정 격자의 구조이므로, 도 4의 (A)에 나타낸 바와 같이 입자의 유무에 관계없이 정사각형의 범위(41)(굵은 실선으로 나타냄)에 포함되는 모든 복셀에 대하여 메모리가 확보되도록 구축되는 것이었다. 즉, 입자(42)가 존재하지 않는 다수의 복셀에 대해서도 메모리를 확보할 필요가 있었다. 이에 비해, 본 실시예의 계산 방법에서는, 각 슬라이스에서(로) 정의된 바운딩 박스가 합성되어 만들어진 영역(44)(굵은 실선으로 나타냄), 즉 가능한 한 입자(42)가 존재하는 복셀만을 포함하도록 좁게 만들어진 영역(44)에 포함된 복셀에 대하여 메모리를 확보하도록 구축된다.
계산 공간(31)에 관하여 상기 슬라이스를 이용하여 전술한 바와 같이 바운딩 박스를 형성함으로써, 어떤 점 (x, y, z)가 존재하는 복셀의 번호는 다음과 같이 계산된다.
먼저 Y축 방향의 최소 복셀의 개시 좌표 bymin을 사용하여, 그 점이 포함되는 슬라이스의 번호 i를 하기 수식 3의 (4)식에서 계산한다.
(수식 3)
Figure 112008054633711-pat00003
그리고, 점 (x, y, z)의 복셀 번호 v(x, y, z)는, 하기 수식 4의 (5)식에서 계산된다.
(수식 4)
Figure 112008054633711-pat00004
이와 같이 하여 전술한 점 (x, y, z)가 존재하는 복셀의 복셀 번호가 계산된다. (5)식을 참조하면, 어떤 점이 존재하는 복셀의 번호를 계산하기 위해 필요한 값은, 각 슬라이스의 바운딩 박스를 정의한 값 bxi , min, bzi , min, nxi, 슬라이스 번호를 결정하는 값 bymin, 각 슬라이스의 선두 번호 pi, 그리고, 복셀의 한 변의 길이 d인 것을 알 수 있다. 슬라이스를 이용한 전술한 데이터 구조를 사용하면, 도 4의 (B)에 나타낸 바와 같이, 메모리를 효율적으로 사용하여 복셀(격자)을 만들 수 있다.
이상에 의해, 본 실시예에 의한 계산 방법으로 특징적인 데이터 구조인 「슬라이스 데이터 구조」가 만들어진다. 전술한 슬라이스 데이터 구조를 실제로 구축하기 위해서는, n개의 슬라이스 {S0, S1, S2, …, Sn-1} 각각의 바운딩 박스를 결정하고, 결정된 바운딩 박스로부터 각 슬라이스의 선두 번호를 계산한다. 그리고, 복셀 번호 v(x, y, z)를 계산하기 위한 상기 4개의 값(pi, bxi, min, bzi, min, nxi)를 구한 후, 이들 값을 복셀에 기록해 나간다. 이들 4개의 값은 바운딩 박스를 정의하기 위한 최소한의 값이며, 이들 값으로 한정되는 것은 아니다.
다음에, 상기 슬라이스 데이터 구조에 기초한 계산 방법이 GPU(12)를 사용하여 실행할 수 있도록 GPU(12) 상에 실장하는 구조에 대하여 설명한다.
GPU(12)를 사용한 본 실시예의 계산 방법의 실장에 대하여 도 5에 나타낸다. 도 5에 나타낸 바와 같이, 비디오 메모리(13B)에서의 데이터 구조의 설정 단계 S11, 계산 공간(31)을 분할하는 다수의 슬라이스(31a) 각각에서의 바운딩 박스의 결정 단계 S12, 각 슬라이스(31a)에서의 입자의 선두 번호의 계산 단계 S13, 값의 저장 단계 S14, 및 값의 판독 단계 S15의 5개의 단계에 의해 구성된다.
그리고, 전술한 「슬라이스 데이터 구조」에 대해서는, 「슬라이스 데이터 구조의 구축」의 관점, 및 「슬라이스 데이터 구조의 이용」의 관점에서 파악할 수 있다. 「슬라이스 데이터 구조의 구축」의 관점에 의하면, 「슬라이스 데이터 구조의 구축」은, 전술한 5개의 단계 S11∼S15 중, 「데이터 구조의 설정」, 「바운딩 박스의 결정」, 「선두 번호의 계산」, 및 「값의 저장」에 의해 구성된다. 또한, 「슬라이스 데이터 구조의 이용」의 관점에 의하면, 전술한 5개의 단계 S11∼S15 중, 「값의 판독」에 의해 구성된다.
이하, 5개의 단계 S11∼S15에서의 처리 내용을 나누어서 설명한다.
데이터 구조의 설정 단계 S11 :
최초에, 도 6의 처리 흐름을 참조하여, GPU(12) 상에서의 실장을 가능하게 하기 위한 데이터 구조를 설명한다. GPU(12) 상에서 계산을 행하기 위해서는, 계산 공간에서의 슬라이스, 복셀, 및 입자에 관한 데이터를 텍스처(13B-1)로서 비디오 메모리(13B)에 저장하는 것이 필요하다.
전술한 대로 계산 공간(31)은 복수개의 슬라이스(31a)로 분할되므로, 각 슬라이스(31a)에 필요한 값, 즉 전술한 4개의 값 pi, bxi , min, bzi , min, nxi를 저장하기 위해 1차원의 텍스처를 준비한다(단계 S21). 복수개의 슬라이스(31a)의 개수가 1차원 텍스처의 크기의 최대값을 초과하는 경우에는, 2차원의 텍스처로 할 수도 있 다. 각 슬라이스(31a)에 필요한 4개의 값 pi, bxi , min, bzi , min, nxi는 1차원 텍스처의 하나의 RGBA 채널에 저장된다(단계 S22). RGBA 채널을 이용하여 저장하므로, 통상, 1개의 텍스처로 충분히 대응할 수 있다.
또한, 격자, 즉 복셀에 유지하는 값을 저장하기 위해 2차원 텍스처를 준비한다(단계 S23). 본 실시예의 예에서, 복셀에 유지하는 값은 입자 번호이다. 2차원 텍스처를 이용하여 복셀에 유지하는 입자 번호를 저장한다(단계 S24). 입자 번호를 저장하는 2차원 텍스처를 「인덱스 풀 텍스처」라고 한다. 본 실시예의 예에서는, 1개의 복셀에 1텍셀(texel)을 할당하도록 하고 있다. 이 경우에 있어서, 2차원 텍스처의 텍셀 수가, 인덱스 풀 텍스처에 저장할 수 있는 복셀의 최대수가 된다.
바운딩 박스의 결정의 단계 S12 :
다음에, 도 7의 처리 흐름을 참조하여 바운딩 박스의 결정의 순서를 설명한다. 슬라이스(31a)에서의 바운딩 박스를 결정하기 위해서는, 먼저 각 슬라이스에서의 최대 복셀과 최소 복셀의 개시 좌표를 계산한다(단계 S31). 이 계산의 처리에서는, 입자의 Y 좌표값으로부터 상기 입자가 속하는 슬라이스의 번호를 계산하고, 또한 각 슬라이스에 존재하는 입자의 좌표의 최대값과 최소값을 계산함으로써 행해진다. GPU(12)를 사용하고 있으므로, GPU(12)에서는, 입자 1개에 대하여 1개의 정점을 할당하고, 준비한 전술한 1차원 텍스처에 기입한다(단계 S32).
GPU(12)의 버텍스 셰이더에서는, 입자의 Y 좌표값으로부터 전술한 식(4)를 사용하여 슬라이스 번호 i를 계산하고, 즉 전술한 1차원 텍스처에 기록하는 위치를 계산하고(단계 S33), 계산된 상기 위치에 정점을 기록한다(단계 S34). 그리고, GPU(12)의 프래그먼트 셰이더에서는, X 좌표값 및 Z 좌표값을 「색」으로서 출력한다(단계 S35). 그리고, 최대값과 최소값의 선택은, GPU(12)의 알파 블렌딩(alpha blending)의 기능을 사용하여 행할 수 있다. 알파 블렌딩과 같은, 몇개의 프로세서로부터 기록된 값을 비교하는 기능이 구비되는 스트리밍 프로세서에서는, 전술한 동작은, 메모리로의 기록을 연속적으로 행함으로써 실행된다. 아토믹 조작 능력을 가지는 스트리밍 프로세서에서는, 상기 능력은, 몇개의 프로세서에 의해 쓰여진 값을 비교하는 것에 사용할 수 있다.
선두 번호의 계산 단계 S13 :
통상, 복수개의 슬라이스(31a) 각각에서의 XZ 좌표의 최대값과 최소값을 사용함으로써 그 슬라이스 상의 복셀의 개수를 계산할 수 있다. 선두 번호의 계산은, 각 슬라이스에서 식(3)을 계산해야만 한다. 스트리밍 프로세서가 식(3)을 효율적으로 계산할 수 있을 때, 그 기능이 사용된다. 그러나, GPU에서 셰이더를 사용하여 실행할 때에는 이용하지 못하고, 다른 방식이 채용되어야만 한다. 전술한 식(3)의 계산 처리를, 슬라이스 i에 대하여 n0로부터 ni -1까지의 값을 판독하여 계산하게 된다. 슬라이스의 총수가 m이라고 하면, 종래의 계산 방법에 의하면, [m(m+1)/2]회의 메모리 액세스가 필요해지고, 그러므로 메모리 전송 속도에 의해 처리의 속도가 제한되게 된다.
그래서, 본 실시예의 계산 방법에서는, GPU(12)의 버텍스 셰이더를 이용한 기능으로 실행된다.
즉, 슬라이스 i에 존재하는 복셀의 개수 ni를 판독하여 (i+1)로부터 m번째의 슬라이스의 선두 번호 배열에 가산해 간다. 이에 따르면, m회의 메모리 액세스로 선두 번호를 계산할 수 있다. 이 처리는 이른바 「Scattering Operation」이며, GPU(12)를 사용하는 경우에는 버텍스 셰이더를 사용하여 행할 수 있다. 이 처리는, 슬라이스가 m개 있다고 하면, 요소수 m의 1차원 배열에 기록하는 처리이다. 즉, GPU(12)를 사용하는 경우에는, m개의 텍셀로 이루어지는 1차원 텍스처에 기록하는 처리가 된다. 슬라이스 i에 존재하는 복셀 수 ni를 (i+1)번째로부터 m번째의 슬라이스의 선두 번호 배열에 기록하는 처리는, (i+1)번째의 텍셀로부터 m번째의 텍셀까지의 선분을 묘화함으로써 행할 수 있다.
전술한 처리는, GPU(12)의 기능에 의하면, 프래그먼트 셰이더의 기능에 의해 슬라이스 내의 복셀의 수를 색으로서 출력한다. 또한, GPU(12)의 알파 블렌딩의 기능에 의해 가산 처리를 행함으로써 식(3)을 평가하고, 각 슬라이스의 선두 번호를 계산하는 것이 가능하게 된다.
도 8은, 전술한 슬라이스의 「선두 번호의 계산」의 컨셉을 도해한 것이다. 도 8의 (A)는, 전술한 도 4의 (B)의 내용과 같다. 도 8의 (B)는, (A)에서 나타낸 아래에서 위까지, 예를 들면 10층의 슬라이스 각각에서의 바운딩 박스 내에 포함되는 복셀의 개수를 대응하는 개소에 수치로 나타내고 있다. 도 8의 (C)는, 각 슬라 이스의 복셀의 개수가 가산되는 상태를 이미지적으로 도해한 것이다. 도 8의 (D)는 아래쪽으로부터 위쪽으로 향해 슬라이스의 총수에 대한 누적값을 나타낸 것이다.
값의 저장 단계 S14 :
전술한 바와 같이 하여 계산한 슬라이스의 선두 번호와 바운딩 박스를 정의한 값을 사용하여 입자 번호를 인덱스 풀 텍스처에 저장해 나간다.
값의 판독 단계 S15 :
도 9에 나타낸 처리 흐름을 참조한다. 입자의 Y 좌표값으로부터 슬라이스 번호를 계산하고(단계 S41), 상기 슬라이스의 선두 번호 pi와 슬라이스에서의 최소값 bxi , min, bzi , min, 슬라이스에서의 X축 방향의 복셀 개수 nxi를 판독한다(단계 S42). 이들 값을 사용하여 전술한 식(5)를 계산하고, 그 입자에 할당되어 있는 복셀의 인덱스를 계산한다(단계 S43). 계산된 인덱스에 대응하는 텍셀로의 값의 기록은, 입자 1개에, 정점을 1개 할당하고, 그 텍셀의 입자 번호를 판독함으로써 행해진다(단계 S44).
어떤 좌표가 존재하는 복셀에 저장되어 있는 값의 판독은, 그 좌표로부터 값의 저장 시와 마찬가지로 복셀의 인덱스, 즉 메모리의 어드레스를 계산함으로써 행해진다.
슬라이스 데이터 구조를 이용한 본 실시예에 따른 계산 방법은, 입자 번호를 저장하는 격자 데이터 구조의 구축과, 입자 번호의 저장까지의 처리를 GPU(12)로 행할 수 있고, 이에 따라, 입자법 시뮬레이션의 모든 단계를 GPU(12) 상에서 행할 수 있다.
본 실시예에 따른 계산 방법은, 고정 격자를 이용하지 않고, 계산 영역의 제한을 받지 않으므로, 넓은 계산 공간이라 하더라도 용이하게 계산할 수 있으므로, 입자가 존재하지 않는 복셀을 배제함으로써 메모리를 효율적으로 사용할 수 있다. 또한, 입자의 개수를 많이 해도 통상적으로 사용되는 메모리를 사용하여 입자법 시뮬레이션을 실행할 수 있다.
전술한 실시예에서는, GPU에서의 프로그램의 실장으로 셰이더(shader)를 사용하는 경우의 예를 설명하였으나, 이에 한정되지 않고, 예를 들면, 다른 프로그래밍 모델을 사용해도 실장할 수 있다. GPU에서의 프로그램의 실장에서는, 현재, 전술한 셰이더 외에, CUDA, CTM, Brook 등을 사용할 수 있다. 이들은, GPU를 스트리밍 프로세서(Streaming Processor)로서 사용하는 경우, 프로그램 언어라는 의미에서는 공통된다. 전술한 셰이더(shader)를 사용하는 예에서는, GPU(12) 상에서의 계산을 위하여, 계산 공간에서의 슬라이스, 복셀, 및 입자에 관한 데이터를 텍스처(13B-1)로서 비디오 메모리(13B)에 저장하였으나, CUDA 등을 사용하는 경우에는 텍스처 대신 일반적으로는 「배열」이 사용된다.
도 1은, 본 발명에 따른 입자법 시뮬레이션이 실행되는 컴퓨터 시스템의 기본적인 구성을 나타낸 시스템 구성도이다.
도 2는, 컴퓨터 시스템에 실장된 GPU의 내부의 기본적 구성을 나타낸 블록도이다.
도 3은, 3차원의 계산 공간을 도시한 사시도이다.
도 4는, 종래의 고정 격자 (A)와 본 실시예에 따른 격자(복셀)의 결정 방법 (B)를 대비하여 설명하기 위한 도면이다.
도 5는, 슬라이스 데이터 구조에 의한 계산 방법을 GPU에 실장하기 위한 순서를 나타낸 흐름도이다.
도 6은, 데이터 구조의 설정의 단계에 대한 보다 구체적인 순서를 나타낸 흐름도이다.
도 7은, 바운딩 박스의 결정 단계에 대한 보다 구체적인 순서를 나타낸 흐름도이다.
도 8은, 슬라이스의 「선두 번호의 계산」의 컨셉을 도해한 것이다.
도 9는, 값의 판독 단계에 대한 보다 구체적인 순서를 나타낸 흐름도이다.

Claims (10)

  1. 입자법 시뮬레이션의 근방 입자 탐색의 계산의 효율화를 위한 데이터 구조를 구축하는 방법으로서,
    다수의 복셀(voxel)로 구성되는 3차원 계산 공간에서 임의의 하나의 축에 직교하는 복수개의 2차원 슬라이스 영역을 형성함으로써, 상기 다수의 복셀을 상기 복수개의 2차원 슬라이스 영역으로 분할하는 단계;
    상기 복수개의 2차원 슬라이스 영역 각각에서, 입자가 존재하는 복셀의 존재 범위에 대하여 최대 복셀과 최소 복셀 각각의 개시 좌표를 계산함으로써, 상기 존재 범위를 직사각형의 형상으로 에워싸는 직사각형 범위를 결정하는 단계; 및
    상기 복수개의 2차원 슬라이스 영역 각각의 상기 직사각형 범위 내에 포함되는 상기 복셀에 관한 데이터를 메모리에 저장하는 단계
    를 포함하는 데이터 구조를 구축하는 방법.
  2. 제1항에 있어서,
    상기 저장하는 단계는, 상기 복셀에 존재하는 입자를 특정하는 값을 상기 메모리에 저장하는 단계인, 데이터 구조를 구축하는 방법.
  3. 제1항에 있어서,
    상기 복수개의 2차원 슬라이스 영역 각각의 상기 직사각형 범위 내에서의 어느 점(x, y, z)이 존재하는 상기 복셀의 복셀 번호 v(x, y, z)의 계산은, 각각의 상기 2차원 슬라이스 영역의 상기 직사각형 범위를 정의한 값, 슬라이스 번호를 결정한 값, 및 선두 번호를 사용하여 행해지는, 데이터 구조를 구축하는 방법.
  4. 삭제
  5. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 입자법 시뮬레이션의 상기 계산에 대하여 상기 3차원 계산 공간을 상기 2차원 슬라이스 영역에 의해 분할하는 계산은 GPU를 사용하여 행해지는, 데이터 구조를 구축하는 방법.
  6. 입자법 시뮬레이션의 근방 입자 탐색의 계산을 효율화하기 위한 데이터 구조를 구축하고, 상기 데이터 구조를 사용하여 근방 입자 탐색을 스트리밍 프로세서 상에서 행하기 위해 필요한 데이터를 배열(array)로 하여 비디오 메모리에 저장하여 스트리밍 프로세서에 실장하는 방법으로서,
    다수의 복셀로 구성되는 3차원 계산 공간에서 임의의 하나의 축에 직교하는 복수개의 2차원 슬라이스 영역을 형성하여 상기 다수의 복셀을 상기 복수개의 2차원 슬라이스 영역으로 분할하는 단계와,
    상기 복수개의 2차원 슬라이스 영역 각각에서, 입자가 존재하는 복셀의 존재 범위에 대하여 최대 복셀과 최소 복셀 각각의 개시 좌표를 계산함으로써, 상기 존재 범위를 직사각형의 형상으로 에워싸는 직사각형 범위를 결정하는 단계와,
    적어도 1차원의 배열을 준비하는 단계와,
    상기 복수개의 2차원 슬라이스 영역 각각을 정의하는 데 최소로 필요한 4개의 값을 상기 배열의 요소에 저장하는 단계와,
    적어도 1차원의 다른 배열을 준비하는 단계와,
    상기 입자의 입자 번호를 상기 다른 배열에 저장하는 단계
    를 포함하는 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 스트리밍 프로세서로의 실장 방법.
  7. 제6항에 있어서,
    최소한의 상기 4개의 값은, 임의의 2차원 슬라이스 영역 i에서의 선두 복셀의 번호 pi, 최소 복셀의 개시 좌표 bxi , min과 bzi , min, 소정의 축 방향의 복셀 개수 nxi인, 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 스트리밍 프로세서로의 실장 방법.
  8. 제6항에 있어서,
    상기 스트리밍 프로세서는 GPU이며, 상기 배열의 상기 요소는 RGBA 채널인, 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 스트리밍 프로세서로의 실장 방법.
  9. 제8항에 있어서,
    상기 GPU로의 프로그램의 실장에서 셰이더(shader)를 사용할 때, 상기 배열로서 텍스처가 사용되는, 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 스트리밍 프로세서로의 실장 방법.
  10. 삭제
KR1020080073990A 2007-09-11 2008-07-29 슬라이스 데이터 구조를 구축하는 방법 및 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 gpu 등으로의 실장 방법 KR100960588B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2007234989A JP5371221B2 (ja) 2007-09-11 2007-09-11 粒子法シミュレーションのためのスライスデータ構造、およびスライスデータ構造を利用した粒子法シミュレーションのgpuへの実装方法
JPJP-P-2007-00234989 2007-09-11

Publications (2)

Publication Number Publication Date
KR20090027143A KR20090027143A (ko) 2009-03-16
KR100960588B1 true KR100960588B1 (ko) 2010-06-03

Family

ID=39747180

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080073990A KR100960588B1 (ko) 2007-09-11 2008-07-29 슬라이스 데이터 구조를 구축하는 방법 및 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 gpu 등으로의 실장 방법

Country Status (7)

Country Link
US (1) US7920996B2 (ko)
JP (1) JP5371221B2 (ko)
KR (1) KR100960588B1 (ko)
CN (1) CN101388108B (ko)
DE (1) DE102008034519B4 (ko)
FR (1) FR2920899B1 (ko)
GB (1) GB2452808B (ko)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8289327B1 (en) * 2009-01-21 2012-10-16 Lucasfilm Entertainment Company Ltd. Multi-stage fire simulation
US9418182B2 (en) 2009-06-01 2016-08-16 Paradigm Sciences Ltd. Systems and methods for building axes, co-axes and paleo-geographic coordinates related to a stratified geological volume
US8711140B1 (en) * 2009-06-01 2014-04-29 Paradigm Sciences Ltd. Systems and methods for building axes, co-axes and paleo-geographic coordinates related to a stratified geological volume
US8600708B1 (en) 2009-06-01 2013-12-03 Paradigm Sciences Ltd. Systems and processes for building multiple equiprobable coherent geometrical models of the subsurface
US8743115B1 (en) 2009-10-23 2014-06-03 Paradigm Sciences Ltd. Systems and methods for coordinated editing of seismic data in dual model
US8725476B1 (en) * 2010-05-04 2014-05-13 Lucasfilm Entertainment Company Ltd. Applying details in a simulation
GB2489526A (en) * 2011-04-01 2012-10-03 Schlumberger Holdings Representing and calculating with sparse matrixes in simulating incompressible fluid flows.
EP2509009A1 (en) 2011-04-05 2012-10-10 Japan Agency for Marine-Earth Science and Technology Particle simulator and method of simulating particles
US8554527B2 (en) 2011-04-08 2013-10-08 Japan Agency For Marine-Earth Science And Technology Particle simulator and method of simulating particles
US8970592B1 (en) 2011-04-19 2015-03-03 Lucasfilm Entertainment Company LLC Simulating an arbitrary number of particles
US20140290531A1 (en) * 2011-08-16 2014-10-02 The University Of Chicago Methods of Designing Aggregates Optimized for Specified Properties
WO2013042212A1 (ja) * 2011-09-20 2013-03-28 富士通株式会社 探索プログラム、探索装置、および探索方法
US9159162B2 (en) 2011-12-28 2015-10-13 St. Jude Medical, Atrial Fibrillation Division, Inc. Method and system for generating a multi-dimensional surface model of a geometric structure
JP5890537B2 (ja) * 2011-12-28 2016-03-22 セント・ジュード・メディカル・エイトリアル・フィブリレーション・ディヴィジョン・インコーポレーテッド 幾何学的構造の多次元表面モデルを生成するための方法及びシステム
JP6009075B2 (ja) * 2012-12-20 2016-10-19 中国科学院近代物理研究所 粒子流動のシミュレーションシステム及びその方法
US9823889B2 (en) 2013-01-08 2017-11-21 Nxp Usa, Inc. Method and apparatus for estimating a fragment count for the display of at least one three-dimensional object
US20140324735A1 (en) * 2013-04-24 2014-10-30 International Business Machines Corporation Maximizing the utility of information in multiple intersecting data structures using platonic solids and related polyhedra and polytopes
EP3025260A4 (en) * 2013-07-24 2017-03-15 EXA Corporation Lattice boltzmann collision operators enforcing isotropy and galilean invariance
US10795053B2 (en) 2013-10-29 2020-10-06 Emerson Paradigm Holding Llc Systems and methods of multi-scale meshing for geologic time modeling
CN105654519B (zh) * 2014-11-11 2019-06-04 阿里巴巴集团控股有限公司 空间位置确定几何对象的方法及其装置
US9690002B2 (en) 2015-06-18 2017-06-27 Paradigm Sciences Ltd. Device, system and method for geological-time refinement
US11023993B2 (en) 2015-06-23 2021-06-01 Nxp Usa, Inc. Apparatus and method for verifying fragment processing related data in graphics pipeline processing
US9836808B2 (en) 2015-06-23 2017-12-05 Nxp Usa, Inc. Apparatus and method for verifying image data comprising mapped texture image data
US20170323471A1 (en) * 2016-05-06 2017-11-09 National Taiwan University 3D rendering method and 3D graphics processing device
US10466388B2 (en) 2016-09-07 2019-11-05 Emerson Paradigm Holding Llc System and method for editing geological models by switching between volume-based models and surface-based structural models augmented with stratigraphic fiber bundles
KR101918393B1 (ko) 2017-03-17 2018-11-13 부산대학교 산학협력단 Gpu를 이용한 셀 기반 플라즈마 시뮬레이션 장치
EP3531428A1 (en) * 2018-02-22 2019-08-28 Cell Therapy Catapult Limited Method for use in tissue engineering
US10520644B1 (en) 2019-01-10 2019-12-31 Emerson Paradigm Holding Llc Imaging a subsurface geological model at a past intermediate restoration time
US11156744B2 (en) 2019-01-10 2021-10-26 Emerson Paradigm Holding Llc Imaging a subsurface geological model at a past intermediate restoration time
CN109701273B (zh) * 2019-01-16 2022-04-19 腾讯科技(北京)有限公司 游戏数据的处理方法、装置、电子设备及可读存储介质
KR102181985B1 (ko) * 2019-12-13 2020-11-23 이에이트 주식회사 Sph 기반의 유체 해석 시뮬레이션을 하는 장치, 방법 및 컴퓨터 프로그램
KR102200444B1 (ko) * 2019-12-13 2021-01-08 이에이트 주식회사 Sph 기반의 유체 해석 시뮬레이션을 하는 장치, 방법 및 컴퓨터 프로그램
KR102200443B1 (ko) * 2019-12-13 2021-01-08 이에이트 주식회사 Lbm 기반의 유체 해석 시뮬레이션 장치, 방법 및 컴퓨터 프로그램
KR102181979B1 (ko) * 2019-12-13 2020-11-23 이에이트 주식회사 Sph 기반의 유체 해석 시뮬레이션을 하는 장치, 방법 및 컴퓨터 프로그램
CN113435075A (zh) * 2021-04-15 2021-09-24 温州大学 一种模拟海底能源管线遭受滑坡灾害冲击时引起荷载响应的计算机方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100721536B1 (ko) 2005-12-09 2007-05-23 한국전자통신연구원 2차원 평면상에서 실루엣 정보를 이용한 3차원 구조 복원방법

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5377129A (en) * 1990-07-12 1994-12-27 Massachusetts Institute Of Technology Particle interaction processing system
US5848260A (en) * 1993-12-10 1998-12-08 Exa Corporation Computer system for simulating physical processes
US6089744A (en) * 1997-12-29 2000-07-18 Exa Corporation Computer simulation of physical processes
US6556199B1 (en) * 1999-08-11 2003-04-29 Advanced Research And Technology Institute Method and apparatus for fast voxelization of volumetric models
JP2001236342A (ja) * 2000-02-23 2001-08-31 Gazo Giken:Kk 多体問題解析装置に用いるアドレス装置
US6864887B2 (en) * 2002-03-19 2005-03-08 Intel Corporation Classifying a voxel
US7023433B2 (en) * 2002-10-14 2006-04-04 Chung Yuan Christian University Computer-implemented method for constructing and manipulating a three-dimensional model of an object volume, and voxels used therein
US7098907B2 (en) * 2003-01-30 2006-08-29 Frantic Films Corporation Method for converting explicitly represented geometric surfaces into accurate level sets
US7349832B2 (en) * 2004-02-17 2008-03-25 Pixar Water particle manipulation
JP4987706B2 (ja) * 2004-06-30 2012-07-25 ディ.イー.ショー リサーチ,エルエルシー 多重物体系シミュレーション
US7298372B2 (en) * 2004-10-08 2007-11-20 Mitsubishi Electric Research Laboratories, Inc. Sample rate adaptive filtering for volume rendering
KR20060131145A (ko) * 2005-06-15 2006-12-20 엘지전자 주식회사 이차원 영상을 이용한 삼차원 물체의 렌더링 방법
KR100809525B1 (ko) * 2005-12-08 2008-03-04 한국전자통신연구원 파티클 집합을 둘러싸는 곡면 메쉬 생성 시스템 및 방법
JP4766383B2 (ja) * 2005-12-20 2011-09-07 独立行政法人海洋研究開発機構 粒子データ演算用プログラム並びに粒子データ演算装置及び方法
CN100465997C (zh) * 2006-12-05 2009-03-04 上海大学 基于元胞自动机的图像边缘检测算法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100721536B1 (ko) 2005-12-09 2007-05-23 한국전자통신연구원 2차원 평면상에서 실루엣 정보를 이용한 3차원 구조 복원방법

Also Published As

Publication number Publication date
GB0813935D0 (en) 2008-09-03
GB2452808B (en) 2012-01-25
FR2920899A1 (fr) 2009-03-13
US20090070079A1 (en) 2009-03-12
JP2009069930A (ja) 2009-04-02
CN101388108B (zh) 2011-11-23
US7920996B2 (en) 2011-04-05
JP5371221B2 (ja) 2013-12-18
GB2452808A (en) 2009-03-18
DE102008034519B4 (de) 2019-07-11
FR2920899B1 (fr) 2012-03-16
DE102008034519A1 (de) 2009-03-12
KR20090027143A (ko) 2009-03-16
CN101388108A (zh) 2009-03-18

Similar Documents

Publication Publication Date Title
KR100960588B1 (ko) 슬라이스 데이터 구조를 구축하는 방법 및 슬라이스 데이터 구조를 이용한 입자법 시뮬레이션의 gpu 등으로의 실장 방법
JP4463948B2 (ja) グラフィック・データを処理するためのプログラム可能な視覚化装置
US8682053B2 (en) Method for sampling volume data of an object in an imaging device
Schwarz et al. Fast GPU‐based adaptive tessellation with CUDA
US8130223B1 (en) System and method for structuring an A-buffer to support multi-sample anti-aliasing
US9530241B2 (en) Clipping of graphics primitives
Kim et al. Dynamic deep octree for high‐resolution volumetric painting in virtual reality
US8553041B1 (en) System and method for structuring an A-buffer to support multi-sample anti-aliasing
US7724254B1 (en) ISO-surface tesselation of a volumetric description
CN103403671B (zh) 用于光栅化的流压缩
WO2023169002A1 (zh) 软光栅化的方法、装置、设备、介质及程序产品
Shih et al. Out-of-core visualization of time-varying hybrid-grid volume data
CN109597127A (zh) 一种地震数据的可视化方法
Wang et al. A cache-friendly sampling strategy for texture-based volume rendering on GPU
Panagiotidis et al. Consistently gpu-accelerated graph visualization
Ahrens et al. A modular extensible visualization system architecture for culled prioritized data streaming
Tarner et al. Visually comparing rendering performance from multiple perspectives
Huang et al. Parallel‐optimizing SPH fluid simulation for realistic VR environments
JP6942007B2 (ja) 画像処理装置、及びプログラム
Dunn Interactive Sparse Eulerian Fluid
Bollig Centroidal Voronoi tesselation of manifolds using the GPU
Vassilev et al. Algorithm and data structures for implementing a mass-spring deformable model on GPU
Soltan et al. GPU Volume Voxelization
Glukhov et al. GPU Volume Voxelization: Exploration of the performance characteristics of different GPU-based implementations
Tasse Distributed texture-based terrain synthesis

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130429

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150508

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160322

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180313

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190314

Year of fee payment: 10