网格引擎集群+OpenCV:奇怪的行为

Grid engine cluster + OpenCV: strange behaviour

本文关键字:引擎 +OpenCV 网格      更新时间:2023-10-16

我使用网格引擎集群来运行一些OpenCV代码。当代码在本地执行时运行良好,但当提交到网格时,它不起作用。我在这里提取了一个最小的例子。

在目录~/code/中,我有一个文件test.cpp,其中包含以下代码:

#include <opencv2/core.hpp>
#include <iterator>
#include <string>
#include <sys/types.h>
#include <sys/stat.h>
using namespace cv;
using namespace std;

int main(int ac, char** av)
{    
    /// Create a random matrix
    Mat M;
    /// Create a subfolder
    string folderName = "sub/";
    mkdir(folderName.c_str(),0777);
    return 0;
}

代码编译时没有出现错误。

在本地执行时,即

username@machine:~/code$ ./test

它按预期创建了一个子文件夹,即~/code/sub

为了提交到网格,我在包含的主目录(即~/job.sh)中创建了一个作业脚本job.sh

cd code/
./test

然后使用提交

qsub job.sh

什么也没发生。(没有错误)。

但是,当我删除该行时

Mat M;

它确实按预期创建了文件夹

造成这种行为的可能原因是什么?我在想OpenCV的共享库没有安装在网格的其他计算机上,但我不确定,也不知道如何验证。

提前感谢您的任何建议。

库需要可供队列中要向其提交作业的所有执行节点访问。如果执行节点可以访问共享位置,例如NFS装载,则可以在那里安装库。否则,您需要在所有执行节点上安装所需的库。关于SET_LIB_PATH:的附加链接

blogs.oracle.com/templedf/entry/heriting_job_environment

虽然这将有助于指向正确的位置,但库仍然需要是可访问的