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.