UDN-企业互联网技术人气社区

板块导航

浏览  : 1404
回复  : 0

[其它] Google 云平台: 跟我一步步完成 Pi 的 5000 亿位计算

[复制链接]
钻石女王的头像 楼主
发表于 2016-4-4 15:41:48 | 显示全部楼层 |阅读模式
  3月14日也被称为 Pi Day。为了纪念这个日子,程序员们可以用计算机来计算一下这个无理数。但是想算到 Pi 的第 5000 亿位就不是我们个人的笔记本能够轻易完成的了。下面我们将利用 Google 云平台创建一个 32 核 208GB 内存 8 个 local SSD 的 Linux 实例完成这项工作。

  Google Compute Engine 已经支持 1 个虚拟机上有 8 个 375 GB local SSD 存储,这样我们就有了 3 TB 的 Local SSD 作为交换空间(swap space)!

Screen-Shot-2016-03-14-at-1.52.43-PM.png

  在这个单实例 Google Compute Engine 只要花 44.9 小时就可以完成 5000 亿位 Pi 的计算。

  假设你已经有了 Google 云平台账号并安装了 gcloud 命令(gcloud 命令是与 Google 云平台交互的命令行工具,例如创建磁盘、虚拟机等)。下面请打开你的 terminal ,然后开始一步步执行。

  1. 首先,设置一些变量在后面的命令中使用。
  1. export PROJECT=”YOUR_GCP_PROJECT"
  2. export ZONE="us-central1-c"
  3. export CORES="32"
  4. export OUTPUT_DISK_SIZE="500GB"
  5. export OUTPUT_DISK="out-${CORES}"
  6. export INSTANCE="yc-${CORES}"
复制代码

  这里主要需要你设置一下你的 Google Cloud 项目 ID 和想要使用的 Zone 。

  2. 接下来创建一个磁盘用于保存计算结果(5000亿数字需要占用500GB)
  1. gcloud compute disks create ${OUTPUT_DISK}
  2. --project ${PROJECT}
  3. --zone ${ZONE}
  4. --size ${OUTPUT_DISK_SIZE}
  5. --type pd-ssd
复制代码

  3. 创建一个附带 8个 local SSD 存储的 compute engine 实例
  1. gcloud compute instances create ${INSTANCE}
  2. --project ${PROJECT}
  3. --zone ${ZONE}
  4. --machine-type n1-highmem-${CORES}
  5. --maintenance-policy TERMINATE
  6. --image-project gce-nvme
  7. --image nvme-backports-debian-7-wheezy-v20151104
  8. --local-ssd interface=NVME
  9. --local-ssd interface=NVME
  10. --local-ssd interface=NVME
  11. --local-ssd interface=NVME
  12. --local-ssd interface=NVME
  13. --local-ssd interface=NVME
  14. --local-ssd interface=NVME
  15. --local-ssd interface=NVME
  16. --disk name=${OUTPUT_DISK},device-name=${OUTPUT_DISK}
复制代码

  注意:这一步你会遇到错误,说 32 个 CPU 超过了最大限制。目前每个 Google 云平台项目的每个 Zone 可以使用的默认最大 CPU 总数是 24 个,你可以调整第一步的参数,创建一个 CPU 核数少一点的实例,也可以在 Google Cloud 控制台下,Compute Engine – Quotas 下面申请调大这个限制。一般而言很快获得客服的批准,然后就可以创建 32 核的实例了。

  4. 通过 SSH 登录上一步创建的 Linux 实例。
  1. gcloud compute ssh ${INSTANCE} -zone ${ZONE}
复制代码

  5. 这一步我们要格式化并挂载 8 个 local SSD 和第二步创建的磁盘。
  1. $ sudo su -
  2. $ for i in `seq 0 7`; do
  3.   mkdir /mnt/${i};
  4.   /usr/share/google/safe_format_and_mount
  5.    /dev/disk/by-id/google-local-ssd-${i} /mnt/${i};
  6. done

  7. $ mkdir /mnt/out
  8. $ /usr/share/google/safe_format_and_mount
  9.    /dev/disk/by-id/google-${OUTPUT_DISK}
  10.    /mnt/out
复制代码

  6. 搭好机器后,就是计算本身了。

  请下载最新版 y-cruncher 程序。解压之后进入目录,找到可执行文件 y-cruncher 。然后执行下面的命令就可以开始最终的计算了。
  1. $ export DIGITS=”500000000000"
  2. $ ./y-cruncher custom pi -dec:${DIGITS} -hex:0
  3.   -o /mnt/out -mode:swap -swap:raid0
  4.   /mnt/0 /mnt/1 /mnt/2 /mnt/3 /mnt/4 /mnt/5 /mnt/6 /mnt/7
复制代码

  下面的运行过程的截图,请耐心等待计算结果:)

%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7-2016-03-15-%E4%B8%8B%E5%8D%885.10.41.png

  云计算的好处就是按需使用和付费,CPU、内存、磁盘都可以按需配置,对学生、科研人员和企业都非常方便、经济。

  除了 gcloud 命令行,你还可以在 Google 云平台的 Web 控制台管理和监控资源的使用:

%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7-2016-03-15-%E4%B8%8B%E5%8D%885.10.57.png

英文原文:Calculating and searching 500 billion digits of Pi .
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部