首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何优化用于LSF的多线程程序?

如何优化用于LSF的多线程程序?
EN

Stack Overflow用户
提问于 2015-10-03 14:03:16
回答 1查看 762关注 0票数 2

我正在开发一个多线程的数字处理应用程序,让我们称之为myprogram。我计划在IBM的LSF网格上运行myprogram。LSF允许在不同机器的CPU上调度作业。例如,bsub -n 3 ... myprogram ...可以从node1分配两个CPU,从node2分配一个CPU。

我知道我可以要求LSF在同一个节点中分配所有3个核心,但我对我的工作被调度到不同节点的情况很感兴趣。

  1. LSF是如何管理这个的?myprogram会在node1和node2中的两个不同进程中运行吗?
  2. 是否自动管理node1和node2之间的数据传输?
  3. 我可以在myprogram中做些什么来使LSF更容易管理?我应该使用任何LSF库吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 11:30:59

对Q1的回答

当您提交像bsub -n 3 myprogram这样的作业时,LSF所做的就是在1-3个主机上分配3个插槽。其中一个主机将被指定为“第一个执行主机”,而LSF将在该主机上调度和运行一个myprogram实例。

如果您想并行地运行myprogram,LSF有一个名为blaunch的命令,它本质上将启动每个分配的核心程序的一个实例。例如,像bsub -n 3 blaunch myprogram一样提交作业将运行3个myprogram实例。

对Q2的回答

所谓“管理数据传输”,我假设您指的是myprogram实例之间的通信。答案是否定的,LSF是一个调度和调度工具。它所做的只是分配和调度,但它不知道调度程序正在做什么。blaunch反过来只是一个任务启动程序,它只是启动一个任务的多个实例。

这里需要的是某种类似MPI的并行编程框架(例如,请参阅www.openmpi.org)。这提供了一组API和命令,允许您以并行方式编写myprogram

一旦您这样做并将您的程序提交给mympiprogram,您就可以像bsub -n 3 mpirun mympiprogram一样将其提交给LSF。mpirun工具--至少在OpenMPI (和其他一些情况下)--与LSF集成,并使用遮罩下的blaunch接口为您启动任务。

对Q3的回答

您不需要在程序中使用LSF库来使LSF变得更容易,就像我说的,程序内部所发生的事情对系统是透明的。LSF库只允许您的程序成为LSF系统的客户端(提交作业、查询等)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32923464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档