After working through these videos, you can design and implement a complete solution to Assignment 3.
Video:
C11 Thread Main Function.
Code:
thread_main_void.c
,
makefile
.
Video:
C11 Thread Main Function Array Arguments
Code:
thread_main_array.c
,
makefile
.
Video:
C11 Thread Main Function Arbitrary Arguments.
Code:
thread_main_struct.c
,
makefile
.
Videos: Naive Synchronization via C11 Threads in the section on Basic parallel programming III.
Video:
Synchronization via Conditional Variables.
Code:
condvar.c
,
makefile
.
Video:
Multi-stage Processing.
Code:
multi_stage.c
, and this
makefile
.
Note: The description of conditional variables and spurious wake-ups displayed in the video is not accurate and corrected in the available code.
Optional Video:
Synchronization via Spin Locks.
Code:
spin.c
,
makefile
.
Optional Video:
Synchronization via Semaphores.
Code:
semaphore.c
,
makefile
.
Video:
Naive Synchronization via C11 Threads.
Code:
none_c11.c
,
mutex_c11.c
,
atomic_c11.c
,
reduction_c11.c
,
makefile
.
Video:
Deadlock.
Code:
deadlock_simple.c
,
deadlock_dependent.c
,
makefile
.
Video:
GDB for Parallel Debugging.
Code:
thread_debug.c
,
makefile
.
Optional Video:
Data Partitioning in C11 Threads I,
Data Partitioning in C11 Threads II.
Code:
horz_c11.c
,
vert_c11.c
,
makefile
.
Video:
What is OpenCL?
Code:
dotprod.c
,
makefile
.
Video:
Initialization.
Code:
dotprod.c
,
dotprod.cl
,
makefile
.
Video:
Memory.
Code:
dotprod.c
,
dotprod.cl
,
makefile
.
Video:
Kernels.
Code:
dotprod.c
,
dotprod.cl
,
makefile
.
Video:
Matrix Multiplication.
Code:
matmul.c
,
matmul.cl
,
makefile
.
Video:
Vectorization.
Code:
dotprod_float4.c
,
dotprod_float4.cl
,
makefile
.
Video:
Reduction.
Code:
dotprod_reduction.c
,
dotprod_reduction.cl
,
makefile
.