CS 475/575 -- Spring Quarter 2017
Test #2 Review
On-campus Edition
This page was last updated: June 13, 2017
WARNING to the On-campus CS 475/575 class!
This will be a multiple choice test on a Scantron (fill-in-the-bubble) form.
From the OSU Test Scoring User Guide:
"The scanner reads reflective optical marks and only a number 2 or softer (i.e., a smaller number)
lead pencil should be used.
Ball Point Pen and Marker type pencils should not be used."
I hardly ever use pencils anymore, so don't come up and ask to borrow one.
I won't have any.
Test date and time:
Thursday, June 15, 2017 |
2:00 - 3:30 PM |
Dearborn 118 |
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.
-
The test is over promptly at 3:30.
Only the tests that have been turned in by then will be graded.
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