Starting from:
$35

$29

LAB 10 QUESTIONS SOLUTION


Answer the questions below according to the lab specification. Write
your answers directly in this text file and submit it to complete the
lab.


PROBLEM 1: Code Overview
========================

(A) Vector and Matrix
~~~~~~~~~~~~~~~~~~~~~

  Examine the header file `matvec.h' which gives type definitions and
  declares functions associated with a simple matrix and vector type.

  For the matrix type `matrix_t' with R rows and C columns, how is a 2D
  matrix actually laid out in memory?


(B) Getting and Setting Elements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  For the `matrix_t' and `vector_t' types, convenient means to get and
  set elements is provided. This mechanism is used in the utility
  functions in `matvec_util.c' and defined in `matvec.h'.

  Describe how one would get element (R,C) of `matrix_t' or set it to
  value Z.  Why are these mechanisms not functions?


PROBLEM 2: Timing Rows vs Columns
=================================

(A) row_sums vs col_sums Timing
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Compile and run the `matsums_main' executable using the provided
  `Makefile' (typing `make' should suffice).

  Run this program with differing parameters which control the number of
  rows and columns in the matrix which is summed. Show some example runs
  with different parameters including on large square matrix with 8000
  rows and 8000 columns.

  Note any speed differences between the two on large matrices.


(B) row_sums vs col_sums speed
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  Examine the source code for the functions `row_sums()' and
  `col_sums()' in the file `matsums_funcs.c'.  Describe why the
  timing/speed differences you observed previously are occurring based
  on features of the source code you see and the layout of the
  `matrix_t' that is being summed.


PROBLEM 3: opt_col_sums()
=========================

  Complete the function `opt_col_sums()' in file `matsums_funcs.c'. This
  function should have identical behavior to `col_sums()' (it sums the
  columns of the matrix into a provided array). However, it should be
  *optimized* so that it achieves performance near to that of the
  `row_sums()' function. To achieve this, re-arrange the loops to
  iterate as efficiently as possible with respect to the memory
  system. Feel free to ask course staff for hints on how to do this or
  do some online research.

  To time `opt_col_sums()', uncomment relevant blocks in the
  `matsums_main.c' program that are provided for it.

  Paste your source code and a copy of the timing results of running
  `matsums_main' on an 8000 by 8000 matrix.

More products