From 3f3c8a290fe4a5a75b45e14861e76231e26c570c Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Tue, 14 Sep 2010 11:21:15 -0400 Subject: [PATCH] Convert sorting assigment.pdf to XHTML. --- assignments/archive/sorting/assigment.pdf | Bin 34963 -> 0 bytes .../archive/sorting/index.shtml.itex2MML | 91 ++++++++++++++++++ assignments/index.shtml | 2 +- 3 files changed, 92 insertions(+), 1 deletion(-) delete mode 100644 assignments/archive/sorting/assigment.pdf create mode 100644 assignments/archive/sorting/index.shtml.itex2MML diff --git a/assignments/archive/sorting/assigment.pdf b/assignments/archive/sorting/assigment.pdf deleted file mode 100644 index fdfa0409e3abaa5646a6fb8830092e6847533cb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34963 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�pLqk6o_8|($q6w-`ze%rD31oQP!tK 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 diff --git a/assignments/archive/sorting/index.shtml.itex2MML b/assignments/archive/sorting/index.shtml.itex2MML new file mode 100644 index 0000000..51e93a1 --- /dev/null +++ b/assignments/archive/sorting/index.shtml.itex2MML @@ -0,0 +1,91 @@ + + +

Assignment #3

+

Due Friday, October 16, 2009

+ +

Purpose

+ +

Learn to time C codes — specifically sorting algorithms.

+ +

Note: Please identify all your work.

+ +

Background

+ +

The basic idea of timing a code is to make two time calls — one +before and one after the code you want timed, and then take the +difference. There are many ways to make such time calls in C. We will +use gettimeofday() because it allows timing to +µ-seconds. The gettimeofday call is described by

+ +
+#include 
+int gettimeofday(struct timeval *tv, struct timezone *tz);
+
+ +

The return value is 0 for success and -1 for an error. The function +places the time and timezone information into memory specified +by *tv and *tz respectively. We don’t care +about the timezone, so we can place a NULL pointer +there.

+ +

In order to understand how to get at the time we need to understand +the timeval struct. This is defined by

+ +
+struct timeval{
+  time_t         tv_sec;
+  suseconds_t    tv_usec;
+};
+
+ +

The type time_t is essentially an integer type used to +store the number of seconds elapsed from the beginning of the Unix +epoch (12:00 UTC on 1 January 1970). The suseconds_t type +is similar: it is an integer that holds the the number of µ-seconds +that have elapsed 1 since the last second. So, if we want the current +time to the µ-second since the Unix epoch we have

+ +
+struct timeval t1;
+gettimeofday(&t1,NULL);
+printf("Unix rulz ur world for %d.%06d seconds!\n", t1.tv_sec, t1.tv_usec);
+
+ +

Note the formatting for the µ-seconds.

+ +

Assignment

+ +

Part A

+ +

Write a C code (or modify the one in the web pages) that wraps a +sorting algorithm in order to time it using +the gettimeofday call. Print out the total time +elapsed. Repeat this for a sequence of lists of exponentially growing +size, say $2^n$ with $1 \le n \le N \sim 20$ (hint: make one long +unsorted list of length $2^N$, say with a random number generator, and +just take subsets of this list). Do this for both a bubble and a +quicksort. Make a log-log plot of the times to compare the algorithms. +What is the order of the algorithms (i.e., visually compare against +curves of the form $c_1 n^2$ and $c_2 n \ln n$)? Do you want to +bubble sort large lists (i.e. what value of $N$ did you give up +at)?

+ +

Part B

+ +

Write a parallel version of the bubble sort code. Use an algorithm +that leaves the task of ordering the sub-lists to processes 1 +to size-1 (size being the number of +processes), using process 0 to merge back the ordered sub-lists into +an ordered large one and performing a check (sum of members) on the +sort.

+ +

Part C

+ +

Insert timing tools in the parallel code. Time separately: the +sorting of the sublists, the merging of the sublists and the total +times for both sort and merge (total sorting times). Plot the total +sorting times for the serial code and the parallel code for +the values of $N$ used in Part A. Find out the $N$ dependence of the +merge times.

+ + diff --git a/assignments/index.shtml b/assignments/index.shtml index 3cca6ed..de2ab91 100644 --- a/assignments/index.shtml +++ b/assignments/index.shtml @@ -5,7 +5,7 @@