Sionna 버전이 1.2.1에서 2.0.1로 새롭게 업데이트되었다.
이에 따라 새롭게 wsl 환경을 구성하고,
다른 연구실 사람들이 원격으로 내 Local PC의 GPU 쓸 수 있도록 포트를 뚫어놓을 것.
설치 방법

기본적으로 Sionna 패키지를 사용하기 위해 Python 버전 3.11+와 PyTorch 2.9+가 필요하다. (기존 Tensorflow였는데 변경됨)
우선 Ubuntu 24.04에는 기본적으로 Python 3.12가 깔려있다.
이 부분은 딱히 건드릴 필요가 없음.

- NVIDIA 드라이버 535 이상이 필요.

시스템 패키지 설치
sudo apt update
sudo apt install -y \
python3-pip \
python3-dev \
build-essential \
git \
cmake \
ninja-build \
llvm \
libgl1 \
libxrender1 \
libxrandr2 \
libxinerama1 \
libxcursor1 \
libxi6
Pytorch, mitsuba, sionna 설치
https://pytorch.kr/get-started/compatibility/
파이토치 한국 사용자 모임 (PyTorch Korea User Group)
파이토치 한국 사용자 모임에 오신 것을 환영합니다. 딥러닝 프레임워크인 파이토치(PyTorch)를 사용하는 한국어 사용자들을 위해 문서를 번역하고 정보를 공유하고 있습니다.
pytorch.kr

현재 Python 버전 3.12, CUDA 버전 13.1까지 지원되는 상태이므로,
PyTorch 2.12를 --break-system-packages로 우분투 Python 시스템이 설치하였다.
python3 -m pip install torch torchvision --break-system-packages
python3 -m pip install mitsuba --break-system-packages
python3 -m pip install sionna --break-system-packages
python - << 'EOF'
import torch
print("torch:", torch.__version__)
print("CUDA available:", torch.cuda.is_available())
print("torch CUDA:", torch.version.cuda)
if torch.cuda.is_available():
print("GPU:", torch.cuda.get_device_name(0))
EOF
torch 설치 확인 결과GPU가 제대로 인식됨을 확인할 수 있다.

python3 - << 'EOF'
import mitsuba as mi
print(mi.variants())
EOF
위 명령어는 mitsuba가 제대로 설치되었는지 확인하는 명령어로, 출력에 이런 식으로 cuda_ad_*가 보이면 성공이다. (cuda_ad_rgb, cuda_ad_mono, cuda_ad_spectral)

마지막으로, sionna도 설치한다.

이후 Jupyter Notebook을 설치하고, Jupyter Notebook에서 개발을 수행한다.
~/.local/bin/jupyter-lab --no-browser --ip=0.0.0.0 --port=8889

이제 Python 3 ipykernel로 들어가 Sionna 코드를 실행할 준비가 되었다.
외부 원격 접속 허용 방법
WSL2에서 Jupyter Lab을 외부 PC에서도 접속 가능하게 열 때, 단순히 --ip=0.0.0.0만으로는 안될 수 있다.
기본 추천 환경은 WSL2가 Windows와 같은 163.180.xxx.xxx 대역 IP를 공유하는 mirrored networking 구조였고,
Jupyter는 WSL 내부에서 정상적으로 0.0.0.0:8889에 바인딩되어 있었다.
~/.local/bin/jupyter-lab --no-browser --ip=0.0.0.0 --port=8889
ss -tlnp | grep 8889
curl -I http://163.180.xxx.xx:8889/lab
이때 WSL 내부에서는 응답이 왔지만 외부 PC에서는 접속이 안 될 수 있다.
그럴 땐 Windows Defender 방화벽에서 8889 포트를 열어본다.
New-NetFirewallRule -DisplayName "Allow Jupyter 8889" `
-Direction Inbound -Action Allow -Protocol TCP -LocalPort 8889
그래도 해결되지 않는다면 WSL용 Hyper-V 방화벽을 확인해본다.
WSL의 VMCreatorId를 확인한 뒤 inbound를 허용한다.
Get-NetFirewallHyperVVMCreator
Set-NetFirewallHyperVVMSetting `
-Name "{40E0AC32-46A5-438A-A0B2-XXXXXXXXXXXX}" `
-DefaultInboundAction Allow


이렇게 하면 연구실 다른 PC에서 다음 주소로 접속이 가능해진다.
http://163.180.xxx.xxx:8889/lab?token=...
만약 OptiX 관련 에러가 난다면
만약 Sionna RT에서 load_scene()을 호출할 때 다음 오류가 발생할 수 있다.
RuntimeError: [parser.cpp:1716] At string (line 1, col 2):
failed to instantiate scene plugin of type "scene": Could not initialize OptiX!
`nvidia-smi`는 정상 동작하고, CUDA도 인식되며, TensorFlow/PyTorch GPU도 문제없이 동작하는데
오직 OptiX만 초기화에 실패하는 경우이다.
WSL2에서 GPU 기능은 Windows 드라이버를 통해 중계되는 구조다:
Windows NVIDIA Driver
└─ C:\Windows\System32\lxss\lib\ (WSL2 전용 GPU 라이브러리)
├── libcuda.so.1 (172KB, loader → Windows CUDA로 연결 ✅)
├── libnvidia-gpucomp.so (70MB, 실제 라이브러리)
└── libnvoptix.so.1 (10KB, stub ❌)
WSL2에서 이 폴더는 `/usr/lib/wsl/lib/`로 마운트된다.
문제의 핵심: `libnvoptix.so.1`이 10KB짜리 빈 loader stub으로만 존재한다.
이 stub은 `dxcore`를 통해 Windows 측의 실제 OptiX 구현(`nvoptix.dll`)을 불러와야 하지만,
현재 드라이버에서는 이 중계가 동작하지 않는다.
해결방법
https://mitsuba.readthedocs.io/en/stable/src/optix_setup.html
위 Mitsuba의 공식 문서에 해결 방법이 나와있다.
1. 현재 Windows 드라이버 버전 확인
$ nvidia-smi
# Driver Version: 581.29
2. 유사한 버전의 Linux 드라이버 다운로드
[NVIDIA Driver Downloads] https://www.nvidia.com/Download/Find.aspx
- Product: GeForce RTX 5090
- OS: Linux 64-bit
- 버전: Windows 드라이버와 가까운 버전 선택 (예: 580.126.18)
3. WSL에서 드라이버 추출 (설치 아님!)
bash NVIDIA-Linux-x86_64-580.126.18.run -x --target ~/driver
4. 필요한 파일 준비
```bash
mkdir ~/driver-dist
cp ~/driver/libnvoptix.so.580.126.18 ~/driver-dist/libnvoptix.so.1
cp ~/driver/libnvidia-ptxjitcompiler.so.580.126.18 ~/driver-dist/libnvidia-ptxjitcompiler.so.1
cp ~/driver/libnvidia-rtcore.so.580.126.18 ~/driver-dist/
cp ~/driver/libnvidia-gpucomp.so.580.126.18 ~/driver-dist/
cp ~/driver/nvoptix.bin ~/driver-dist/
```
5. Windows 바탕화면으로 복사
```bash
cp -r ~/driver-dist /mnt/c/Users/[사용자이름]/Desktop/driver-dist
```
6. WSL 종료
Windows CMD/PowerShell에서:
wsl --shutdown
7. 관리자 CMD에서 파일 복사
```cmd
copy "C:\Users\[사용자이름]\Desktop\driver-dist\*" "C:\Windows\System32\lxss\lib\"
```
`libnvoptix.so.1`이 "액세스가 거부되었습니다"로 실패할 경우:
```cmd
takeown /f "C:\Windows\System32\lxss\lib\libnvoptix.so.1"
icacls "C:\Windows\System32\lxss\lib\libnvoptix.so.1" /grant Administrators:F
copy /Y "C:\Users\[사용자이름]\Desktop\driver-dist\libnvoptix.so.1" "C:\Windows\System32\lxss\lib\libnvoptix.so.1"
```
C:\Windows\System32\lxss\lib\는 WSL2 전용 경로이다.
Windows 자체의 게임, 3D 앱, CUDA 작업 등은 이 폴더를 사용하지 않고, Windows 드라이버 자체의 경로(C:\Windows\System32\nvoptix.dll 등)를 사용하기 때문에, 위 작업은 Windows 환경에서 GPU 사용하는 것들 — 게임, Blender, CUDA 연산, AI 학습 등 — 에 전혀 영향을 미치지 않는다.
이렇게 하면 NVIDIA GPU를 통해 Scene을 제대로 load할 수 있게 된다.
# Create new camera with different configuration
my_cam = Camera(position=[-250,250,150], look_at=[-15,30,28])
# Render scene with new camera*
scene.render(camera=my_cam, resolution=[650, 500], num_samples=512);

'Tool 활용법 > Sionna 활용법' 카테고리의 다른 글
| Sionna RAN 플랫폼 제어 파라미터 총정리 (RT, PHY, SYS, RK) (0) | 2026.06.04 |
|---|---|
| Blender 기반 도시 모델에서 물리 채널 생성하기 (CIR, CFR, Radio Map) (0) | 2026.02.11 |
| Sionna RT (Ray Tracing) 기반 6G 채널 모델 분석하기 (Sionna Tutorial) (0) | 2026.02.11 |
| Sionna RT 설치하고 Blender 도시 Scene 연동하기 (8) | 2026.02.11 |
| Blender의 도시 Scene에 Radio Material 할당하기 (0) | 2026.02.10 |