mratsim/Arraymancer

A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends

What it solves

Arraymancer는 Nim 언어를 위한 빠르고 사용하기 편리한 n차원 배열(텐서) 라이브러리입니다. 과학 계산, 머신러닝, 딥러닝에 필요한 수학적 기반을 제공하여, Python의 NumPy와 PyTorch가 제공하는 것과 유사한 고성능 수치 계산 생태계가 Nim에 부족한 문제를 메워줍니다.

How it works

이 라이브러리는 CPU, CUDA, OpenCL 백엔드를 지원하는 텐서 시스템을 구현합니다. BLAS와 LAPACK 라이브러리를 활용해 선형대수 연산을 최적화합니다. 라이브러리에는 신경망을 정의하기 위한 도메인 특화 언어(DSL)가 포함되어 있어 Linear, Conv2D, GRULayer와 같은 레이어와 포워드 패스를 정의할 수 있습니다. 또한 계산 그래프를 관리하고 역전파를 수행하는 autograd 컨텍스트를 제공합니다.

Who it’s for

Nim을 사용해 수치 계산을 수행하거나 딥러닝 모델을 구축하려는 연구자와 개발자를 위해 설계되었으며, 빠른 컴파일 시간과 Python 기반 스택에 비해 적은 의존성으로 프로젝트 배포가 용이합니다.

Highlights

  • Multi-Backend Support: CPU, CUDA, OpenCL을 이용한 텐서 연산을 지원합니다.
  • Broadcasting: +.와 같은 특정 연산자를 사용해 명시적인 브로드캐스팅을 지원합니다.
  • Deep Learning Tools: 완전 연결, 컨볼루션, 순환 신경망(RNN) 레이어 등 내장 레이어를 포함합니다.
  • Flexible Slicing: 범위와 단계(step)를 지원하는 효율적인 슬라이싱.
  • Scientific Computing: PCA, K-means, 고유값/고유벡터 분해 및 최소 제곱 솔버를 제공합니다.