原标题:【Nature文章摘录】NumPy: 从单机到分布式并行计算

点击上图,查看详情

本公众号的推送以互联网大数据技术为主,是《互联网大数据处理技术与应用》《Python爬虫大数据采集与挖掘》等课程的配套号。内容涉及 大数据采集、存储、分析挖掘的模型算法、隐私等技术问题,其特色为原创性、技术性。

NumPy开发团队在 Nature 上发表了 Review文章(Array programming with NumPy, 2020.9.16),详细介绍了使用 NumPy 的数组编程。本文对其中主要内容进行了摘录和翻译,主要包括Numpy的基本计算原理和NumPy对分布式并行计算的支持。

1、Numpy的基本计算原理

数组编程(array programming)为以向量、矩阵和高维数组的方式访问、操作和操作数据提供强大的语法。NumPy是Python语言的主要数组编程库,在物理、化学、天文学、心理学、工程、金融和经济等领域的研究分析中发挥着重要作用。本文回顾了一些基本的数组概念,以及如何形成一个简单而强大的编程范式来组织、探索和分析科学数据。

Numpy的生态

NumPy数组是一种能够高效存储和访问多维数组(也称为张量)的数据结构,并支持各种科学计算。它能够运行在从嵌入式设备到超级计算机各种设备上,性能接近编译语言。基本的概念包括 数据结构、索引(切片)、向量化、广播和规约。

2、NumPy对分布式并行计算的支持

现在各种大数据集规模都很大,超过一台机器的存储容量,需要存储在多台机器上或云中。同时由于需要加速深度学习和人工智能应用,出现了各种专门的加速器硬件,如图形处理单元(GPU)、张量处理单元(TPU)和现场可编程门阵列(FPGA)。由于其内存数据模型,NumPy目前无法直接利用此类专用硬件。然而,无论是分布式数据还是GPU、TPU、FPGA的并行执行方式都很符合数组编程范式。不管怎样,现代硬件体系结构与利用其计算能力所需的工具之间存在差距。

目前,在缩短这一差距方面所做的努力有,包括 GPU数组、稀疏数组和分布式数组。每个深度学习框架创建了它们自己的数组:PyTorch38、Tensorflow39、Apache MXNet40和JAX数组都能够以分布式方式在CPU和GPU上运行,使用延迟求值来允许额外的性能优化。SciPy和PyData/Sparse都提供稀疏数组,这些数组通常包含很少的非零值,为了提高效率,它们只存储在内存中。此外,还有一些项目如Dask实现了分布式数组。但不管是哪种方式,他们通常会为开发人员提供类似于Numpy的数组表示、操作和API,以便开发人员能更快地适应。

为此,为了支持这些外部数组对象之间的数组操作,NumPy添加了中央协调机制及其API的功能,使得 NumPy数组、GPU数组、分布式数组等之间可以进行切换。这样用户就只需要编写一次代码。为了实现这种互操作性,NumPy提供了一种“协议”,允许将专门的数组传递给NumPy函数(图)。反过来,NumPy根据需要将操作分派到原始库。包括Dask、CuPy、xarray和PyData/Sparse在内的流行库都实现了这些协议。因此,用户现在可以使用Dask将他们的计算从单机扩展到分布式系统。通过这些协议,也 允许用户在分布式、多GPU系统上大规模地重新部署NumPy代码。使用NumPy的高层API,用户可以在具有数百万核的多个系统上利用高度并行的代码执行,所有这些操作都只需进行最小的代码更改。

【1】《Python爬虫大数据采集与挖掘》(清华大学出版社,2020)一书,配备教学PPT、案例和代码、讲解视频,实践性强,是学生非常喜欢的课程,是大数据教学和研究必不可少的第一个环节。欢迎选做大数据相关专业的教材。()

【2】《互联网大数据处理技术与应用》(清华大学出版社,2017),互联网大数据的开放性更好、具备大数据的各种典型特征,是学习大数据技术最好的切入点。本书包含了互联网大数据采集、信息提取技术、非结构数据的结构化、大数据语义技术、分析模型算法、大数据隐私保护等。()

提供300分钟视频讲解,教学大纲、课件、教案、习题答案、程序源码等配套资源。

扫码,优惠购书

凡是在京东购书的用户,可以将订单信息和评价发到itbook8@163.com,将会获取超值大礼包(包括案例源码,超多的视频教程,数据集等资源)返回搜狐,查看更多

责任编辑:

python并行计算numpy_【Nature文章摘录】NumPy: 从单机到分布式并行计算相关推荐

  1. python的1000+篇文章总结

    python的1000+篇文章总结 本文收集和总结了有关python的1000+篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:http://www.ai2news.com/, 其分享 ...

  2. Python爱好者社区历史文章列表(每周append更新一次)

    2月22日更新:   0.Python从零开始系列连载: Python从零开始系列连载(1)--安装环境 Python从零开始系列连载(2)--jupyter的常用操作 Python从零开始系列连载( ...

  3. 本周AI热点回顾:王者荣耀AI绝悟完全体开启,英雄随便选;2张图片就能「算出」一段视频;Nature文章明年起可免费下载

    点击左上方蓝字关注我们 01 王者荣耀AI绝悟完全体对战开启:英雄随便选,论文已被NeurIPS收录 人工智能 2 级就来越塔来杀我,这游戏怎么玩? 还记得今年五一假期时,腾讯在王者荣耀游戏中上线的绝 ...

  4. Python爱好者社区历史文章列表(1)

    2019独角兽企业重金招聘Python工程师标准>>> https://mp.weixin.qq.com/s?__biz=MzI5NDY1MjQzNA==&mid=22474 ...

  5. python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value)

    python编写自定义函数计算一维numpy数组中与指定目标数值最接近(距离最近)的数值(find closest value in numpy array to a certain value) 目 ...

  6. python使用np.argsort对一维numpy概率值数据排序获取倒序索引、获取的top索引(例如top2、top5、top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据

    python使用np.argsort对一维numpy概率值数据排序获取倒序索引.获取的top索引(例如top2.top5.top10)索引二维numpy数组中对应的原始数据:原始数据概率最大的头部数据 ...

  7. python使用np.argsort对一维numpy概率值数据排序获取升序索引、获取的top索引(例如top2、top5、top10)索引二维numpy数组中对应的原始数据:原始数据概率最小的头部数据

    python使用np.argsort对一维numpy概率值数据排序获取升序索引.获取的top索引(例如top2.top5.top10)索引二维numpy数组中对应的原始数据:原始数据概率最小的头部数据 ...

  8. pyhton 安装pip 以及 numpy (解决python:ModuleNotFoundError:No module named numpy 等类似缺包问题

    https://blog.csdn.net/phs999/article/details/79218869 pyhton 安装pip 以及 numpy (解决python:ModuleNotFound ...

  9. Python + Selenium 自动发布文章(二):简书

    Python + Selenium 自动发布文章系列: Python + Selenium 自动发布文章(一):开源中国 Python + Selenium 自动发布文章(二):简书 Python + ...

最新文章

  1. Word中大括号内公式如何左对齐
  2. php页面空白如何解决,php页面空白怎么回事 php出现空白页的解决方法
  3. DotNetMagic 5.4.0破解
  4. CentOS6.5安装ElasticSearch6.2.3
  5. java中的map是什么_转载java中Map的详解
  6. 使用static代码块实现线程安全的单例设计模式
  7. 01-BIO通讯模型
  8. linux文件管理课程设计,操作系统原理课程设计-Linux文件管理系统的仿真.doc
  9. 谷歌了java集成开发_Spring整合Kaptcha谷歌验证码工具的开发步骤
  10. 哨兵系列卫星_空客“哥白尼哨兵1C”卫星雷达天线首次展开双翼
  11. 使用css修改input的文字提示语颜色
  12. 欢迎关注个人微信公众账号~
  13. oracle存储过程无效字符_ORA-20003 , procedure存储过程失效问题
  14. 流媒体直播点播系统方案设计
  15. 2021龙川隆师中学高考成绩查询入口,2021年河源中考成绩和分数线什么时候公布(附查询入口)...
  16. 09-01 面向对象编程
  17. vue项目国际化 vue-i18n以及踩坑解决 小姐姐手把手教你VUE国际化~
  18. HTML CSS制作
  19. 计算机图形学 学习笔记(一):概述,直线扫描转换算法:DDA,中点画线算法,Bresenham算法
  20. Hey.com:如果你没有观点,你就不值得关注

热门文章

  1. iOS APP 安全测试
  2. linux gdb使用
  3. WinSCP实现Ubuntu与 Windows 文件共享方法
  4. Oracle 11gR2 RAC恢复OCR和VOTE DISK
  5. 不被重视的基础,高效地使用ADO.net连接对象
  6. 动态加载JS脚本【转】
  7. How to uninstall Internet Explorer 7
  8. 对食材的敬畏之心极致产品_这些数据科学产品组合将给您带来敬畏和启发(2020年中的版本)
  9. leetcode 523. 连续的子数组和
  10. 如何选择正确的容器编排以及如何进行部署