WSL을 돌리는 환경에서 내장 그래픽보단 외장 그래픽을 사용하여 컴퓨터의 성능을 100퍼 끌어내고 싶을 것이다.
이를 위해서는 기존의 NVIDIA 그래픽 드라이버가 아닌 WSL용 NVIDIA 그래픽 드라이버를 사용해야한다.
WSL 또는 Linux용 Windows 하위 시스템은 사용자가 Windows 11 이상 OS 빌드에서 네이티브 Linux 애플리케이션, 컨테이너 및 명령줄 도구를 직접 실행할 수 있도록 하는 Windows 기능.
해당 포스트는 WSL2를 위한 내용임.
Linux 애플리케이션은 WSL 2에서 그대로 실행할 수 있음. WSL 2는 일반적으로 기본 Linux 커널과 완벽한 호환성을 제공하는 Linux WSL 커널이 포함된 VM으로, 인기 있는 Linux 배포판을 포함한 기본 Linux 애플리케이션을 지원.
더 빠른 파일 시스템 지원으로 성능도 더 좋음.
WSL 2는 Microsoft Windows 운영 체제와 긴밀하게 통합되어 Linux 애플리케이션을 다른 Windows 데스크톱 및 최신 스토어 앱과 함께 실행하고 상호 운용할 수도 있음
일반적으로 Linux와 Windows 환경에서 작업하는 개발자는 매우 복합적인 워크플로를 갖게 됨.
Linux와 Windows에 대해 다른 시스템을 사용하거나
듀얼 부팅, 즉 시스템의 동일하거나 다른 하드 디스크에 Linux와 Windows를 별도 파티션으로 설치하고 원하는 OS로 부팅할 수 있음.
두 경우 모두 개발자는 모든 작업을 중단한 다음 시스템을 전환하거나 재부팅해야 함.
또한 이는 역사적으로 두 가지 주요 생태계에서 원활하고 잘 통합된 도구와 소프트웨어 시스템의 개발을 제한함.
따라서 WSL을 사용함
WSL을 사용하면 사용자는 리소스 집약적인 기존 가상 머신이 필요 없이 두 환경 간에 원활하게 전환하고 생산성을 개선하고 도구를 사용하여 개발하고 워크플로를 통합할 수 있음.
더 중요한 것은 WSL 2를 통해 지금까지 Linux에서만 사용할 수 있었던 애플리케이션을 Windows에서 사용할 수 있다는 것.
이제 WSL 2의 GPU 지원으로 이러한 애플리케이션은 GPU 가속 컴퓨팅의 이점을 누릴 수 있으며 WSL 2에서 개발할 수 있는 애플리케이션의 도메인이 확장되었다고 생각.
WSL 2에 대한 NVIDIA CUDA 지원을 통해 개발자는 WSL을 통해 Windows에서 데이터 과학, 머신 러닝 및 추론을 위해 NVIDIA GPU 가속 컴퓨팅 기술을 활용할 수 있음.
GPU 가속은 또한 CPU 개입을 줄여 GPU에서 더 많은 병렬 작업을 파이프라인으로 처리할 수 있으므로 네이티브에 가까운 WSL과 같은 환경 내에서 애플리케이션을 실행하는 성능 오버헤드를 줄이는 데에도 도움이 될것.
WSL 2에 대한 NVIDIA 드라이버 지원에는 CUDA뿐만 아니라 DirectX 및 Direct ML 지원도 지원함.
해당 내용 참조링크(gpu- tensorflow-wsl 링크)
WSL 2는 GPU 가속을 동일한 시스템의 Windows 및 Linux 애플리케이션 간에 원활하게 공유할 수 있는 핵심 지원 도구.
이는 유연성과 다양성을 제공하는 동시에 GPU 가속 컴퓨팅을 더 쉽게 접근할 수 있도록 하여 개방하는 데 도움이 될 것.

https://www.nvidia.com/Download/index.asp
해당 링크에서 NVIDIA GeForce Game Ready 또는 NVIDIA RTX Quadro Windows 11 디스플레이 드라이버를 설치
Windows 터미널/명령 프롬프트/PowerShell을 실행하고 WSL을 설치
wsl.exe --install
최신 WSL 커널이 있는지 확인하기 위해 아래 명령어 입력.
wsl.exe --update
Windows 터미널에서 WSL을 입력
C:\> wsl.exe
기본 배포판은 Ubuntu
시스템에 Windows NVIDIA GPU 드라이버가 설치되면 CUDA를 WSL 2에서 사용할 수 있다.
다만, Windows 호스트에 설치된 CUDA 드라이버는 WSL 2 내부로 스텁되므로
libcuda.so사용자 는 WSL 2 내에 NVIDIA GPU Linux 드라이버를 설치해서는 안됨 . 기본 CUDA 툴킷에는 드라이버가 패키지로 제공되므로 매우 주의해야 하며 기본 설치로 WSL 2 NVIDIA 드라이버를 덮어쓸 수 있음.
위 덮어쓰기를 방지하기 위해서는 CUDA 툴킷 다운로드 페이지에서 제공하는 별도의 WSL2용 CUDA 툴킷(Ubuntu)를 사용하는 것이 좋음. 이 툴킷은 WSL2환경에 매핑된 드라이버를 덮어쓰기 않음.
아래 명령어는 우분투 22.04에서 오류가 발생할 수 있음.
sudo apt install nvidia-utils # 최신버전에 맞춰서 설치하셈

위 사진과 같이 utils-565처럼 버전 맞춰서 설치해줌.
이후, 설치된 GPU 드라이버 확인하는 명령어는 다음과 같다.
nvidia-smi

다음으로, 아래 명령어로 NVIDIA CUDA 컴파일러의 버전 즉, 시스템에 설치된 CUDA Toolkit의 버전을 확인.

툴킷설치 안하면 위 사진과 같이 에러가 나기에 설치해주고 nvcc진행.
sudo apt install nvidia-cuda-toolkit
nvcc --version


위 사진과 같이 버전 나옴.