作为练习,我想用EC2/python boto做一些科学的计算和蒙特卡罗模拟。在
例如,假设我有一些小计,比如:
a = [53067,
45412,
35238,
34972,
31551,
29258,
28550,
28044,
25485,
21905,
21597,
21403,
20536,
20013,
18338,
17832,
17186,
16416,
14682,
14595]
然后是一个锯齿状的值列表,表示每月的数据(12个月,每月20个值):
^{pr2}$我想用boto强行解决以下问题:对于a
的每个值,找到一条经过月份的路径,该路径将给出a
中的小计。在
例如,第一个值53067
通过以下方式获得:
对于所有小计来说,这是一个很难解决的问题,这就是为什么我想借此机会学习如何使用EC2对其进行暴力破解,因为我可以重用它来做蒙特卡洛模拟。在
我找到了很多关于如何连接和存储数据的教程,但是我没有看到任何关于分布式计算的东西,对于新手来说是可以理解的。在
您可能只需将案例分解为单独的数组,然后在不同的机器上运行每组案例。这就是我用我的飞行模拟器代码做的。在我的地下室里有两台电脑,我可以远程进入。我在主桌面上运行三分之一的案例,在地下室的每台电脑上运行三分之一。您可以同时运行不同的实例来增加给定机器上的吞吐量。编写使用GPU内核的代码是下一个层次(我还没有到那里)。如果你真的想成为一个蒙特卡洛的神,那可能是正确的道路。。在
下面是一个简单的Python强制组合解决方案。在
How to use nested for loops for brute forcing combinations - Python
您可能希望使用EMR(弹性映射减少)来运行计算(本质上是hadoop)。如果作业需要大量的处理能力,可以使用boto创建相当大的集群。在
然后可以用python编写作业(假设您使用的是python)。关于如何用python编写map reduce作业,有很多教程。例如:http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/
之后,您可以将python作业发送到刚刚创建的EMR集群并等待结果。在
希望这有帮助。在
相关问题 更多 >
编程相关推荐