트레이딩에서 OpenCL - 페이지 4

 

AMD Developer Central: OpenCL 기술 개요. 에피소드 2: OpenCL™이란 무엇입니까? (계속되는)



AMD Developer Central: OpenCL 기술 개요. 에피소드 2: OpenCL™이란 무엇입니까? (계속되는)

이 비디오에서 Justin Hensley는 OpenCL을 사용하여 응용 프로그램을 가속화할 때 이해해야 하는 중요한 OpenCL의 플랫폼 및 메모리 모델에 대해 설명합니다. 그는 호스트가 하나 이상의 OpenCL 장치(예: GPU 또는 다중 코어 프로세서)에 연결되어 단일 명령 다중 데이터 모델에서 코드를 실행하는 컴퓨팅 장치가 있다고 설명합니다. 작업 항목에는 개인 메모리가 있고 작업 그룹에는 공유 로컬 메모리가 있고 각 장치에는 전역 및 상수 메모리가 있으며 개발자는 최대 성능을 얻기 위해 메모리 동기화 및 데이터를 명시적으로 관리해야 합니다. 또한 Hensley는 장치, 컨텍스트, 대기열, 버퍼, 이미지, 프로그램, 커널 및 이벤트와 같은 OpenCL 개체에 대해 논의하며, 이러한 개체는 장치에 작업을 제출하고 데이터를 동기화 및 프로파일링하는 데 사용됩니다. 마지막으로 그는 프로그램 및 커널 객체 생성, 메모리 객체 생성, 적절한 커널 실행 순서를 보장하기 위한 이벤트가 포함된 명령 대기열 생성의 세 가지 쉬운 단계로 OpenCL 프로그램을 실행하는 방법을 설명합니다.

  • 00:00:00 이 섹션에서는 Justin Hensley가 OpenCL을 사용하여 응용 프로그램을 가속화할 때 이해해야 하는 중요한 OpenCL의 플랫폼 및 메모리 모델에 대해 설명합니다. 호스트는 하나 이상의 OpenCL 장치(GPU, DSP 또는 멀티 코어 프로세서)에 연결되며 단일 명령 다중 데이터 모델에서 코드를 실행하는 계산 장치가 있습니다. 메모리 측면에서 호스트 프로세서에는 CPU에서만 액세스할 수 있는 메모리가 있는 반면 컴퓨팅 장치에는 글로벌 및 상수 메모리(동기화되지 않음)가 있고 각 작업 항목에는 액세스할 수 있는 자체 전용 메모리가 있습니다. 작업 그룹에는 공유 로컬 메모리가 있으며 개발자는 장치에서 최대 성능을 얻으려면 메모리 동기화 및 데이터를 명시적으로 관리해야 합니다. 마지막으로 Hensley는 장치, 컨텍스트, 대기열, 버퍼, 이미지, 프로그램, 커널 및 이벤트와 같은 OpenCL 개체에 대해 설명합니다. 이러한 개체는 장치에 작업을 제출하고 데이터를 동기화하고 프로파일링하는 데 사용됩니다.

  • 00:05:00 이 섹션에서 발표자는 세 가지 쉬운 단계로 OpenCL 프로그램을 실행하는 방법을 설명합니다. 먼저 소스 코드를 빌드하기 위한 프로그램 개체와 인수를 사용하여 다양한 장치에서 실행할 코드를 포함하는 커널 개체를 만듭니다. 둘째, 이미지 또는 버퍼와 같은 메모리 개체를 만듭니다. 셋째, 명령 대기열을 생성하고 이를 사용하여 다른 장치에 대한 작업을 대기열에 넣지만 작업 순서는 순서가 맞거나 맞지 않을 수 있습니다. 따라서 이벤트는 종속성이 존재할 때 커널이 필요한 순서대로 실행되도록 하는 데 사용됩니다.
Episode 2: What is OpenCL™? (continued)
Episode 2: What is OpenCL™? (continued)
  • 2013.05.27
  • www.youtube.com
In this video, you continue to learn about OpenCL™. We describe the details about the OpenCL™ platform and memory models. Topics covered include compute devi...
 

AMD Developer Central: OpenCL 기술 개요. 에피소드 3: 리소스 설정



AMD Developer Central: OpenCL 기술 개요. 에피소드 3: 리소스 설정

OpenCL 튜토리얼 시리즈의 에피소드 3에서 연사는 메모리 개체, 컨텍스트, 장치 및 명령 대기열과 같은 주제를 다루면서 OpenCL의 리소스 설정 및 관리에 대해 자세히 설명합니다. 읽기 및 쓰기 이미지 호출과 지원되는 형식에 중점을 두고 이미지에 대한 액세스 및 메모리 할당 프로세스에 대해서도 설명합니다. OpenCL 이벤트 관리 시스템을 사용하여 데이터 전송 완료를 보장하는 방법에 대한 설명과 함께 동기식 및 비동기식 메모리 작업의 특성을 조사합니다. 마지막으로 사용자는 CL 장치 정보 가져오기 호출로 장치 정보를 쿼리하여 알고리즘에 가장 적합한 장치를 선택하는 것이 좋습니다.

  • 00:00:00 이 섹션에서는 AMD의 Justin Hensley가 특히 메모리 개체와 컨텍스트 및 장치 설정에 중점을 두고 OpenCL의 리소스 할당에 대해 설명합니다. 그는 사용 가능한 장치를 찾기 위해 시스템을 쿼리하고, 공유 컨텍스트를 만들고, 장치와 통신하기 위한 명령 대기열을 설정하는 방법을 설명합니다. Hensley는 또한 CPU의 여러 코어가 하나의 OpenCL 장치로 간주되며 다른 컨텍스트의 장치는 데이터를 공유할 수 없다고 지적합니다. 알고리즘에 가장 적합한 장치를 선택하기 위해 사용자는 장치 정보에 대한 OpenCL 런타임을 CL get device info 호출로 쿼리하여 계산 단위 수, 클럭 주파수, 메모리 크기 및 지원되는 확장을 결정할 수 있습니다. 마지막으로 Hensley는 버퍼를 단순한 메모리 덩어리로, 이미지를 불투명한 2D 및 3D 형식 데이터 구조로 설명합니다.

  • 00:05:00 이 섹션에서 비디오는 OpenCL이 이미지를 처리하는 방법과 이미지 읽기 및 쓰기 호출을 통해 이미지에 액세스하는 방법이 필요한 방법을 설명합니다. 이미지에 대한 데이터의 형식 및 샘플러에 대해서도 설명하고 지원되는 형식을 결정하기 위해 CL에서 지원되는 이미지 형식 호출을 사용하는 방법에 대해서도 설명합니다. 이미지 버퍼를 할당하기 위해 형식과 크기를 설정하고 CL create buffer 호출을 사용하여 입력 및 출력 데이터에 대한 버퍼 개체를 만듭니다. 큐 읽기의 CL과 큐 오른쪽 버퍼의 CL은 각각 메모리 개체에서 데이터를 읽고 쓰는 데 사용되는 명령입니다. 메모리 영역을 매핑해야 하는 경우
    호스트 주소 공간에 대한 큐 맵 버퍼의 CL이 사용됩니다. 마지막으로 CLN 대기열 복사 버퍼는 두 메모리 개체 간에 메모리를 복사하는 데 사용됩니다.

  • 00:10:00 이 섹션에서 발표자는 데이터는 동일한 컨텍스트 내에서 할당된 메모리 개체와만 공유할 수 있으며 모든 작업은 동기식 또는 비동기식으로 수행될 수 있다고 설명합니다. 차단 호출이 CL 참으로 설정되면 동기 작업이 수행됩니다. 즉, 실제 메모리 작업이 발생할 때까지 데이터 전송이 차단됩니다. 이것은 메모리의 위치에 따라 다소 시간이 걸릴 수 있습니다. 또는 CL이 false인 경우 비동기 호출이 되며 메모리가 사용되기 전에 완전히 복사되도록 하려면 개방형 CL 이벤트 관리 시스템을 사용해야 합니다.
Episode 3: Resource Setup
Episode 3: Resource Setup
  • 2013.05.27
  • www.youtube.com
In this video, you learn about resource allocation, resource setup and how to setup the OpenCL™ runtime. Topics include choosing devices, creating contexts a...
 

AMD Developer Central: OpenCL 기술 개요. 에피소드 4: 커널 실행



AMD Developer Central: OpenCL 기술 개요. 에피소드 4: 커널 실행

이 섹션에서 Justin Hensley는 OpenCL에서 커널 실행에 대한 주제를 다루며 커널 객체가 특정 커널 함수를 포함하고 커널 한정자로 선언된다고 설명합니다. 그는 커널 인수를 설정하고 커널을 큐에 넣는 것을 포함하여 커널을 실행하는 단계를 세분화합니다. Hensley는 여러 커널을 관리하고 동기화 문제를 방지하기 위해 이벤트를 사용하는 것의 중요성을 강조하고 진행하기 전에 이벤트가 완료될 때까지 기다리는 이벤트에 대한 CL 대기를 사용할 것을 제안합니다. 이 비디오는 또한 실행하는 데 가장 많은 시간이 걸리는 커널을 최적화하기 위해 응용 프로그램을 프로파일링하는 방법에 대해 자세히 설명합니다.

  • 00:00:00 이 섹션에서는 Justin Hensley가 OpenCL에서 커널 실행에 대해 설명합니다. 그는 커널 개체가 프로그램의 특정 커널 기능을 캡슐화하고 커널 한정자로 선언된다고 설명합니다. 프로그램 개체는 프로그램 소스 또는 디스크에서 미리 컴파일된 바이너리와 장치 목록을 캡슐화합니다. 프로그램 개체가 빌드되면 사용자는 런타임에 가지고 있는 장치에 대해 컴파일할 수 있습니다. 커널이 구축된 후에는 커널 인수를 설정하고 커널을 대기열에 넣는 두 가지 기본 실행 단계로 커널을 실행해야 합니다. 인수를 설정하기 위해 사용자는 "CL Set Kernel Arg"라는 함수를 사용하며 첫 번째 인수는 실행해야 하는 커널입니다.

  • 00:05:00 이 섹션에서는 인수의 크기를 설정하고 실제로 커널을 실행하는 방법을 비디오에서 설명합니다. 사용된 예는 주어진 크기의 이미지 높이가 있는 이미지로 설정된 전역 크기로 이미지를 처리하는 것입니다. 비디오는 작업을 비동기적으로 큐에 대기시키는 OpenCL 런타임에 대해 설명하므로 이벤트를 사용하여 실행 상태를 추적하는 것은 프로그래머에게 달려 있습니다. 비디오는 또한 이벤트를 사용하여 명령을 동기화하고 대기열 간에 명시적으로 동기화하는 다양한 방법을 설명합니다. 비디오는 장치 1개와 대기열 1개, 장치 2개와 대기열 2개의 예를 제공하여 명시적 종속성 문제를 방지하기 위해 이벤트를 사용하는 것의 중요성을 설명합니다.

  • 00:10:00 이 섹션에서는 Justin Hensley가 OpenCL을 사용할 때 커널 및 이벤트를 관리하는 방법에 대해 설명합니다. 그는 여러 커널을 관리하고 동기화 문제를 방지할 때 이벤트를 사용하는 것이 중요하다고 설명합니다. 그는 계속하기 전에 모든 이벤트가 완료될 때까지 기다리는 이벤트에 대한 CL 대기와 OpenCL 런타임에서 나중에 사용할 수 있도록 차단 지점을 대기열에 넣어 애플리케이션이 차단 없이 계속 실행할 수 있도록 하는 이벤트에 대한 대기열 대기를 사용할 것을 제안합니다. 또한 CL get 이벤트 프로파일링 정보를 사용하여 애플리케이션을 프로파일링할 수 있으므로 개발자는 실행하는 데 가장 많은 시간이 걸리는 커널을 최적화할 수 있습니다.
Episode 4: Kernel Execution
Episode 4: Kernel Execution
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the execution and synchronization of OpenCL™ kernels. Topics include program and kernel objects, compiling and executing kerne...
 

AMD Developer Central: OpenCL 기술 개요. 에피소드 5: OpenCL™ C를 사용한 프로그래밍



AMD Developer Central: OpenCL 기술 개요. 에피소드 5: OpenCL™ C를 사용한 프로그래밍

이 비디오는 작업 항목 함수, 작업 그룹 함수, 벡터 유형 및 내장 동기화 함수를 포함하여 OpenCL™ C 언어의 다양한 기능에 대해 설명합니다. 비디오는 효율적인 병렬 코드 작성 및 작업 그룹 간의 메모리 공유를 위해 올바른 주소 공간 한정자를 사용하는 것의 중요성을 강조합니다. 벡터 유형의 개념은 커널 포인터 인수, 지역 변수 및 프로그램 전역 변수에 대한 올바른 메모리 공간의 사용과 함께 자세히 논의됩니다. 또한 기본 제공 수학 함수 및 barriers 및 memfence와 같은 작업 그룹 함수는 런타임에 이러한 함수를 확인하라는 제안과 함께 다룹니다.

  • 00:00:00 이 섹션에서는 AMD의 Dustin Hensley가 작업 항목 기능, 작업 그룹 기능, 벡터 유형 및 내장 동기화 기능을 포함하는 OpenCL™ C 언어 기능에 대해 설명합니다. OpenCL은 표준 C99 헤더, 함수 포인터, 재귀, 가변 길이 배열 및 비트 필드의 제한이 없는 ISO C99를 기반으로 합니다. OpenCL에는 작업 그룹 간에 메모리 공유를 가능하게 하는 동시에 효율적인 병렬 코드 작성을 허용하는 주소 공간 한정자가 있습니다. 또한 내장 이미지 함수를 통해 최적화된 이미지 액세스와 런타임 정보에 액세스하기 위한 내장 런타임 함수가 있습니다. Hensley는 작업 항목 함수를 사용하는 간단한 데이터 병렬 커널을 시연하고 다양한 OpenCL 함수와 변수를 사용하여 해당 커널을 빌드하는 방법을 보여주었습니다.

  • 00:05:00 이 섹션에서는 OpenCL의 벡터 유형 개념에 대해 설명합니다. 이러한 벡터 유형은 다양한 런타임에서 이식할 수 있도록 설계되었으며 인도에서 안전하고 벡터 길이로 정렬되며 내장 함수가 있는 특정 특성을 가지고 있습니다. 그런 다음 비디오는 벡터 리터럴 생성 및 벡터의 특정 구성 요소 선택과 같은 벡터 작업의 몇 가지 예를 보여줍니다. 또한 OpenCL에는 여러 가지 주소 공간이 있으며 커널 포인터 인수, 지역 변수 및 프로그램 전역 변수에 올바른 주소 공간을 사용하는 것이 중요합니다. 메모리 공간을 지정하지 않으면 비공개로 기본 설정되어 문제가 발생할 수 있습니다.

  • 00:10:00 이 섹션에서는 포인터를 사용하여 전역, 로컬 또는 개인 메모리 공간에서 다른 메모리 공간으로 데이터를 변환하는 것이 OpenCL에서 허용되지 않는다고 설명합니다. 필요한 메모리 공간에 명시적으로 데이터를 복사해야 합니다. 의미 체계 및 변환과 관련하여 스칼라 및 포인터 변환에는 C99 규칙을 따르며 벡터 유형에는 암시적 변환이 허용되지 않습니다. 기계가 처리하는 데 의존하지 않고 특정 기능을 사용하여 작업에서 수행되는 반올림 종류를 결정함으로써 명시적 표현의 중요성이 강조됩니다. 로그 함수와 같은 OpenCL의 내장 수학 함수는 완전 정밀도, 반정밀도 및 기본 함수와 같은 다양한 특징을 제공하여 모호한 C99 라이브러리 엣지 케이스를 보다 효율적으로 처리하고 이 밑줄 유형 또는 한 유형을 다른 유형으로 변환합니다.

  • 00:15:00 이 발췌문에서 발표자는 내장된 작업 그룹 기능과 OpenCL C의 확장 기능에 대해 설명합니다. 이러한 기능에는 메모리 동기화를 허용하는 배리어 및 멤피스와 같은 동기화 도구가 포함됩니다. 연사는 또한 모든 항목이 충돌하지 않는 장벽을 설정하는 대신 동일한 기능을 실행하기 위해 작업 그룹의 모든 작업 항목을 사용하는 것의 중요성에 대해 이야기합니다. 또한 발표자는 원자 함수 및 컴파일 시간에 반올림 모드 선택을 포함한 다양한 확장에 대해 이야기합니다. 발표자는 사양으로 이동하여 이러한 기능 및 확장에 대해 자세히 읽고 런타임에 확인할 것을 권장합니다.
Episode 5: Programming with OpenCL™ C
Episode 5: Programming with OpenCL™ C
  • 2013.05.27
  • www.youtube.com
In this video, you learn about the OpenCL™ C kernel language. Topics include work items and work groups, data types, vector operations, address spaces, type ...
 

GPU 작업에 OpenCL을 사용하는 방법



GPU 작업에 OpenCL을 사용하는 방법

이 비디오는 카드에 따라 CUDA 또는 특정 그래픽 드라이버를 설치해야 Windows에서 대부분의 새로운 그래픽 카드에서 작동할 수 있는 개방형 표준 도구인 OpenCL을 소개합니다. 발표자는 간단한 프로그램, 커널 생성 프로세스, 데이터 버퍼링, 커널 인수 및 전역 작업 크기 설정, OpenCL에서 장치의 워크로드 실행을 CUDA와 비교하여 설명합니다. GPU 작업을 위해 OpenCL에서 커널을 생성하는 데 관련된 매개변수, 인큐 읽기 버퍼, 메모리 할당 해제는 계산을 확인하기 위해 샘플 코드로 설명되었습니다. 발표자는 OpenCL을 사용하여 그레이스케일 이미지에 미묘한 블러를 적용하는 작은 프로그램을 보여줌으로써 OpenCL이 CUDA보다 상용구 코드가 더 많지만 다른 그래픽 카드에 적용할 수 있는 개방형 표준 솔루션이며 제조업체에 관계없이 다른 시스템에서 재사용할 수 있음을 강조합니다.

  • 00:00:00 이 섹션에서 연사는 OpenCL을 소개하고 카드에 따라 CUDA 또는 특정 그래픽 드라이버를 설치해야 하는 요구 사항과 함께 Windows에서 최신 그래픽 카드와 함께 작동할 수 있는 개방형 표준인 방법에 대해 설명합니다. 그런 다음 발표자는 간단한 프로그램을 제공하고 OpenCL에서 작동하는 방식을 CUDA와 비교하여 설명합니다. 장치에서 워크로드를 실행하기 전에 커널 생성, 데이터 버퍼 생성, 커널 인수 및 전역 작업 크기 설정 프로세스를 거칩니다.

  • 00:05:00 이 섹션에서는 발표자가 GPU 작업을 위해 OpenCL에서 커널을 생성하는 것과 관련된 매개변수를 설명합니다. 전역 작업 크기 매개변수는 작업하려는 단위 수이고 로컬 작업 크기는 각 단위에서 수행하려는 작업량입니다. 전역 작업 크기는 로컬 작업 크기의 배수여야 하며 전역 로컬 작업 크기를 지정하지 않고 작업을 실행할 수 있지만 작업 중인 차원을 알 수 있도록 둘 다 설정하는 것이 좋습니다. 그런 다음 연사는 인큐 읽기 버퍼, 메모리 할당 해제 방법을 설명하고 모든 계산이 올바르게 수행되었는지 확인하는 샘플 코드를 제공합니다. 마지막으로 발표자는 매개변수와 튜플 사용을 보여주면서 이미지를 흐리게 처리하는 워크로드와 예시를 비교합니다.

  • 00:10:00 이 섹션에서 발표자는 이전 예제의 코드 변경 사항을 설명하고 이미지에 미묘한 블러를 수행할 커널을 제시합니다. 다양한 크기의 포인터와 버퍼를 만든 후 스피커는 메모리를 다시 가져오고 포인터를 해제하기 전에 커널에 인수를 설정합니다. 마지막으로 화자는 그레이스케일 이미지를 읽고 픽셀을 결과로 다시 설정한 다음 그레이스케일 이미지를 씁니다.

  • 00:15:00 이 섹션에서 발표자는 OpenCL을 사용하여 그레이스케일 이미지에 미묘한 블러를 적용하는 작은 프로그램을 보여줍니다. 발표자는 OpenCL이 CUDA에 비해 더 많은 상용구 코드를 가지고 있으며 모든 커널 프로그램 및 명령 대기열 변수를 체계적으로 유지하기 위해 클래스 또는 객체를 사용할 것을 권장합니다. 그러나 발표자는 OpenCL이 다양한 그래픽 카드에서 작동하고 특정 브랜드나 제조업체에 얽매이지 않고 다른 시스템에서 재사용할 수 있는 개방형 표준 솔루션임을 강조합니다. 전반적으로 발표자는 GPU 작업을 위한 OpenCL 사용에 대한 유용한 소개를 제공합니다.
How to use OpenCL for GPU work
How to use OpenCL for GPU work
  • 2018.03.04
  • www.youtube.com
We use OpenCL to run workloads on GPU and try a simple blur filter.Git repositoryhttps://github.com/kalaspuffar/openclPlease follow me on Twitterhttp://twitt...
 

EECE.6540 이기종 컴퓨팅(University of Massachusetts Lowell)



1. 예제와 함께 병렬 처리에 대한 간략한 소개

이 비디오는 예제와 함께 병렬 처리에 대한 간략한 소개를 제공합니다. 연사는 병렬 컴퓨팅이 더 큰 작업을 더 작은 하위 작업으로 나누어 병렬로 실행하는 것을 포함한다고 설명합니다. 이를 달성하기 위한 두 가지 주요 전략은 분할 및 정복과 분산 및 수집입니다. 영상은 인간의 감각, 자율주행차, 세포 성장과 같이 본질적으로 병렬성이 많은 자연 및 인공 애플리케이션의 예를 제공합니다. 비디오는 또한 병렬 처리의 이점에 대해 설명하고 병렬 처리가 정렬, 벡터 곱셈, 이미지 처리 및 텍스트 본문에서 문자열의 발생 수 찾기에 어떻게 적용될 수 있는지 보여줍니다. 마지막으로 동영상은 병렬 리소스에서 얻은 결과를 수집하고 처리하기 위한 요약 프로세스라고도 하는 축소 프로세스를 소개합니다.

  • 00:00:00 이 섹션에서 발표자는 병렬 컴퓨팅의 개념을 소개하고 더 큰 작업을 더 작은 하위 작업으로 나누어 병렬로 실행하는 것과 관련이 있다고 설명합니다. 이를 달성하기 위한 두 가지 주요 전략은 분할 및 정복과 분산 및 수집입니다. 연사는 인간의 감각, 자율 주행 자동차, 세포 성장과 같이 본질적으로 병렬성이 많은 자연 및 인공 애플리케이션의 예를 제공합니다. 또한 화자는 정렬 문제의 예를 제공하고 분할 정복 전략을 사용하여 어떻게 접근할 수 있는지 설명합니다.

  • 00:05:00 이 섹션에서 연사는 병합 정렬을 예로 사용하여 정렬하는 것부터 시작하여 병렬 처리의 두 가지 예에 대해 설명합니다. 정렬되지 않은 긴 정수 목록은 그룹당 두 개의 정수로 구성된 더 작은 하위 문제로 분해되며, 4개의 컴퓨팅 유닛이 하위 문제를 매핑하고 비교하여 최종 정렬된 정수 시퀀스를 얻습니다. 논의된 두 번째 예는 각 곱셈 연산이 서로 독립적이므로 본질적으로 데이터 병렬인 벡터 곱셈입니다. 이 문제는 산술 강도가 낮아 간단하고 빠르게 수행할 수 있습니다. 또한 발표자는 다양한 유형의 처리 문제에서 계산과 메모리 액세스 간의 균형을 강조하기 위해 산술 강도의 개념을 간략하게 언급합니다.

  • 00:10:00 이 섹션에서 발표자는 병렬 처리의 이점과 컴퓨팅 리소스를 효율적으로 활용하는 방법에 대해 설명합니다. 그는 병렬 처리를 사용하면 데이터를 지속적으로 로드 및 언로드할 필요 없이 동시에 여러 계산을 수행할 수 있다고 설명합니다. 여러 컴퓨팅 장치가 서로 다른 데이터에 대해 독립적으로 작업하는 작업 병렬 처리의 개념이 도입되었습니다. 이미지 처리의 예는 계산을 최대화하기 위해 여러 기능 단위의 파이프라인을 통해 데이터를 전달하는 방법을 설명하는 데 사용됩니다. 병렬 처리를 구현하면 컴퓨팅 장치가 동시에 작동하여 대기 시간이 줄어들고 계산 속도가 빨라집니다.

  • 00:15:00 이 섹션에서는 텍스트 본문에서 문자열의 발생 횟수를 찾는 예를 사용하여 병렬 처리의 개념을 자세히 설명합니다. 문제는 병렬화할 수 있는 개별 단어 비교를 통해 수행할 수 있는 잠재적 일치의 비교로 나눌 수 있습니다. 비교는 각 문자를 병렬로 비교하여 훨씬 더 세밀하게 수행할 수도 있습니다. 데이터 세트는 더 작은 단위로 나누어 동일한 작업을 병렬로 수행하므로 비교 작업이 매우 병렬화됩니다.

  • 00:20:00 이 섹션에서는 합산 프로세스라고도 하는 축소 프로세스인 병렬 처리의 두 번째 단계에 대해 배웁니다. 여기에서 수집 단계는 개별 경쟁자로부터 비교 결과를 수집하고 후처리를 위해 수집합니다. 최종 결과는 병렬 리소스에서 중간 결과를 수집하고 합산하여 생성됩니다. 비교 단위의 출력이 일치하는 경우 이러한 출력을 모두 더한 후 얻은 최종 숫자는 단어가 원래 텍스트에서 몇 번 발생했는지 나타냅니다.
Brief Introduction to Parallel Processing with Examples
Brief Introduction to Parallel Processing with Examples
  • 2020.05.21
  • www.youtube.com
This video starts the series on Heterogeneous Computing. In this video we introduce the concept of parallel processing with some examples.If you are interest...
 

2. 동시성, 병렬성, 데이터 및 작업 분해



2. 동시성, 병렬성, 데이터 및 작업 분해

비디오는 동시성과 병렬성의 개념, 작업 및 데이터 분해의 사용법, 병렬성과 동시성을 위한 데이터 분해 기술에 대해 자세히 설명합니다. Amdahl의 법칙은 여러 프로세서에서 작업을 실행할 때 이론적인 속도 향상을 계산하는 수단으로 탐구됩니다. 작업 종속성 그래프의 중요성은 문제를 하위 작업으로 나눌 때 작업 간 종속성을 식별할 때 강조됩니다. 입력 데이터 및 행 벡터 분할과 같은 데이터 분해 방법은 계산을 수행하는 데 유용한 것으로 표시됩니다. 원자적 작업 및 동기화는 모든 하위 작업이 완료된 후 올바른 결과를 생성하는 데 필수적인 것으로 설명됩니다.

  • 00:00:00 이 섹션에서는 비디오에서 동시성과 병렬성의 개념을 소개합니다. 동시성은 둘 이상의 활동이 동시에 발생할 때 발생하며, 이는 서로 다른 프로세서 또는 시분할 기술을 사용하는 단일 프로세서에 있을 수 있습니다. 반면에 병렬성은 CPU 또는 FPGA와 같은 서로 다른 하드웨어 실행 장치에서 두 가지 활동이 동시에 실행됨을 의미합니다. 이 비디오는 또한 여러 프로세서에서 작업을 실행할 때 이론적인 속도 향상을 계산하는 데 사용되는 Amdahl의 법칙에 대해 설명합니다. 직렬로 유지해야 하는 일부 작업에도 불구하고 병렬로 실행되도록 재설계할 수 있는 작업은 GPU, FPGA 또는 멀티코어 프로세서와 같은 처리 장치를 사용하여 수행할 수 있습니다.

  • 00:05:00 이 섹션에서 연사는 병렬 컴퓨팅의 개념과 CPU 아키텍처, 특히 인텔의 펜티엄 프로세서에서 병렬 컴퓨팅이 어떻게 구현되었는지에 대해 논의합니다. 그들은 전통적인 프로세서 아키텍처에서 명령 수준 병렬 처리가 종종 독립적인 명령을 동시에 실행하는 데 활용되어 성능이 향상된다고 설명합니다. 그러나 수업에서는 작업 및 데이터 병렬 처리와 알고리즘 및 소프트웨어 스레드를 사용하여 이러한 상위 수준 병렬 처리를 활용하는 방법에 중점을 둡니다. 알고리즘을 개별 작업으로 나누는 작업 분해와 데이터 세트를 병렬로 작동할 수 있는 개별 청크로 나누는 데이터 분해의 개념을 소개합니다.

  • 00:10:00 이 섹션에서는 비디오에서 작업 종속성 그래프의 개념과 문제를 하위 작업으로 분해할 때 작업 간의 관계를 설명하는 데 그래프가 어떻게 유용한지 설명합니다. 작업에 종속성이 없으면 병렬로 실행할 수 있으므로 보다 효율적으로 처리할 수 있습니다. 이 비디오는 또한 데이터를 계산을 위해 여러 작업으로 나누는 데이터 분해의 개념을 소개합니다. 이미지 컨벌루션 및 행렬 곱셈의 예는 출력 데이터를 사용하여 데이터를 다른 그룹 또는 파티션으로 분해하는 방법을 결정하는 방법을 보여줍니다.

  • 00:15:00 이 섹션에서 발표자는 병렬 및 동시성을 위한 데이터 분해를 위한 다양한 기술에 대해 설명합니다. 첫 번째 기술은 일대일 또는 다대일 매핑을 위해 데이터를 원래 행렬의 행 벡터로 분할하는 것과 관련됩니다. 두 번째 기술은 여러 출력 데이터에 해당하는 하나의 입력 데이터가 있는 입력 데이터 분해를 포함합니다. 이에 대한 예로는 타르 그램 히스토그램 및 하위 문자열 검색이 있습니다. 이러한 중간 데이터 부분에서 최종 결과를 계산하려면 모든 하위 작업이 완료되고 올바른 결과가 생성되도록 동기화 및 원자적 작업이 필요할 수 있습니다.
Concurrency, Parallelism, Data and Task Decompositions
Concurrency, Parallelism, Data and Task Decompositions
  • 2020.05.21
  • www.youtube.com
This video compares concurrency with parallelism, and discusses decomposition methods to parallelize a task.
 

3. 병렬 컴퓨팅: 소프트웨어 및 하드웨어



3. 병렬 컴퓨팅: 소프트웨어 및 하드웨어

이 비디오는 컴퓨팅에서 높은 수준의 병렬 처리를 달성하기 위한 다양한 접근 방식에 대해 설명합니다. 발표자는 명령 수준 병렬 처리(ILP), 소프트웨어 스레드, 멀티 코어 CPU, SIMD 및 SPMD 프로세서를 포함하여 병렬 컴퓨팅을 수행하는 데 사용되는 하드웨어 및 소프트웨어 기술에 대해 설명합니다. 비디오는 또한 병렬 밀도의 중요성과 효율적인 병렬 컴퓨팅을 가능하게 하는 컴퓨팅/처리 장치의 개념을 설명합니다. 또한 발표자는 동기화 목적으로 원자적 작업을 생성하는 문제와 GPU에서 효율적으로 실행하기 위해 문제를 재구성해야 할 필요성에 대해 논의합니다.

  • 00:00:00 이 섹션에서 발표자는 높은 수준의 병렬 처리를 달성하기 위한 다양한 접근 방식에 대해 설명합니다. 프로세서 설계 초기에 사람들은 명령 수준 병렬 처리(ILP) 및 소프트웨어 스레드에 의존하여 병렬 처리를 달성했습니다. 그러나 이러한 설계는 자동으로 수행되지 않으며 프로그래머는 이러한 소프트웨어 응용 프로그램을 설계하는 데 경험이 있어야 합니다. 하드웨어 측면에서 병렬 컴퓨팅 작업에 사용할 수 있는 다양한 유형의 프로세서가 있습니다. 멀티코어 CPU는 작업 병렬화를 위해 설계되었으며 SIMD 프로세서는 데이터 병렬화를 활용하도록 설계되었습니다. GPU는 수백 또는 수천 개의 코어에서 동시에 여러 데이터를 수행할 수 있기 때문에 데이터 병렬 작업에 가장 적합합니다.

  • 00:05:00 이 섹션에서는 연사가 병렬 컴퓨팅에서 일반적으로 사용되는 SIMD 및 SPMD의 개념에 대해 설명합니다. SIMD는 단일 명령 다중 데이터(Single Instruction Multiple Data)의 약자로 각 코어가 동시에 다른 데이터에 대한 작업을 수행할 수 있습니다. 반면 SPMD는 단일 프로그램 다중 데이터(Single Program Multiple Data)의 약자로 동일한 프로그램의 여러 인스턴스가 데이터의 다른 부분에서 독립적으로 작동합니다. 루프 스트립 마이닝은 벡터 단위를 활용하여 반복을 동시에 실행할 수 있는 독립적인 프로세서 간에 데이터 병렬 작업을 분할하는 인기 있는 기술입니다. 스피커는 각 프로그램이 데이터의 다른 부분에서 실행되는 루프 트립 마이닝과 함께 SPMD를 사용하는 벡터 추가의 예를 제공합니다.

  • 00:10:00 이 섹션에서 발표자는 데이터의 각 청크를 독립적인 스레드로 실행하는 예를 사용하여 병렬 컴퓨팅에서 서로 다른 프로세서가 데이터의 서로 다른 부분에서 작동하는 방법을 설명합니다. GPU용 스레드 생성 비용이 높기 때문에 각 프로세서에서 예상되는 계산은 병렬 처리 밀도로 알려진 더 커야 합니다. FPGA의 경우 스레드를 생성하는 오버헤드가 매우 낮기 때문에 많은 수의 SGMD 실행 인스턴스가 있을 수 있습니다. SIMD(단일 명령 다중 데이터)를 사용하면 명령을 함께 실행하는 많은 ALU(산술 논리 장치)와 함께 여러 데이터에서 동시에 하나의 명령을 실행할 수 있습니다. 병렬 알고리즘은 ALU 장치에 유리한 제어 흐름 및 기타 하드웨어의 양을 줄일 수 있습니다.

  • 00:15:00 이 섹션에서 발표자는 계산을 위해 칩 내에서 사용되는 컴퓨팅/처리 장치의 개념을 설명합니다. 데이터 입력을 받고 작업을 동시에 수행할 수 있으므로 효율적인 병렬 컴퓨팅이 가능합니다. 이 아키텍처는 SMID(Single Instruction Multiple Data)를 기반으로 하며 GPU 하드웨어에서 널리 사용됩니다. 발표자는 동기화 목적을 위한 원자적 작업의 중요성을 강조하지만 이러한 작업의 큰 오버헤드 비용에 대해 경고합니다. 입력 데이터 파티셔닝을 사용하여 분해된 문제는 GPU에서 효율적으로 실행하기 위해 재구성해야 할 가능성이 높습니다.
Parallel Computing: Software and Hardware
Parallel Computing: Software and Hardware
  • 2020.05.21
  • www.youtube.com
This video introduces the general characteristics of parallel computing, the associated software and hardware methods.
 

4. 이기종 프로세서에 관한 두 가지 중요한 논문



4. 이기종 프로세서에 관한 두 가지 중요한 논문

이 비디오는 프로세서 설계 및 에너지 효율성의 추세, 맞춤형 하드웨어 및 특수 가속기 사용의 이점, 크고 작은 코어 균형의 중요성, 코어 간의 데이터 이동 및 효율적인 통신 문제를 포함하여 이기종 컴퓨팅과 관련된 다양한 문서를 다룹니다. 이 문서에서는 이기종 프로세서와 OpenCL, CUDA 및 OpenMP와 같은 프로그래밍 언어 및 프레임워크를 사용하여 작업할 때 스케줄링 및 워크로드 파티션을 이해해야 할 필요성에 대해서도 논의합니다. 전반적으로 이 문서는 이기종 컴퓨팅 환경에서 성능과 에너지 효율성을 극대화하기 위해 여러 코어와 가속기를 활용하는 잠재적 이점을 강조합니다.

  • 00:00:00 이 섹션에서 발표자는 지난 10년 동안 발표된 이기종 컴퓨팅과 관련된 두 가지 중요한 논문에 대해 논의합니다. 첫 번째 문서에서는 단일 프로세서 코어에서 다중 코어로 이동하는 추세와 더 많은 성능을 얻기 위한 unship 트랜지스터의 효율적인 활용에 대해 설명합니다. 두 번째 논문은 컴퓨터 설계자, 프로그래머 및 연구원이 성능과 활용도를 모두 극대화하기 위해 CPU와 GPU를 함께 사용하는 보다 협력적인 접근 방식으로 나아가고 있는 방법에 대해 이야기하는 설문 조사 논문입니다. 발표자는 이기종 코어와 가속기를 사용하여 단일 코어 성능에서 분자 성능 또는 처리량 측면 성능으로 전환하는 추세에 대해서도 이야기합니다. 기록에는 1971년부터 2009년까지 단일 칩의 트랜지스터 수 증가를 보여주는 그래프가 포함되어 있으며 이기종 컴퓨팅 사용의 주요 이점을 강조합니다.

  • 00:05:00 이 섹션에서는 비디오에서 트랜지스터 스케일링과 단일 칩에 더 많은 트랜지스터를 허용하여 성능과 에너지 효율성을 높이는 방법에 대해 설명합니다. 그런 다음 비디오는 더 많은 코어를 추가하거나 예측 실행을 구현하는 것과 같이 마이크로프로세서를 설계하는 데 사용되는 다양한 기술을 보여주는 다이어그램을 제공합니다. 매년 성능이 크게 향상되지는 않았지만 에너지 효율성이 거의 5배 향상되어 더 높은 처리량으로 더 많은 작업을 수행할 수 있습니다. 비디오는 또한 프로세서의 성능에 대한 간단한 관찰인 Pollock의 규칙을 소개합니다.

  • 00:10:00 이 섹션에서 발표자는 트랜지스터의 면적 또는 수가 증가함에 따라 프로세서의 성능 향상에 대해 논의합니다. 이러한 요소 간의 관계는 대략 트랜지스터 수의 제곱근입니다. 반면 DRAM 밀도는 2년마다 거의 2배로 증가하지만 읽기/쓰기 속도 측면에서 성능은 따라가지 못하고 있습니다. 총 에너지 예산은 일정하므로 트랜지스터 크기를 줄이고 트랜지스터 수를 늘려도 성능이 크게 향상되지 않습니다. 누설 전력은 트랜지스터 크기가 감소함에 따라 우세해집니다. 즉, 주파수 증가, 공급 전압 감소, 연결 및 전선의 정전용량만으로는 테라비트 이상의 작동과 같은 의도된 성능 목표를 달성할 수 없습니다.

  • 00:15:00 이 섹션에서 발표자는 이기종 프로세서의 다중 코어 설계에 대해 논의하며 크고 균일한 코어를 갖는 것이 유익하지 않을 수 있음을 강조합니다. 대신 고정 또는 프로그래밍 가능 가속기로 하드웨어를 맞춤화하고 논리를 코어와 결합하면 코어를 더 잘 활용할 수 있습니다. 발표자는 30개의 더 작은 코어(각각 500만 트랜지스터)가 있는 설계가 동일한 총 트랜지스터 수(1억 5천만 개)를 사용하면서 6개의 더 큰 코어(각각 2500만 트랜지스터)가 있는 설계보다 성능이 뛰어난 예를 제시합니다. 큰 코어와 작은 코어 사이의 균형을 유지함으로써 처리량과 단일 코어 성능 간의 균형을 최적화할 수도 있습니다.

  • 00:20:00 이 섹션에서 발표자는 맞춤형 하드웨어를 위한 이기종 프로세서의 사용과 범용 CPU 코어 대신 더 작은 맞춤형 코어를 사용하는 이점에 대해 논의합니다. 곱셈기 또는 FFT 장치와 같은 기능적 장치를 구축하기 위해 특수 논리를 활용함으로써 설계자는 범용 설계보다 더 높은 에너지 효율성을 달성할 수 있습니다. 또한 이 백서에서는 데이터 이동의 문제와 코어 간의 효율적인 통신을 위한 효율적인 메모리 계층 및 상호 연결의 중요성에 대해 설명합니다. 이 백서에서는 더 나은 단일 스레드 성능을 달성하기 위해 수퍼스칼라 비순차적 프로세서를 구축하기 위한 기존의 90% 대신 특수 가속기와 코어에 대해 10%의 분할을 제안합니다.

  • 00:25:00 이 섹션에서 비디오는 이기종 프로세서에 대한 두 개의 문서에 대해 설명합니다. 첫 번째 백서에서는 데이터 이동 및 에너지 효율성에서 직면한 문제에 대해 설명합니다. 한 가지 설계 추세는 전압 스케일링으로 서로 다른 코어를 서로 다른 속도로 실행할 수 있도록 하여 워크로드 및 작업 일정에 따라 에너지 소비를 크게 줄일 수 있습니다. 두 번째 문서에서는 크기가 다양하고 주파수와 전압이 유연한 이기종 코어와 대규모 병렬 처리 경향에 대해 설명합니다. 또한 칩에 내장된 다양한 하드웨어 가속기를 사용하고 불필요한 데이터 이동을 줄이기 위해 효율적인 데이터 포지셔닝에 초점을 맞추는 움직임이 있습니다. 이 백서는 다양한 CPU 아키텍처의 고유한 강점을 인정하고 향후 CPU 기능과 일치하도록 알고리즘을 설계합니다.

  • 00:30:00 이 섹션에서 연사는 CPU FPGA와 같은 이기종 프로세서로 작업할 때 스케줄링 기술과 워크로드 파티션을 이해하는 것이 얼마나 중요한지 설명합니다. 예약에는 하위 작업이 특정 프로세서에서 실행되어야 하는 시기를 결정하는 작업이 포함되며 워크로드 분할은 데이터 및 작업 분할을 처리합니다. 발표자는 또한 다양한 유형의 프로세서를 위한 OpenCL, CUDA 및 OpenMP와 같은 다양한 프로그래밍 언어 및 프레임워크에 대해 언급합니다.
Two Important Papers about Heterogeneous Processors
Two Important Papers about Heterogeneous Processors
  • 2020.05.21
  • www.youtube.com
This video provides an overview of two important papers on the design and programming of heterogenous processors/systems.S. Borkar and A. Chien, The Future o...
 

5. 컴퓨팅 하드웨어 개요



5. 컴퓨팅 하드웨어 개요

이 비디오는 프로세서 아키텍처, 설계 고려 사항, 다중 스레딩, 캐싱, 메모리 계층 및 제어 논리 설계와 같은 주제에 대해 논의하면서 컴퓨팅 하드웨어에 대한 개요를 제공합니다. 또한 컴퓨터가 작업을 수행하기 위해 따라야 하는 일련의 지침인 프로그램과 시스템 소프트웨어 및 응용 프로그램을 비롯한 다양한 유형의 프로그램에 대해 설명합니다. 이 비디오는 프로그램을 실행하고 작업을 수행하기 위해 함께 작동하는 CPU 및 메모리와 같은 컴퓨터의 하드웨어 구성 요소의 중요성을 강조합니다.

  • 00:00:00 이 섹션에서 발표자는 프로세서 아키텍처 및 혁신, 아키텍처 설계 공간, CPU 및 GPU 아키텍처, FPGA를 고성능 신흥 아키텍처로 포함하여 수업에서 다룰 주제를 소개합니다. 발표자는 또한 OpenCL의 기원과 OpenCL이 제공하는 프로세서를 기반으로 다양한 공급업체에 의해 점진적으로 형성되어 플랫폼 독립성을 달성하는 완화된 일관성 블록 기반 패러다임 모델로 이어지는 방법에 대해 이야기합니다. OpenCL 프로그램의 성능은 여전히 구현, 알고리즘 및 하드웨어 아키텍처에 얼마나 잘 매핑될 수 있는지에 따라 달라집니다. 서로 다른 프로세서를 설계하려면 단일 코어 프로세서를 사용할지 또는 다중 프로세서를 사용할지와 같은 많은 고려 사항과 장단점이 필요합니다.

  • 00:05:00 이 섹션에서 비디오는 수퍼스칼라 코어 및 명령어 스케줄링과 같은 컴퓨팅 하드웨어와 관련하여 몇 가지 설계 고려 사항을 설명합니다. 비디오는 또한 프로세서가 처리할 수 있는 유용한 작업의 양을 늘리는 방법인 멀티스레딩과 캐싱 및 메모리 계층 구조의 중요성에 대해 설명합니다. GPU, FPGA, 크고 작은 코어가 있는 CPU를 포함하는 프로세서의 이질성이 점점 보편화되고 있습니다. 마지막으로, 복잡한 제어 흐름에서 명령 수준 병렬성을 활용하기 위해 명령의 재정렬을 가능하게 하는 제어 로직의 설계가 중요합니다.

  • 00:10:00 이 섹션에서 비디오는 프로그램이 특정 작업을 수행하기 위해 컴퓨터가 따르는 일련의 지침이라고 설명합니다. 프로그램은 프로그래밍 언어로 작성된 코드로 구성되며, 컴퓨터가 이해할 수 있는 기계어로 컴파일되거나 해석됩니다. 비디오는 계속해서 운영 체제 및 장치 드라이버와 같은 시스템 소프트웨어와 워드 프로세서 및 게임과 같은 응용 프로그램을 포함하여 다양한 유형의 프로그램을 설명합니다. CPU 및 메모리와 같은 컴퓨터의 하드웨어 구성 요소는 함께 작동하여 이러한 프로그램을 실행하고 원하는 작업을 수행합니다.
Overview of Computing Hardware
Overview of Computing Hardware
  • 2020.05.22
  • www.youtube.com
This video introduces hardware tradeoffs and conventional CPU architecture.