在集群中运行Gurobi
回答这就跟你问声好!
我正在尝试在集群节点中执行一个Gurobi c++编译文件,但我不知道这是否可能在我尝试的方式。让我来解释一下情况:
1/在一个名为“Example”的文件夹中,我有以下元素:
i) Gurobi示例文件diet_c++.cpp。
ii) gurobi810文件夹(解压gurobi8.1.0_linux64.tar.gz)。我已经从“/opt”复制了这个文件夹,所以我可以使用相对路径编译cpp文件。
2/我用下面的命令编译diet_c++.cpp(在Linux中),它工作完美(编译和执行)
g++ -w -Wall diet_c++.cpp -o executable2 -I。/ gurobi810 / linux64 /包括- l。/ gurobi810 linux64 / lib -lgurobi_g -lgurobi81 + + 5.2
3/现在,我想在集群中执行编译后的文件(executable2),所以我做如下:我移动文件夹“Example”,带有“executable2”和文件夹“gurobi810”,从我的计算机到集群中的用户目录。然后,我尝试执行文件executable2,但我得到以下错误:
./executable2:加载共享库时错误:libgurobi81。所以:不能打开共享对象文件:没有这样的文件或目录
我能做些什么来实现我的目标吗?
提前谢谢!
大卫
-
你好大卫,
要解决共享对象的问题,只要将.so-files所在的路径添加到环境变量LD_LIBRARY_PATH中就足够了,例如:
出口LD_LIBRARY_PATH = $ LD_LIBRARY_PATH: / home /大卫/ gurobi810 / linux64 / lib
(请使用您的实际路径)。如果您的环境与集群的环境差别太大,您可能会遇到其他问题。如果出现问题,最好在集群上重新编译。然后你还可以为集群的cpu优化代码(例如gcc -march=native -O2)。
不过,为了在集群上运行gurobi,你必须考虑其他事情:
首先,如果gubrobi运行的节点不时发生变化,可能会出现许可证问题。这可以通过使用浮动许可证来避免。
其次,同时运行在多个集群节点上与只运行一个节点时,gurobi的使用有很大的不同。当只使用一个集群节点时,您的方法是完全可以的。当您想要使用多个节点时,请查看文档。manbet体育手机客户端(当我上次在集群上解决MIP问题时,使用几个节点对大多数实例并没有真正的帮助,但这可能从那时起就改变了。)
请登录留下评论。
评论
2的评论