[CSEG483/CSE5483] HW 1: 간단한 reduction 응용

29 阅读1分钟

Dowload link:[CSEG483/CSE5483] HW 1: 간단한 reduction 응용

Description

5/5 – (2 votes)

제출 마감: 4월 10일(수) 오후 8시 정각 이전에 조교가 사이버 캠퍼스에 공지한 방식으로 제출

참고: LATE 없음

  1. 0과 1 사이의 n개의 31-비트부동 소수점 숫자 x0, x1, · · · , xn−1의 평균, 분산, 최소값, 그리고최대값을 구해주는 CUDA 프로그램을작성하라.
    • 입력데이터는수업 시간의사용한예제 코드의방법을사용하여 생성하라.
    • 분산 값은 Var(X) = E(X2) − E(X)2 공식을사용하여 계산하라.
  1. 방법
  1. [방법 1] Host에서 작동하는다음함수를 구현하라.

void HW1 host(int n, float* A, float* average, float* variance, float* maximum, float* min-imum);

  1. [방법 2] 수업 시간에 설명한 reduce1 커널의 방식을 적절히 확장하여 구현하라.

void HW1 reduce1(int n, float* A, float* average, float* variance, float* maximum, float* minimum);

  1. [방법 3] CUDA에서 제공하는 thrust 라이브러리 함수를 적절히 사용하여 구현하라. (참고: nvidia.github.io/cccl/thrust… 관련 문서를 찾을 것.)

void HW1 thrust(int n, float* A, float* average, float* variance, float* maximum, float* minimum);

  1. 참고: 자신의 실험은다음의 내용을 포함해야 한다.
    1. 먼저 보고서 가장 앞에 자신이 실험을 수행할 때어떤 GPU를사용했는지를 반드시 기술하라.
    1. 각함수가동일한입력 n과 A에 대하여 동일한 결과값 average, variance, maximum, 그리고 minimum

을산출하는지, 아니면방법에 따라약간의차이가 있는지 확인하라.

    1. 각함수에 대한 수행 시간은 수업 시간에 설명한 host에서의측정 방법을사용하라.
    1. 충분히 큰 서로다른 데이터크기 n에 대하여 thread block의 크기를 바꾸어 가면서속도변화가 있는지관찰하라.
  1. 제출: 자신이 구현한 코드를이름이 HW 1 학번인 디렉터리 아래의 Visual Studio 프로젝트를생성한 후, zip으로압축하여 제출할 것.
    1. 자신이작성한코드: Visual Studio 2022를 통하여 확인할 수 있도록 위의 directory를 제출하되 .vs

파일 등 코드 수행에불필요한 파일들은 반드시 제거한 후 제출할 것.

    1. 프로그램 실행결과: 자신의 코드를 실행한 결과를 증빌할 수 있는자료(예를 들어, 콘솔 윈도우의 내용을캡춰한 영상)를 보고서에포함할 것.
    1. 보고서: 자신의 실험 결과를 바탕으로분석한 내용을 기술할 것.

– [CSEG483/CSE5483] 기초 GPU 프로그래밍 HW 1 (2024년 4월 10일 (수) 오후 8:00 마감) –

Solution