Mojo는 Python 문법을 상위 집합으로 하는 시스템 프로그래밍 언어로, AI/ML 워크로드를 위한 SIMD, 병렬화, 메모리 레이아웃 제어를 제공한다. Modular AI가 개발했다.
Python 상위 집합
mojo
# Python 코드 그대로 동작
def hello(name: str) -> str:
return f"Hello, {name}!"
# Mojo 확장: 타입 선언 + struct
struct Point:
var x: Float64
var y: Float64
fn __init__(inout self, x: Float64, y: Float64):
self.x = x
self.y = y
fn distance(self, other: Point) -> Float64:
let dx = self.x - other.x
let dy = self.y - other.y
return (dx*dx + dy*dy) ** 0.5
let p1 = Point(0.0, 0.0)
let p2 = Point(3.0, 4.0)
print(p1.distance(p2)) # 5.0
SIMD 및 벡터화
mojo
from sys.intrinsics import SIMD
from math import sqrt
fn vector_add[size: Int](
a: SIMD[DType.float32, size],
b: SIMD[DType.float32, size]
) -> SIMD[DType.float32, size]:
return a + b
# 병렬 처리 (Parallelize)
from algorithm import parallelize
fn parallel_sum(data: DynamicVector[Float32]) -> Float32:
var result: Float32 = 0
@parameter
fn process(i: Int):
result += data[i]
parallelize[process](len(data))
return result
Python vs Mojo 성능 비교
| 작업 | Python | Mojo | 배율 |
|---|
| 행렬 곱셈 | 기준 | ~35,000x | 35,000배 |
| 만델브로트 집합 | 기준 | ~68,000x | 68,000배 |
| 소수 계산 | 기준 | ~1,000x | 1,000배 |
관련 문서