Jumping Bytes and Hopping Bits
the church of tech
Menu

matlab gpu 예제 August 2, 2019

특정 유형의 어레이는 MATLAB 작업 공간에서 전송할 필요 없이 GPU에서 직접 구성할 수 있습니다. 예를 들어, GPU에 직접 제로의 매트릭스를 만들려면, 우리는 GPU 지원 기능을 사용하여 장치에서 B를 조작을 계속할 수 있습니다 사용합니다. 예를 들어 결과를 시각화하기 위해 플롯 명령은 GPUArrays에서 자동으로 작동합니다. 예를 들어 음수 요소가 있을 수 있는 gpuArray를 만드는 경우 G = gpuArray(복합체(p)를 사용하여 sqrt(G)를 성공적으로 실행할 수 있습니다. 위의 예제를 컨텍스트에 넣습니다. 우리의 계산 목표는 예를 들어, 다음 코드는 CPU에 의사 난수의 벡터의 이산 푸리에 변환을 찾기 위해 FFT 알고리즘을 사용하여 2 차 웨이브 방정식을 해결하는 것입니다 : 이 예제는 병렬 컴퓨팅 도구 상자를 사용하여™ GPU에서 2차원 고속 푸리에 변환(FFT)을 제공합니다. 웨이브 방정식 예제를 계속하기 전에 MATLAB이 GPU와 어떻게 작동하는지 빠르게 살펴보겠습니다. 이 예제에서는 GPU에서 선형 시스템의 해결을 벤치마킹하는 방법을 살펴봅니다. A*x = b에서 x에 대해 해결할 MATLAB® 코드는 매우 간단합니다.

가장 자주, 우리는 또한 mldivide 또는 백슬래시 연산자 ()로 알려진 행렬 왼쪽 분할을 사용하여 x (즉, x = Ab)를 계산합니다. 이 예제에서는 GPU 지원 MATLAB 기능을 gpuArrays로 작동하도록 사용하는 방법을 보여 주며 있습니다. gpuDevice 기능을 사용 하 여 GPU의 속성을 확인할 수 있습니다. 이 간단한 예제에서는 단일 FFT 함수를 실행하여 절약된 시간이 MATLAB 작업 영역에서 장치 메모리로 벡터를 전송하는 데 소요되는 시간보다 적은 경우가 많습니다. 이는 일반적으로 사실이지만 하드웨어 및 배열 크기에 따라 다릅니다. 데이터 전송 오버헤드가 너무 커서 응용 프로그램의 전반적인 성능이 저하될 수 있으며, 특히 CPU와 GPU 간에 데이터를 반복적으로 교환하여 상대적으로 적은 계산 집약적 작업을 실행하는 경우 더욱 성능이 저하될 수 있습니다. GPU에 있는 동안 데이터에 대해 여러 작업을 수행하는 것이 더 효율적이므로 필요한 경우에만 데이터를 CPU로 되돌려 보입니다2. 이 예제에서는 콘웨이의 “게임 오브 라이프”를 사용하여 GPU를 사용하여 스텐실 작업을 수행하는 방법을 보여 줍니다. 이 예제에서는 pagefun을 사용하여 3D 환경에서 개체에 많은 수의 독립적인 회전 및 변환을 적용하는 성능을 향상시키는 방법을 보여 주며 있습니다. 많은 수의 다른 병렬 알고리즘과 마찬가지로 선형 시스템을 병렬로 해결하는 성능은 행렬 크기에 따라 크게 달라집니다. 벤치마킹 Ab와 같은 다른 예제에서 볼 수 있듯이 다양한 행렬 크기에 대한 알고리즘의 성능을 비교합니다.

GPU가 있는 경우 MATLAB은 자동으로 GPU 계산에 사용합니다. gpuDevice 기능을 사용하여 GPU를 확인할 수 있습니다. 여러 GPU가 있는 경우 gpuDevice를 사용하여 그 중 하나를 선택하거나 병렬 풀에서 여러 GPU를 사용할 수 있습니다. 예를 들어 GPU 식별 및 선택을 참조하고 병렬 풀에서 여러 GPU를 사용합니다. GPU가 지원되는지 확인하려면 릴리스별 GPU 지원을 참조하세요.

Categories: Uncategorized