Software, Environments, and Tools - Böcker
Visar alla böcker i serien Software, Environments, and Tools. Handla med fri frakt och snabb leverans.
4 produkter
4 produkter
Bits and Bugs
A Scientific and Historical Review of Software Failures in Computational Science
Häftad, Engelska, 2019
530 kr
Skickas inom 7-10 vardagar
In scientific computing (also known as computational science), advanced computing capabilities are used to solve complex problems. This self-contained book describes and analyzes reported software failures related to the major topics within scientific computing: mathematical modeling of phenomena; numerical analysis (number representation, rounding, conditioning); mathematical aspects and complexity of algorithms, systems, or software; concurrent computing (parallelization, scheduling, synchronization); and numerical data (such as input of data and design of control logic).Readers will find lists of related, interesting bugs, MATLAB examples, and ""excursions"" that provide necessary background, as well as an in-depth analysis of various aspects of the selected bugs. Illustrative examples of numerical principles such as machine numbers, rounding errors, condition numbers, and complexity are also included.This book is intended for students, teachers, and researchers in scientific computing, computer science, and applied mathematics. It is also an entertaining and motivating introduction for those with a minimum background in mathematics or computer science. Bits and Bugs can be used for courses in numerical analysis, numerical methods in linear algebra/ODEs/PDEs, introductory software engineering, introductory scientific computing, and parallel programming.
1 040 kr
Skickas inom 7-10 vardagar
Based on a course developed by the author, Introduction to High Performance Scientific Computing introduces methods for adding parallelism to numerical methods for solving differential equations. It contains exercises and programming projects that facilitate learning as well as examples and discussions based on the C programming language, with additional comments for those already familiar with C . The text provides an overview of concepts and algorithmic techniques for modern scientific computing and is divided into six self-contained parts that can be assembled in any order to create an introductory course using available computer hardware.Part I introduces the C programming language for those not already familiar with programming in a compiled language. Part II describes parallelism on shared memory architectures using OpenMP. Part III details parallelism on computer clusters using MPI for coordinating a computation. Part IV demonstrates the use of graphical programming units (GPUs) to solve problems using the CUDA language for NVIDIA graphics cards. Part V addresses programming on GPUs for non-NVIDIA graphics cards using the OpenCL framework. Finally, Part VI contains a brief discussion of numerical methods and applications, giving the reader an opportunity to test the methods on typical computing problems. Introduction to High Performance Scientific Computing is intended for advanced undergraduate or beginning graduate students who have limited exposure to programming or parallel programming concepts. Extensive knowledge of numerical methods is not assumed. The material can be adapted to the available computational hardware, from OpenMP on simple laptops or desktops to MPI on computer clusters or CUDA and OpenCL for computers containing NVIDIA or other graphics cards. Experienced programmers unfamiliar with parallel programming will benefit from comparing the various methods to determine the type of parallel programming best suited for their application. The book can be used for courses on parallel scientific computing, high performance computing, and numerical methods for parallel computing.
1 092 kr
Skickas inom 7-10 vardagar
The Portable, Extensible Toolkit for Scientific Computation (PETSc) is an open-source library of advanced data structures and methods for solving linear and nonlinear equations and for managing discretizations. This book uses these modern numerical tools to demonstrate how to solve nonlinear partial differential equations (PDEs) in parallel. It starts from key mathematical concepts, such as Krylov space methods, preconditioning, multigrid, and Newton’s method. In PETSc these components are composed at run time into fast solvers.Discretizations are introduced from the beginning, with an emphasis on finite difference and finite element methodologies. The example C programs of the first 12 chapters, listed on the inside front cover, solve (mostly) elliptic and parabolic PDE problems. Discretization leads to large, sparse, and generally nonlinear systems of algebraic equations. For such problems, mathematical solver concepts are explained and illustrated through the examples, with sufficient context to speed further development. PETSc for Partial Differential Equations addresses both discretizations and fast solvers for PDEs, emphasizing practice more than theory. Well-structured examples lead to run-time choices that result in high solver performance and parallel scalability. The last two chapters build on the reader’s understanding of fast solver concepts when applying the Firedrake Python finite element solver library. This textbook, the first to cover PETSc programming for nonlinear PDEs, provides an on-ramp for graduate students and researchers to a major area of high-performance computing for science and engineering. It is suitable as a supplement for courses in scientific computing or numerical methods for differential equations.
1 001 kr
Skickas inom 7-10 vardagar
If you have a basic knowledge of C and want to deepen your understanding, specifically for use in scientific computing, this unique book is for you. Scientific Computing in Modern C is the first book to discuss scientific computing from a software perspective. It covers a broad range of topics – the finer points of C , specific idioms of C in scientific computing, parallelism, “carpentry” topics such as cmake, and hardware and performance – that fall outside of programming but make a programmer more productive.