他们到底是怎么想象那些神奇的并行算法会有用的?并行只对图形计算和服务器有意义,我们在很多领域都有应用。Python中科学计算经常用到的一些模块和软件包有:numpy:Python Python中最常用的数值计算库,它提供了一个通用而强大的高维数组结构和大量的科学计算函数(相当一部分与scipy相交),是Python中几乎所有其他科学计算库的基础。

大数据的核心算法有哪些

大数据的核心算法有哪些

算法是指一切经过明确定义的计算过程,其将某个或者某组值作为输入内容,并产生某个或者某组值作为输出结果。简单的说,我们可以将算法视为一系列用于解决某个任务的步骤。大数据领域常用的算法有:CART算法、K-Means算法、AdaBoost算法、C4.5算法、PageRank算法、Apriori算法、EM算法、SVM算法、朴素贝叶斯算法等。

python有什么在物理计算中常用的包?

python有什么在物理计算中常用的包

用 Python 做科学计算经常会用到的一些模块和软件包有:numpy: Python 中最常用的数值计算库,提供了一个通用且功能强大的高维数组结构及大量的科学计算函数(其中相当一部分和 scipy 有交叉),是 Python 中几乎所有其他科学计算库的基础。scipy: 在 numpy 的基础上提供了科学计算中各种常见问题的解决工具,包括数学物理中的各种特殊函数,数值积分,优化,插值,傅立叶变换,线性代数,信号处理,图像处理,随机数和概率分布,统计学等等。

sympy: Python 中的符号计算库,支持符号计算、高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散数学、几何学、概率与统计、物理学等方面的功能,能在很大程度上代替 Mathematica 和 Matlab 的符号计算功能。Ipython: 一个 Python 的交互式开发和计算环境,比 Python 自带的 shell 好用且功能强大得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许多很有用的功能和函数。

IPython notebook 可以将代码、图像、注释、公式和作图集于一体,已经成为用 Python 做教学、计算、科研的一个重要工具。matplotlb: Python 做科学计算最常用和最重要的画图和数据可视化工具包。h5py: 用 Python 操作 HDF5 格式数据的工具。HDF5 是一个应用广泛的科学数据存储格式,拥有一系列的优异特性,如支持非常多的数据类型,灵活,通用,跨平台,可扩展,高效的 I/O 性能,支持几乎无限量(高达 EB)的单文件存储等。

pandas: Python 中常用的数据分析包,适合时间序列及金融数据分析。emcee: Python 实现的马尔可夫链蒙特卡洛(MCMC)库。pymc: 另一个实现贝叶斯统计模型和马尔科夫链蒙塔卡洛采样的工具。近些年 Python 在高性能计算领域的应用也越来越广泛,用 Python 做并行计算也是一个不错的选择,既简单易用,又能在很多时候媲美 C、C 和 Fortran 的执行性能。

用 Python 做并行计算的途径有很多,比如说使用标准库中的 [threading 模块](https://docs.python.org/2/library/threading.html)进行线程级别的并行,[multiprocessing 模块](https://docs.python.org/2/library/multiprocessing.html)进行进程级别的并行,[concurrent.futures 模块](https://docs.python.org/3/library/concurrent.futures.html)实现异步并行,使用 [IPython.parallel 模块](https://ipython.org/ipython-doc/3/parallel/index.html)进行多种方式的并行,使用 [mpi4py 包](https://pypi.org/project/mpi4py/)进行 MPI 消息传递并行计算,等等。

如果可以使用 C/C ,Fortran 或者使用 cython 为 Python 编写扩展模块,还可以使用 OpenMP 并行。对 GPU 编程则可以使用 [pyCUDA](https://documen.tician.de/pycuda/)。我的个人[简书专题](https://www.jianshu.com/c/5019bb7bada6)和 [CSDN 博客专栏](https://blog.csdn.net/column/details/26248.html)中有对用 Python 做并行计算的专门介绍并提供了大量的程序实例。

如何评价Linux之父Linus认为并行计算基本上就是浪费大家的时间?

如何评价Linux之父Linus认为并行计算基本上就是浪费大家的时间

原文:并行计算有什么好的?硬件的性能无法永远提升,当前的趋势实际上趋于降低功耗。那么推广并行技术这个灵丹妙药又有什么好处呢?我们已经知道适当的乱序CPU是必要的,因为人们需要合理的性能,并且乱序执行已被证明比顺序执行效率更高。推崇所谓的“并行”极大地浪费了大家的时间。“并行更高效”的高大上理念纯粹是扯淡。

大容量缓存可以提高效率。在一些没有附带缓存的微内核上搞并行毫无意义,除非是针对大量的规则运算(比如图形处理)。没人会回到从前了。那些复杂的乱序运行内核不会消失。扩展不会一直进行下去,人们需要的是移动性,因此那些主张扩展至上百内核的都是疯子,不要鸟他们。他们究竟是如何幻想那些神奇的并行算法会有用武之地的呢?并行只有对图形计算和服务器有意义,而在这些领域我们已经大量应用并行了。

把并行推广到其他的领域没有意义。所以说忘记并行吧。它不会到来的。4个左右的内核对终端用户来说没有问题,在移动领域里,不大幅增加能耗的情况下,你没办法再塞进更多的核。任何一个理智的人都不会为了要塞入更多的内核而阉割内核以降低其大小和性能,阉割内核的唯一理由是你想进一步降低功耗,因此你还是不会得到大量的核。

所以争论要不要关注程序的并行性是一种谬误,它的前提条件都是错误的。只是一个早就该过时的时髦名词。并行程序在上面提到的一些地方是有用的,并且已经被广泛使用。比如在服务器领域,人们并行了很多年。在其他领域,并行是没有必要的,甚至在未来的一些未知领域,因为你做不到。如果你想做低功耗通用计算机视觉,我基本可以保证你不会用通用图形处理器(GP CPU)。


文章TAG:并行算法  并行  大规模  计算  
下一篇