1

在这方面更复杂的问题已经在其他地方提出并得到了回答:这个问题可能太微不足道而无法提出。在集群中,我有一个程序编译并链接到 /usr/local/lib 中头节点上的共享 boost 库,这个 boost 版本比集群发行版中可用的版本更新。该程序在头节点上运行良好,因为我导出了 LD_LIBRARY_PATH。如果我尝试使用扭矩调度程序运行它,则库在计算节点上不可用,从而产生“加载共享库时出错......”。除了将 boost 重建为静态库并以这种方式链接程序之外,是否有一种简单的方法可以使这些库对所有节点都可用?只需在作业脚本中导出路径,即

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

不起作用,因为显然计算节点上不存在路径。这似乎是一个愚蠢的问题,但是让所有计算节点都可以使用头节点上的本地对象的最简单方法是什么?

4

1 回答 1

1

人们这样做的最常见方式是在计算节点上安装库。有时这意味着将其安装在节点的子集上,用功能标记这些节点,然后要求特定作业将使用该功能的节点。其他时候它会在任何地方安装库,这样您就不必担心它,但这些是解决这个问题的最常见方法。

如果版本控制在计算节点上难以管理,那么将库静态编译到您的程序中可能是您​​唯一的选择。

于 2014-02-21T17:46:26.393 回答