



Ray Tracing
Introduction In 3D graphics programming, Ray tracing is the future. A lighting technique that brings an extra level of realism to games. It emulates the way light reflects and refracts in the real world, providing a more believable environment than what’s typically seen using rasterization in most games today.In this series of blogs, I would write a simple ray tracer to demonstrate the concepts of Ray tracing.We will start by...

GPU Speedup
Introduction In our last blog, Concurrency and Parallelism, we demonstrated the speedup for large operations through an example of initializing a two dimension array with concurrency and limited use of parallelism trough the multiple cores of a CPU. In this blog we will move the entire operation to the GPU and utilize its tremendous power of parallelism. GPU A form of parallelism known as single instruction multiple data (SIMD) refers...

Concurrency and Parallelism
Introduction The need for concurrency and parallelism today in our applications is a must for responsiveness. Multicore CPU’s and GPU’s which allow parallelism to be executed effectively are commonplace now. Before talking about parallelism and concurrency we need to define what is a process. A process is an application in action with its own dedicated memory address space. A thread is a light weight process which has its own stack...

Variables
Introduction Computer Architecture has gone through enormous changes in the past 50 years but one element remained unchanged, the Von Neumann concept of computer design. Its ability to treat instructions as data is what makes assemblers, compilers, linkers, loaders, and other automated programming tools possible. It makes "programs that write programs" possible. This has made a sophisticated self-hosting computing ecosystem flourish around von Neumann architecture machines. We will focus on...
GENERAL

Ray Tracing
Introduction Computer Architecture has gone through enormous changes in the past 50 years but one element remained unchanged, the Von Neumann concept of computer design. Its ability to treat instructions as data is what makes assemblers, compilers, linkers, loaders, and other automated programming tools possible. It makes "programs that write programs" possible. This has made... see more