Nvidia Geforce RTX4090 와 RTX4080 성능비교 텐서플로우

Photo of author

By mimoofdm@naver.com

nvidia geforce rtx4090과 rtx4080이 출시되었습니다. 작년까지는 이더리움 채굴을 위해서 사용되어서 가격대가 높았었는데 이더리움 채굴이 모두 끝난 현재 시점에는 4090과 4080 가격이 안정을 찾아가고 있습니다. Ubuntu 20에서 RTX 4090에 TensorFlow를 설치하고 NVIDIA CUDA 드라이버를 설치하는 명령어와 예제 코드를 살펴보도록 하겠습니다.

Ubuntu 20의 RTX 4090에 CUDA 드라이버 설치

Ubuntu에서 CUDA 저장소 패키지를 다운로드 받으시기 바랍니다. 아래 명령어들은 nvidia drivers 을 git 서버에서 다운 받아서 설치하는 명령어들입니다.
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
GPG 키를 추가하십시오:
sudo apt-key adv –fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub
저장소를 추가하십시오:
sudo add-apt-repository “deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /”
패키지 목록을 업데이트하고 CUDA 드라이버를 설치하십시오:
sudo apt-get update
sudo apt-get -y install cuda
TensorFlow GPU 버전을 설치하십시오:
pip install tensorflow-gpu

각 명령어의 의미는 다음과 같습니다:

wget은 웹에서 파일을 다운로드하는 데 사용되는 명령어입니다. apt-key adv는 APT 저장소의 인증 키를 관리하는 데 사용됩니다.

rtx4090
nvidia geforce 성능 비교

add-apt-repository는 새로운 APT 저장소를 시스템에 추가하는 데 사용됩니다.
apt-get update는 패키지 목록을 업데이트하는 데 사용됩니다.
apt-get install은 패키지를 설치하는 데 사용됩니다.
pip install은 Python 패키지 관리자인 pip로 Python 패키지를 설치하는 데 사용됩니다.

nvidia rtx4080
nvidia rtx4080과 4090 성능 비교

Nvidia Geforce RTX4090과 RTX4080의 성능 차이

4090은 4080보다 약 30% 더 빠른 성능을 보여줍니다 1. 이 차이는 DLSS 3 성능을 고려하지 않은 것입니다. 따라서 게임, 시나리오 또는 설정에 따라 4090이 4080보다 더 빠를 수 있습니다 GeForce RTX 4090의 경우 4080보다 약 33% 더 비싼 가격에 대해 약 30% 빠른 성능을 제공합니다.

Nvidia Geforce RTX 4090 가격과 RTX4080 가격의 비교


RTX 4090의 가격은 지역에 따라 다릅니다. 미국에서는 기본 가격이 $1,599이고 영국에서는 £1,679입니다 RTX 4080의 가격은 지역별로 다르며 미국에서는 기본 가격이 $1,199이고 영국에서는 £1,269입니다

Nvidia RTX4090와 다른 그래픽카드와 성능 비교

4090은 cuda의 성능이 매우 뛰어납니다. DLSS 없이도 RTX 4090은 거의 4K 울트라 레이 트레이싱 성능을 60fps 이상으로 제공합니다. 모든 게임에서 40fps 이상으로 플레이 가능한 성능입니다. DLSS 2 품질 업스케일링은 평균적으로 100fps로 밀어 올리고 모든 DXR 테스트는 이제 60fps 이상입니다.

cuda란 무엇인가요?

CUDA는 Compute Unified Device Architecture의 약자로, 그래픽 처리 장치(GPU)에서 수행하는 병렬 처리 알고리즘을 C 프로그래밍 언어를 비롯한 산업 표준 언어를 사용하여 작성할 수 있도록 하는 GPGPU 기술입니다. CUDA는 엔비디아가 개발해오고 있습니다.

rtx4090
nvidia 성능
CUDA와 OpenCL의 차이점


CUDA와 OpenCL은 모두 GPU 프로그래밍을 위한 기술입니다. 하지만 두 기술의 차이점이 있습니다. OpenCL은 다양한 하드웨어 플랫폼에서 가속화할 수 있는 이식성이 뛰어난, 장치 및 벤더에 독립적인 프로그램을 제공합니다. 반면 CUDA는 엔비디아 GPU에서만 사용 가능합니다.

CUDA와 OpenCL 성능 비교

실험 결과에 따르면 CUDA가 OpenCL보다 성능이 더 좋습니다 (최대 7.34배의 속도 향상). 그러나 대부분의 경우 OpenCL은 수용 가능한 속도로 작동합니다. nvidia cuda 의 속도 향상이 2배 미만입니다. 사실상 cuda의 성능이 OpenCL보다 좋다고 할 수 있습니다.

Tensorflow 지원

Tensorflow로 딥러닝 다층 신경망을 학습하는데 널리 사용되고 있습니다. 안드로이드 핸드폰이나 아이폰14 같은 모바일 장치를 지원하기 위하여 tensorflow lite가 적용되었으며 inference성능이 빠르며 경량화 되어 있어서 저사양의 CPU에서도 많이 사용되고 있습니다. Nvidia에서는 기본적으로 텐서플로우를 지원하기 위한 드라이버들을 제공하고 있습니다.

CUDA를 사용한 예제 소스 코드

다음은 CUDA를 사용하여 벡터 덧셈을 수행하는 간단한 예제 코드입니다.

include
global void vectorAdd(int *a, int *b, int *c, int n) {
int i = threadIdx.x;
if (i < n) c[i] = a[i] + b[i];
}

int main() {
int n = 10;
int a[n], b[n], c[n];
int *dev_a, *dev_b, *dev_c;

cudaMalloc((void**)&dev_a, n*sizeof(int));
cudaMalloc((void**)&dev_b, n*sizeof(int));
cudaMalloc((void**)&dev_c, n*sizeof(int));

for (int i = 0; i < n; i++) {
    a[i] = -i;
    b[i] = i*i;
}

cudaMemcpy(dev_a,a,n*sizeof(int),cudaMemcpyHostToDevice);
cudaMemcpy(dev_b,b,n*sizeof(int),cudaMemcpyHostToDevice);

vectorAdd<<<1,n>>>(dev_a, dev_b, dev_c,n);

cudaMemcpy(c, dev_c,n*sizeof(int),cudaMemcpyDeviceToHost);

for (int i=0; i<n; i++) {
    printf("%d + %d = %d\n", a[i], b[i], c[i]);
}

cudaFree(dev_a);
cudaFree(dev_b);
cudaFree(dev_c);

return 0;
}
이 소스 코드는 GPU 가속을 위해 설계된 병렬 컴퓨팅 플랫폼 및 프로그래밍 모델인 CUDA를 사용하여 벡터 추가를 수행합니다.

vectorAdd 함수는 GPU에서 병렬로 실행될 커널로 정의됩니다. 두 개의 입력 배열(a 및 b), 하나의 출력 배열(c) 및 배열의 ​​크기(n)를 받습니다.
vectorAdd 커널에서 각 스레드에는 threadIdx.x를 기반으로 인덱스 i가 할당됩니다. i가 n보다 작으면 a와 b의 해당 요소를 함께 더하여 c[i]에 저장합니다.
main 함수에서 3개의 배열(a, b 및 c)이 선언되고 값으로 초기화됩니다.
메모리는 입력 및 출력 배열(dev_a, dev_b 및 dev_c)에 cudaMalloc을 사용하여 GPU에 할당됩니다.

입력 배열(a 및 b)은 cudaMemcpyHostToDevice 플래그와 함께 cudaMemcpy를 사용하여 호스트(CPU)에서 장치(GPU) 메모리로 복사됩니다.
vectorAdd 커널은 <<<1,n>>>을 사용하여 n 스레드의 한 블록으로 실행됩니다.


출력 배열(c)은 cudaMemcpyDeviceToHost 플래그와 함께 cudaMemcpy를 사용하여 장치에서 호스트 메모리로 복사됩니다.
결과 배열(c)은 printf를 사용하여 콘솔에 출력됩니다.
GPU의 메모리는 cudaFree를 사용하여 해제됩니다.
프로그램이 성공적으로 완료되었음을 나타내는 0을 반환합니다.

nvidia rtx4090 cuda
nvidia cuda

Leave a Comment