转载

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

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)!

Google 云平台: 跟我一步步完成 Pi 的 5000 亿位计算 在这个单实例 Google Compute Engine 只要花 44.9 小时就可以完成 5000 亿位 Pi 的计算。

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

1. 首先,设置一些变量在后面的命令中使用。

Shell

export PROJECT=”YOUR_GCP_PROJECT" export ZONE="us-central1-c" export CORES="32" export OUTPUT_DISK_SIZE="500GB" export OUTPUT_DISK="out-${CORES}" export INSTANCE="yc-${CORES}"
exportPROJECT=”YOUR_GCP_PROJECT" exportZONE="us-central1-c" exportCORES="32" exportOUTPUT_DISK_SIZE="500GB" exportOUTPUT_DISK="out-${CORES}" exportINSTANCE="yc-${CORES}" 

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

2. 接下来创建一个磁盘用于保存计算结果(5000亿数字需要占用500GB)

Shell

gcloud compute disks create ${OUTPUT_DISK} /  --project ${PROJECT} /  --zone ${ZONE} /  --size ${OUTPUT_DISK_SIZE} /  --type pd-ssd
gcloud compute disks create ${OUTPUT_DISK} /  --project ${PROJECT} /  --zone ${ZONE} /  --size ${OUTPUT_DISK_SIZE} /  --type pd-ssd 

3. 创建一个附带 8个 local SSD 存储的 compute engine 实例

Shell

gcloud compute instances create ${INSTANCE} /  --project ${PROJECT} /  --zone ${ZONE} /  --machine-type n1-highmem-${CORES} /  --maintenance-policy TERMINATE /  --image-project gce-nvme /  --image nvme-backports-debian-7-wheezy-v20151104 /  --local-ssd interface=NVME /  --local-ssd interface=NVME /  --local-ssd interface=NVME /  --local-ssd interface=NVME /  --local-ssd interface=NVME /  --local-ssd interface=NVME /  --local-ssd interface=NVME /  --local-ssd interface=NVME /  --disk name=${OUTPUT_DISK},device-name=${OUTPUT_DISK}
gcloud compute instances create ${INSTANCE} /  --project ${PROJECT} /  --zone ${ZONE} /  --machine-type n1-highmem-${CORES} /  --maintenance-policyTERMINATE /  --image-projectgce-nvme /  --imagenvme-backports-debian-7-wheezy-v20151104 /  --local-ssdinterface=NVME /  --local-ssdinterface=NVME /  --local-ssdinterface=NVME /  --local-ssdinterface=NVME /  --local-ssdinterface=NVME /  --local-ssdinterface=NVME /  --local-ssdinterface=NVME /  --local-ssdinterface=NVME /  --diskname=${OUTPUT_DISK},device-name=${OUTPUT_DISK} 

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

4. 通过 SSH 登录上一步创建的 Linux 实例。

Shell

gcloud compute ssh ${INSTANCE} -zone ${ZONE}
gcloud compute ssh ${INSTANCE} -zone ${ZONE} 

5. 这一步我们要格式化并挂载 8 个 local SSD 和第二步创建的磁盘。

Shell

$ sudo su - $ for i in `seq 0 7`; do /   mkdir /mnt/${i}; /   /usr/share/google/safe_format_and_mount /    /dev/disk/by-id/google-local-ssd-${i} /mnt/${i}; / done  $ mkdir /mnt/out $ /usr/share/google/safe_format_and_mount /    /dev/disk/by-id/google-${OUTPUT_DISK} /    /mnt/out
$ sudosu - $ for i in `seq 0 7`; do /   mkdir /mnt/${i}; /   /usr/share/google/safe_format_and_mount /   /dev/disk/by-id/google-local-ssd-${i} /mnt/${i}; / done   $ mkdir /mnt/out $ /usr/share/google/safe_format_and_mount /   /dev/disk/by-id/google-${OUTPUT_DISK} /   /mnt/out 

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

请下载 最新版 y-cruncher 程序 。解压之后进入目录,找到可执行文件 y-cruncher 。然后执行下面的命令就可以开始最终的计算了。

Shell

$ export DIGITS=”500000000000" $ ./y-cruncher custom pi -dec:${DIGITS} -hex:0 /   -o /mnt/out -mode:swap -swap:raid0 /   /mnt/0 /mnt/1 /mnt/2 /mnt/3 /mnt/4 /mnt/5 /mnt/6 /mnt/7
$ exportDIGITS=”500000000000" $ ./y-crunchercustompi -dec:${DIGITS} -hex:0 /   -o /mnt/out -mode:swap -swap:raid0 /   /mnt/0 /mnt/1 /mnt/2 /mnt/3 /mnt/4 /mnt/5 /mnt/6 /mnt/7 

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

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

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

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

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

英文原文: Calculating and searching 500 billion digits of Pi .

Post Views: 7

除非特别声明,此文章内容采用 知识共享署名 3.0 许可,代码示例采用 Apache 2.0 许可。更多细节请查看我们的 服务条款 。

原文  http://chinagdg.org/2016/03/跟我一步步完成-pi-的-5000-亿位计算/
正文到此结束
Loading...