代码之家  ›  专栏  ›  技术社区  ›  ggkmath

在internet用户可访问的服务器上加速科学计算的方法

  •  2
  • ggkmath  · 技术社区  · 14 年前

    我对如何处理以下问题的任何传统观点都感兴趣。请注意,我是一个硬件的家伙,所以小心使用行业知识/术语/缩写词。

    我不是在寻找关于如何构造程序的建议(例如,尽可能使用整数数据类型而不是浮动数据类型,使用较小的数组等等),而是感兴趣的是,一旦程序完成,可以做些什么来进一步加快速度。

    或者,如何进行并行处理(在多个核心和/或机器之间中断以进行循环)?

    实际的 非常感谢您的建议。我肯定我不是第一个需要这个的人,所以我希望有行业最佳实践方法可以满足需求。

    提前谢谢!

    2 回复  |  直到 12 年前
        1
  •  4
  •   Alexandre C.    14 年前

    FFT方法具有高度的并行性。尤其是在多维方面。

    经典的实现是 FFTW Intel MKL

    一种方法(取决于可用硬件)是工作线程池(或进程,取决于配置)。

    根据硬件(巨大的SMP计算机或PC场),问题是不同的。

    您可能需要考虑OpenMP来自动并行循环。至于PC农场,从灵活性的角度来看,它们比大型计算器更具优势:它们的可扩展性好,成本不高,而且可以高效地购买/出售/再利用。Linux可能是一个不错的选择,但这取决于您对哪个环境感到满意。

    遗憾的是,据我所知,没有好的库可以在PC农场上可靠高效地分发计算请求。这个问题很难解决,因为你必须考虑故障,网络通信,拥塞,分配过程。。。

        2
  •  1
  •   Jaydee    14 年前

    您没有说明您的设置是什么(java、php、.net您将托管系统还是托管在某个地方),因此这只是一些即兴的想法:

    据我所知,您可能使用的大多数现代系统都会将作业分布在可用的处理器内核上。

    通过负载平衡,可以相对容易地将工作负载分散到多个服务器上 http://www.loadbalancing.org/

    http://aws.amazon.com/ec2/

    其他供应商也可提供。

    我敢肯定,如果你提供更多的细节,你会得到一些更具体的答案。