본문 바로가기

반응형

GPGPU

(7)
CUDA 설치 및 설치 실패 대처 목적 1) CUDA 설치 및 CUDA 설치 확인 2) CUDA 설치 오류 대처 1) CUDA 설치 및 CUDA 설치 확인 CUDA 11.0버전을 설치했습니다. Visual Studio에서 프로젝트에 CUDA 툴킷 종속 설정 2) CUDA 설치 오류 대처 CUDA설치 후 발생하는 오류 2가지에 대한 해결방안입니다. 2-1) CUDA 설치 실패 발생 CUDA 설치 시 특정 구성요소가 설치가 실패하는 경우가 발생했습니다. 정확한 이유는 모르겠지만 PC 여러대에서 발생했습니다. 설치 항목 중 "Nsight VSE" 항목을 제외하고 설치했습니다. 아래 그램과 같이 "Nsight VSE"를 제외 후 설치하시면 됩니다. 아래 항목을 제외하고 설치해도 Visual Studio에서 CUDA를 사용했습니다. (이유를 아시..
CUDA Host<->Device cudaHostGetDevicePointer 대용량 데이터를 처리하다보니 GPU 메모리 제약으로 처리할 수 없어서 고민하던 중 Host메모리를 Device에서 사용 할 수 있는 방법을 찾았습니다. [cudaHostAlloc, cudaHostGetDevicePointer] 개발 환경은 Visual Studio 2013, CUDA ToolK 11.0, GPU 1050, Compute capability 6.1버전에서 테스트를 완료했습니다. 파일 2.5GByte를 Host Memory에 할당하고 CUDA Kernel에서 처리하였습니다. 알고가면 좋은 내용을 간단히 정리하겠습니다. 1. Host에 할당한 메모리는 Read/Write가 모두 가능 2. Host Memory를 할당 시 공유 GPU 메모리 사용량 증가(Host 메모리의 절반 사용가능) 3. D..
Visual Studio GPU 정보 보기 안녕하세요. Visul Studio에서 GPU 정보를 보는 포스팅입니다. 매우 간단합니다. CUDA 설치과정에서 Visual Studio에 설치되는 NSIGHT를 통해 GPU 사양확인이 가능합니다. 아래 해당 코드는 CUDA Device정보를 얻어서 다음과 같이 표현할수 있습니다. 여기서 NSIGHT에서 확인한 CUDA Device가 모두 있는거 같네요^^ void CGPUSolid::GpuInfoPrint() { cudaDeviceProp prop; int count = 0; cudaGetDeviceCount( &count ); for (int i=0; i< count; i++) { cudaGetDeviceProperties( &prop, i ); printf( " --- General Informat..
CUDA 처리 구조 안녕하세요! 오늘은 CUDA의 처리 구조에 대해 포스팅을 하겠습니다. CUDA 처리 구조 GPU는 대량의 스레드를 이용하기 때문에 병렬처리를 하기 위한 프로세스의 로드 밸런싱(작업 분할)에 따라 큰 성능 차이가 나타납니다. CUDA에서는 처리영역을 분할하기위해 그리드, 블록, 스레드을 인덱싱하여 처리영역을 구분합니다. 다음 그림과 같이 쿠다는 가장 작은 처리단위인 스레드, 스레드의 집합을 블록, 블록의 집합을 그리드로 구성되며 SIMT(Single Instruction Multiple Thread)구조로 명령이 수행됩니다. 이는 영어 그대로 한 번의 명령으로 대량의 스레드를 처리하기 위한 구조입니다. 병렬처리 프로세스인 SIMD방식과 유사합니다. CPU 병렬처리와 유사한 점으로 결국은 스레드에서 처리된다..
CUDA란? 안녕하세요. 오늘 포스팅은 NVIDIA에서 제공되는 CUDA에 대해 알아보겠습니다. 기본적으로 GPU를 이용해 프로세스를 수행하기 위해 필요한 데이터를 GPU공간에 할당해주어야 합니다. 많은 분들이 개발하시면서 CUDA를 도입하시는 이유는 CPU에서도 수행 가능하지만 성능 개선을 위해서 도입하실 것으로 생각됩니다. 즉, Host(CPU)데이터를 Device(GPU)로 데이터를 옮긴 후 처리가 가능합니다. 쿠다를 이용하기 위해서는 기본적인 처리 흐름은 그림과 같습니다. 1. 메인 메모리의 데이터를 GPU 메모리로 복사합니다. -> GPU 메모리 복사를 위해서는 GPU메모리 할당 + 메모리 복사가 수행되어야 합니다. 2. CPU에서 GPU를 사용할 수 있도록 프로세서를 실행시킵니다. -> CUDA의 커널을 ..
GPU 하드웨어 특징 //안녕하세요 이제 날씨가 많이 쌀쌀하네요 모두 건강 조심하세요... //글을 쓰면서 뭔가 포스팅의 디자인보다는 보기 좋은 포스팅을 하고 싶은데 그게 잘 안되네요... //GPU의 하드웨어 특징에 내용을 많이 쓰려했는데 CUDA와 관련된거 같아서 내용을 약간 줄였습니다. //포스팅 시작하겠습니다. GPU를 이용한 병렬처리 구현 시 고려해야할 사항 중 하드웨어의 특징에 대해 포스팅을 하겠습니다. 제가 생각하기에는 가장 기본으로 생각해야되는 내용으로 GPU하드에어의 특징으로 CPU와의 차이점을 확인하고 해당 프로세스가 CPU로 구현할 것인지 GPU로 구현할 것인지를 판단하는것이 좋다고 생각합니다. (CPU와 GPU의 용도차이가 있으니까요!) 아래 사진은 많이들 보셨을 텐데 아래 사진에대해 분석해본다면 표와 ..
GPGPU란? GPGPU에 대해 처음 접해보는 분들에겐 위의 설명 정확하지만 너무 어려울 수 있을거 같네요. 다들 기본 프로그래밍 언어에 대한 지식이 있다는 전제로 "CPU 대신 GPU로 데이터를 병렬처리 할 수 있다." 정도 일거 같네요. 위키 백과에서는 다음과 같이 설명이 나와있습니다. "GPGPU(General-Purpose computing on Graphics Processing Units, GPU 상의 범용 계산)는 일반적으로 컴퓨터 그래픽스를 위한 계산만 맡았던 그래픽 처리 장치(GPU)를, 전통적으로 중앙 처리 장치(CPU)가 맡았던 응용 프로그램들의 계산에 사용하는 기술이다. 이를 가능하게 한 것은 프로그램 가능한 층과 고정도 연산을 그래픽 파이프라인에 연결하는 것으로, 이를 통하여 소프트웨어 개발자들..

반응형