
作者:吉安卡洛.扎克尼
页数:262
出版社:东南大学出版社
出版日期:2017
ISBN:9787564170738
电子书格式:pdf/epub/txt
内容简介
对于开发人员而言,如今要想充分利用所有可用的计算资源来构建出高效的软件系统,并行编程技术是必不可少的技能。从多核到GPU系统,再到分布式架构,计算量繁重的程序都离不开编程工具和软件库。本书首先简要介绍了并行编程,然后讲述了Python的基础知识。随后探究了基于线程的并行模型、采用同步线程的Python线程模块以及锁、互斥量、信号量队列、GIL和线程池的用法。
作者简介
Giancarlo Zaccone has more than 10 years of experience in managing research projects,both in scientific and industrial domains. He worked as a researcher at the National Research Council (CNR), where he was involved in a few parallel numerical computing and scientific visualization projects. He currently works as a software engineer at a consulting company, developing and maintaining software systems for space and defense applications. Giancarlo holds a master’s degree in physics from the University of Naples Federico Ⅱ and has completed a second-level postgraduate master’s program in scientific computing from the Sapienza University of Rome.
本书特色
对于开发人员而言,如今要想充分利用所有可用 的计算资源来构建出高效的软件系统,并行编程技术 是必不可少的技能。从多核到GPU系统,再到分布式 架构,计算量繁重的程序都离不开编程工具和软件库 。
吉安卡洛·扎克尼最的《Python并行编程参考手 册》首先简要介绍了并行编程,然后讲述了Python的 基础知识,接着探究了基于线程的并行模型、采用同 步线程的Python线程模块以及锁、互斥量、信号量队 列、GIL和线程池的用法。
目录
Preface
Chapter 1: Getting Started with Parallel Computing and PythonIntroductionThe parallel computing memory architectureMemory organizationParallel programming modelsHow to design a parallel programHow to evaluate the performance of a parallel programIntroducing PythonPython in a parallel worldIntroducing processes and threadsStart working with processes in PythonStart working with threads in Python
Chapter 2: Thread-based ParallelismIntroductionUsing the Python threading moduleHow to define a threadHow to determine the current threadHow to use a thread in a subclassThread synchronization with Lock and RLockThread synchronization with RLockThread synchronization with semaphoresThread synchronization with a conditionThread synchronization with an eventUsing the with statementThread communication using a queueEvaluating the performance of multithread applications
Chapter 3: Process-based ParallelismIntroductionHow to spawn a processHow to name a processHow to run a process in the backgroundHow to kill a processHow to use a process in a subclassHow to exchange objects between processesHow to synchronize processesHow to manage a state between processesHow to use a process poolUsing the mpi4py Python modulePoint-to-point communicationAvoiding deadlock problemsCollective communication using broadcastCollective communication using scatterCollective communication using gatherCollective communication using AIItoallThe reduction operationHow to optimize communication
Chapter 4: Asynchronous ProgrammingIntroductionUsing the concurrent.futures Python modulesEvent loop management with AsyncioHandling coroutines with AsyncioTask manipulation with AsyncioDealing with Asyncio and Futures
Chapter 5: Distributed PythonIntroductionUsing Celery to distribute tasksHow to create a task with CeleryScientific computing with SCOOPHandling map functions with SCOOPRemote Method Invocation with Pyro4Chaining objects with Pyro4Developing a client-server application with Pyro4Communicating sequential processes with PyCSPUsing MapReduce with DiscoA remote procedure call with RPyC
Chapter 6: GPU Programming with PythonIntroductionUsing the PyCUDA moduleHow to build a PyCUDA applicationUnderstanding the PyCUDA memory model with matrix manipulationKernel invocations with GPUArrayEvaluating element-wise expressions with PyCUDAThe MapReduce operation with PyCUDAGPU programming with NumbaProUsing GPU-accelerated libraries with NumbaProUsing the PyOpenCL moduleHow to build a PyOpenCL applicationEvaluating element-wise expressions with PyOpenCITesting your GPU application with PyOpenCL
Index















