CUDA for Engineers: An Introduction to High-Performance Parallel Computing