使用pythonboto和EC2来bru

2024-06-07 21:30:02 发布

您现在位置:Python中文网/ 问答频道 /正文

作为练习,我想用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通过以下方式获得:

^{3}$

对于所有小计来说,这是一个很难解决的问题,这就是为什么我想借此机会学习如何使用EC2对其进行暴力破解,因为我可以重用它来做蒙特卡洛模拟。在

我找到了很多关于如何连接和存储数据的教程,但是我没有看到任何关于分布式计算的东西,对于新手来说是可以理解的。在


Tags: 数据路径列表方式教程科学ec2boto
2条回答

您可能只需将案例分解为单独的数组,然后在不同的机器上运行每组案例。这就是我用我的飞行模拟器代码做的。在我的地下室里有两台电脑,我可以远程进入。我在主桌面上运行三分之一的案例,在地下室的每台电脑上运行三分之一。您可以同时运行不同的实例来增加给定机器上的吞吐量。编写使用GPU内核的代码是下一个层次(我还没有到那里)。如果你真的想成为一个蒙特卡洛的神,那可能是正确的道路。。在

下面是一个简单的Python强制组合解决方案。在

index_save = index
for input1 in [0.1,0.2,0.3,...]
    for input2 in [10,20,30,...]
        for input3 in [-0.1,-0.2,-0.3,...]
            index = index_save  #To reset the index and thus all arrays
            while True:
                index = index + 1
                f[index] = *Function of inputs*
                result = *Function of f and inputs*
                if condition_met = true
                    break
            if result > result_best
                result_best = result # Save optimal result
                inputs_best = [input1,input2,input3] # Save optimal input case

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集群并等待结果。在

希望这有帮助。在

相关问题 更多 >

    热门问题