The book provides theoretical and hands-on knowledge for embedded high-performance computing. Advancements in the hardware and architecture technology have necessitated the need to study embedded parallel systems. Systems such as field-programmable gate arrays (FPGAs), Xilinix, and graphics processing units (GPUs) have been increasingly used for the parallel execution of complex programs and algorithms. The book is motivated by the need to impart and strengthen related concepts.
While there are several books on the given subject, the one in consideration is comparatively more focused on both theoretical as well as hands-on concepts. Further, concepts such as task division, heterogeneity, instrumentation, and code analysis are covered in detail. The strongest part of the book is its inclusion of examples and code snippets from MATLAB and C, and these are aided by theoretical explanations as well as illustrations. Each chapter has an introduction and summary, which makes it easy to read individual chapters and follow each one of them in detail. The book covers many topics, and the chapters can be read either individually or in continuation.
Technically, the book includes many fundamental topics such as Flynn’s taxonomy, Amdahl’s law, architecture details, and cache usage. It also sufficiently covers programming concepts such as loops, optimization techniques, and sorting. In addition, many advanced topics such as code analysis and code synthesis are included. Shared memory systems are covered through OpenMP and GPU (OpenCL), whereas distributed memory is explained through the message passing interface (MPI). The book is focused on breadth of knowledge. This makes it a useful resource for related undergraduate and introductory graduate courses. For a large part, the book can also be utilized as a reference book for courses on parallel and high-performance computing. Programming examples make it beneficial for developers and industry practitioners who are beginners in the field. Students may also find the book useful in understanding the benefits of parallelism.
I enjoyed reading the book and believe it is a useful resource for the community.