Download
Introduction
http://www.origamitessellations.com/
- HTML5
http://www.html5rocks.com/en/ - Nissan Self Driving Car by 2020
http://www.engadget.com/2013/08/27/nissan-self-driving-cars/ - Analysis of Flight Data Set
http://blog.mongodb.org/post/58919137318/aggregation-options-on-big-data-sets-part-1-basic - Bayesian Statistics
http://camdavidsonpilon.github.io/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/
- Jason: Understanding Computational Bayesian Statistics http://amzn.to/1cGrjEX
- Patrick: Going Postal by Terry Pratchett http://amzn.to/13egaIw
- Jason: NES/SNES Together
https://play.google.com/store/apps/details?id=com.github.mistertea.android.emu.nes
https://play.google.com/store/apps/details?id=com.github.mistertea.android.emu.snes - Patrick: JODA-Time http://www.joda.org/joda-time/
CUDA and OpenCL
History
- GPU: Graphics Processing Unit
- Vertex: A point in a triangle (poly)
- Vertex Shader: Transforms properties of a vertex
- Fragment: A portion of a pixel
- Fragment Shader: Sets the color & alpha of a pixel for a poly.
- GPUs are optimized for performing the same operation on many vertices / fragments.
- GPGPU: General-Purpose Graphics Processing Unit
- Transform input data to images
- Turn off any special effects (fog, lighting, etc.)
- Render exactly one frame
- Read output data from screen
- Both CUDA and OpenCL Relieve the developer from having to know about vertex/fragment shaders & graphics processing.
- Data is organized in n-D arrays
- Can specify read-only (write-once), write-only (read-never), or read-write.
- Can copy data to/from GPU with a familiar interface
- High latency, but can pipeline operations
- The GPU is organized into warps (groups of threads). Each thread in a warp must either perform the same operation or do nothing per cycle. (branching is bad)
- Integer operations are slow, floating point is fast
- Debugging can be a nightmare (but improving)
- Write .h and .cu files (subset of C)
- Compile with nvidia compiler, link with your C++ binary.
- NVIDIA Libraries:
- cuBLAS (CUDA Basic Linear Algebra Subprograms)
- cuFFT (CUDA Fast Fourier Transform)
- Language bindings for many languages (Python, Java, Lua, etc.)
- A standard (like OpenGL) that has CPU and GPU implementations
- Easy to debug on the CPU before running on the GPU
- Not limited to NVIDIA graphics cards (good for distribution)