Devito는 높은 수준의 기호 문제 정의에서 최적화된 스텐실 계산(예: 유한 차분, 이미지 처리, 기계 학습)을 구현하는 Python 패키지입니다. Devito는 SymPy를 기반으로 하며 자동화된 코드 생성 및 적시 컴파일을 사용하여 CPU, GPU 및 클러스터를 포함한 여러 컴퓨터 플랫폼에서 최적화된 계산 커널을 실행합니다.
Devito는 여러 스텐실 계산, 경계 조건, 희소 연산(예: 보간) 등으로 구성될 수 있는 정교한 연산자를 구현하기 위한 기능적 언어를 제공합니다. 일반적인 사용 사례는 편미분 방정식을 근사화하기 위한 명시적 유한 차분 방법입니다. 예를 들어, 2D 확산 연산자는 다음과 같이 Devito로 구현될 수 있습니다.
>> > grid = Grid ( shape = ( 10 , 10 ))
>> > f = TimeFunction ( name = 'f' , grid = grid , space_order = 2 )
>> > eqn = Eq ( f . dt , 0.5 * f . laplace )
>> > op = Operator ( Eq ( f . forward , solve ( eqn , f . forward )))
Operator
순서가 지정된 Eq
모음에서 하위 수준 코드를 생성합니다(위의 예는 단일 방정식에 대한 것임). 이 코드는 컴파일되고 실행될 수도 있습니다.
>> > op ( t = timesteps , dt = dt )
Operator
의 복잡성에는 사실상 제한이 없습니다. Devito 컴파일러는 자동으로 입력을 분석하고 최적화(단일 및 다중 노드 병렬 처리 포함)를 감지 및 적용한 다음 최종적으로 적합한 루프 및 표현식을 사용하여 코드를 생성합니다.
주요 기능은 다음과 같습니다:
Devito를 사용해 보는 가장 쉬운 방법은 Docker를 통해 다음 명령을 사용하는 것입니다.
# get the code
git clone https://github.com/devitocodes/devito.git
cd devito
# start a jupyter notebook server on port 8888
docker-compose up devito
위의 마지막 명령을 실행하면 터미널에 https://127.0.0.1:8888/?token=XXX
와 같은 URL이 표시됩니다. 이 URL을 브라우저 창에 복사하여 붙여넣어 Devito와 함께 제공되는 튜토리얼을 살펴보거나 자신만의 노트북을 만들 수 있는 Jupyter 노트북 세션을 시작하세요.
자세한 설치 지침 및 기타 옵션은 여기를 참조하세요. 설치 중에 문제가 발생하면 과거에 본 설치 문제를 참조하세요.
Devito 사용 방법을 배우려면 많은 예제와 튜토리얼이 포함된 여기에서 시작하는 것이 좋습니다.
또한 웹사이트에서는 인용을 위한 문서 및 지침을 포함한 기타 정보에 대한 액세스도 제공합니다.
일부 FAQ는 여기에서 논의됩니다.
다음 중 하나에 관심이 있으시면
그렇다면 이 README를 살펴보세요.
Devito를 사용하고 계시다면, 여러분의 의견을 듣고 싶습니다. 문제에 직면했거나 직접 사용해 보고 싶다면 대화에 참여하세요.
튜토리얼 jupyter 노트북은 공개 바인더 jupyterhub에서 대화형으로 사용할 수 있습니다.