Week 4 Reflection
I spent most of this week trying to get a better understanding of CUDA. CUDA is a platform that is used to perform computations on NVIDIA GPUs. CUDA allows a programmer to utilize the many cores that are inside a GPU. GPUs are built for parallel computing. Therefore, there is a good chance that algorithms executed on the GPU may have a faster runtime than that of performing on the CPU.
There are some aspects of GPU computing that I do not fully understand yet. The architecture of GPU computation includes Blocks, which in turn contains Threads. Threads can be used in computations. Multiple threads can be launched at once - this is the concept of parallelism. This enables us to run multiple processes at once.Wrapping my head around this concept is harder than it seems. There are a lot of decisions that I need to make, for example, how many threads do I need to launch, when I should launch Blocks and when I should launch threads.
To be honest, I look at these struggles as a learning opportunity. Even though it seems difficult, it is I who will gain the most. I think the harder the task, the better it is for me. I look at difficult tasks as an opportunity for personal development. I, as a person, find a lot of value in self-development. I believe that through hard work and dedication a person can achieve something beautiful. This week has been great. I look forward to the challenges next week will bring.