A variety of programming models relevant to scientists explained, with an emphasis on how programming constructs map to parts of the computer. What makes computer programs fast or slow? To answer this question, we have to get behind the abstractions of programming languages and look at how a computer really works. This book examines and explains a variety of scientific programming models (programming models relevant to scientists) with an emphasis on how programming constructs map to different parts of the computer's architecture. Two themes emerge: program speed and program modularity. Throughout this book, the premise is to "get under the hood," and the discussion is tied to specific programs. The book digs into linkers, compilers, operating systems, and computer architecture to understand how the different parts of the computer interact with programs. It begins with a review of C/C++ and explanations of how libraries, linkers, and Makefiles work. Programming models covered include Pthreads, OpenMP, MPI, TCP/IP, and CUDA.The emphasis on how computers work leads the reader into computer architecture and occasionally into the operating system kernel. The operating system studied is Linux, the preferred platform for scientific computing. Linux is also open source, which allows users to peer into its inner workings. A brief appendix provides a useful table of machines used to time programs. The book's website (https://github.com/divakarvi/bk-spca) has all the programs described in the book as well as a link to the html text.
Finally, the text covers the GPU and machine-learning accelerators that have become increasingly important for mainstream applications.
This is a textbook that teaches the bridging topics between numerical analysis, parallel computing, code performance, large scale applications.
This book concerns software design. Although many current discussions of scientific programming focus on scalable performance, this book focuses on scalable design.
An In-Depth, Practical Guide to GPGPU Programming Using Direct3D 11 GPGPU Programming for Games and Science demonstrates how to achieve the following requirements to tackle practical problems in computer science and software engineering: ...
Written by high performance computing (HPC) experts, Introduction to High Performance Computing for Scientists and Engineers provides a solid introduction to current mainstream computer architecture, dominant parallel programming models, ...
This book comprises the proceedings of the International Federation for Information Processing (IFIP) Conference on the Architecture of Scientific Software, which was held in Ottawa, Canada, in October 2000.
Learn to solve scientific computing problems using Scala and its numerical computing, data processing, concurrency, and plotting libraries About This Book Parallelize your numerical computing code using convenient and safe techniques.
This book contains chapters summarizing the most important topics that computational researchers need to know about.
This book will be a valuable reference for computer architects, programmers, application developers, compiler and system software developers, computer system designers and application developers.
In shaping the current version of this book, a number of goals were set. The first was that the book be independent of any particular computer or programming language, but...