CS 475/575 -- Spring Quarter 2017
Test #2 Review
Online Edition
This page was last updated: June 13, 2017
The online CS 475/575 class will be taking this multiple-choice Test on Canvas.
Test date and time:
Goes live: Thursday, June 15, 2017; 2:00 PM PDT |
Turns off: Sunday, June 18, 2017; 11:59 PM PDT |
Time to take the test: 90 minutes |
Test rules:
-
This is Test #2, not a comprehensive final. However, . . .
- . . . I reserve the right to re-use up to 3 verbatim multiple choice questions from Test #1.
-
The test is worth 100 points.
-
There will be 40 multiple-choice questions, worth 2.5 points each.
-
The test will be designed to be done in one hour, but you will have 90 minutes.
Take your time!
-
It is closed notes.
-
You are responsible for
- what is in all handouts
- what was said in class
- what you have done in the projects.
Hint #1: You won't have to write any code.
Hint #2: You won't need a calculator.
The test can potentially cover any of the following:
Class Topics:
-
Vectorization:
Single Instruction Multiple Data (SIMD).
How it works.
Why use it.
MMX, SSE, AVX, AVX-512.
Array multiplication, array multiplication + summing.
#pragma omp simd (followed by a for-loop)
A[0:N] (C Extensions for Array Notation)
You won't need to know any specifics about how the assembly code works, but know why we used it and what happened when we did.
-
Xeon Phi:
57 cores (1 for the OS, 56 for you),
4-way hyperthreading,
16-float SIMD (=1 cache line),
Fused Multiply-Add (FMA),
no out-of-order instruction processing (ILP).
-
GPU 101:
GPU performance vs. CPU performance,
"CUDA Cores" vs. "Intel cores",
what GPUs are good at vs. what CPUs are good at,
Compute Units,
Processing Elements,
the Yellow Robot.
-
OpenCL:
general idea,
two programs (C++ and .cl),
work-groups,
work-items,
1D or 2D or 3D,
thousands of threads,
get_num_groups( ),
get_global_size( ),
get_local_size( ),
get_global_id( ),
get_local_id( ),
SIMD parallelism (float4, etc.),
types of memory (and who can share them),
steps in creating and running an OpenCL program,
host memory vs. device memory,
command queue,
compiling and building .cl code,
enqueuing,
executing a kernel,
transferring buffers to/from the GPU,
performance.
You won't need to know exact function syntax.
-
OpenCL Reduction:
general idea,
local memory array,
mask, offset,
barriers.
-
OpenCL Events:
throwing events,
waiting for one or more events.
-
OpenCL / OpenGL Interoperability:
general idea,
OpenGL vertex buffers,
OpenGL binding,
OpenCL acquiring and releasing a buffer,
clCreateFromGLBuffer,
particles.cpp,
particles.cl.
You won't need to know any of the specifics of using OpenGL to create VBOs.
-
OpenCL Assembly Language:
Difference between distance( ), length( ), normalize( ) and
fast_distance( ), fast_length( ), fast_normalize( ).
Which you should use when.
-
Message Passing Interface (MPI):
general idea,
multiple CPUs,
SPMD model,
broadcast,
sending,
receiving,
reduction,
scatter / gather,
barriers,
derived types.
You won't need to know the exact syntax of the function calls.
-
OpenGL Compute Shaders:
What are they, how they fit into a graphics application.
How they compare with using OpenCL.
-
More Information.
Projects:
- Project 3: False Sharing
- Project 4: Functional Decomposition ("Grainville")
- Project 5: SIMD Array Multiplication and Summing
- Project 6: OpenCL -- Array Multiplication, Array Multiplication and Adding, and Array Multiplication and Reduction
- Project 7A: OpenCL -- OpenGL Particle System
- Project 7B: OpenMP/SIMD/OpenCL -- Autocorrelation