[Solved] ME759-Assignment 4

$25

File Name: ME759-Assignment_4.zip
File Size: 169.56 KB

SKU: [Solved] ME759-Assignment 4 Category: Tag:
5/5 - (1 vote)

. (a) Implement in a file called matmul.cu the matmul and matmul kernel functions as declared and described in matmul.cuh.

  • Write a program cu which does the following:
    • Creates matrices (as 1D row major arrays) A and B of size n*n in managed (aka unified) memory.
    • Fills those matrices however you like.
    • Calls your matmul
    • Prints the last element of the resulting matrix.
    • Prints the time taken to perform the multiplication in milliseconds using CUDA events.
    • Compile: nvcc task1.cu matmul.cu -Xcompiler -O3 -Xcompiler -Wall -Xptxas -O3 -o task1
    • Run (where n and threads per block are positive integers): ./task1 n threads per block
    • Example expected output:

11.36

1.23

  • On an Euler compute node, run task1 for each value n = 25,26, ,215 and generate a plot task1.pdf which plots the time taken by your algorithm as a function of n when threads per block = 1024. Overlay another plot which plots the same relationship with a different choice of threads per block.

1

  1. (a) Implement in a file called stencil.cu stencil and stencil kernel functions as declared and described in stencil.cuh. These functions should produce the 1D convolution of image and mask:

R output[i] = X image[i + j] mask[j + R] i = 0, ,n 1

j=R

Assume that image[i] = 0 when i < 0 or i > n 1. Pay close attention to what data you are asked to store and compute in shared memory.

  • Write a program cu which does the following:
    • Creates arrays image (length n), output (length n), and mask (length 2 * R + 1) all in managed memory.
    • Fills those arrays however you like.
    • Calls your stencil
    • Prints the last element of the resulting array.
    • Prints the time taken to perform the convolution in milliseconds using CUDA events.
    • Compile: nvcc task2.cu stencil.cu -Xcompiler -O3 -Xcompiler -Wall -Xptxas -O3 -o task2
    • Run (where n, R, and threads per block are positive integers):

./task2 n R threads per block

  • Example expected output:

11.36

1.23

  • On an Euler compute node, run task2 for each value n = 210,211, ,231 and generate a plot task2.pdf which plots the time taken by your algorithm as a function of n when threads per block = 1024 and R = 128. Overlay another plot which plots the same relationship with a different choice of threads per block.

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[Solved] ME759-Assignment 4
$25