在 COMPAS 中定义的任务中找不到文件
File not found in task defined in COMPSs
我已经使用 COMP Superscalar 实现了一个应用程序,但任务失败了。查看标准错误文件 (job1_NEW.err) 文件时,我遇到了“未找到文件”异常,但该文件存在于我的计算机中。
知道可能是什么错误吗?
编辑:添加了资源和项目文件
Resources.xml
<Resource Name="172.16.8.2">
<Capabilities>
<Host>
<TaskCount>0</TaskCount>
<Queue>short</Queue>
<Queue/>
</Host>
<Processor>
<Architecture>x86_64</Architecture>
<Speed>3.0</Speed>
<CoreCount>4</CoreCount>
</Processor>
<OS>
<OSType>Linux</OSType>
<MaxProcessesPerUser>32</MaxProcessesPerUser>
</OS>
<StorageElement>
<Size>8</Size>
</StorageElement>
<Memory>
<PhysicalSize>4</PhysicalSize>
<VirtualSize>8</VirtualSize>
</Memory>
<ApplicationSoftware>
<Software>Java</Software>
</ApplicationSoftware>
<Service/>
<VO/>
<Cluster/>
<FileSystem/>
<NetworkAdaptor/>
<JobPolicy/>
<AccessControlPolicy/>
</Capabilities>
<Requirements/>
<Adaptors>
<Adaptor name="integratedtoolkit.gat.master.GATAdaptor">
<BrokerAdaptor>sshtrilead</BrokerAdaptor>
</Adaptor>
</Adaptors>
</Resource>
Project.xml
<Worker Name="172.16.8.2">
<InstallDir>/opt/COMPSs/Runtime/scripts/system/</InstallDir>
<WorkingDir>/home/user/test/wdir/</WorkingDir>
<AppDir>/home/user/test/java/matmul/jar/</AppDir>
<User>user</User>
</Worker>
接口文件中的方法声明
@Method(declaringClass = "matmul.files.MatmulImpl")
void multiplyAccumulative(
@Parameter(direction = Direction.INOUT) String file1,
@Parameter() String file2,
@Parameter() String file3,
@Parameter() int bsize
);
如果您的参数确实是一个文件,您需要指定其类型(即 type=Type.FILE
)。否则 COMPS 运行时无法区分字符串变量和文件(因为文件实际上是一个带有路径的字符串)。您的界面应如下所示:
@Method(declaringClass = "matmul.files.MatmulImpl")
void multiplyAccumulative(
@Parameter(direction = Direction.INOUT, type = Type.FILE) String file1,
@Parameter() String file2,
@Parameter() String file3,
@Parameter() int bsize
);
我已经使用 COMP Superscalar 实现了一个应用程序,但任务失败了。查看标准错误文件 (job1_NEW.err) 文件时,我遇到了“未找到文件”异常,但该文件存在于我的计算机中。
知道可能是什么错误吗?
编辑:添加了资源和项目文件
Resources.xml
<Resource Name="172.16.8.2">
<Capabilities>
<Host>
<TaskCount>0</TaskCount>
<Queue>short</Queue>
<Queue/>
</Host>
<Processor>
<Architecture>x86_64</Architecture>
<Speed>3.0</Speed>
<CoreCount>4</CoreCount>
</Processor>
<OS>
<OSType>Linux</OSType>
<MaxProcessesPerUser>32</MaxProcessesPerUser>
</OS>
<StorageElement>
<Size>8</Size>
</StorageElement>
<Memory>
<PhysicalSize>4</PhysicalSize>
<VirtualSize>8</VirtualSize>
</Memory>
<ApplicationSoftware>
<Software>Java</Software>
</ApplicationSoftware>
<Service/>
<VO/>
<Cluster/>
<FileSystem/>
<NetworkAdaptor/>
<JobPolicy/>
<AccessControlPolicy/>
</Capabilities>
<Requirements/>
<Adaptors>
<Adaptor name="integratedtoolkit.gat.master.GATAdaptor">
<BrokerAdaptor>sshtrilead</BrokerAdaptor>
</Adaptor>
</Adaptors>
</Resource>
Project.xml
<Worker Name="172.16.8.2">
<InstallDir>/opt/COMPSs/Runtime/scripts/system/</InstallDir>
<WorkingDir>/home/user/test/wdir/</WorkingDir>
<AppDir>/home/user/test/java/matmul/jar/</AppDir>
<User>user</User>
</Worker>
接口文件中的方法声明
@Method(declaringClass = "matmul.files.MatmulImpl")
void multiplyAccumulative(
@Parameter(direction = Direction.INOUT) String file1,
@Parameter() String file2,
@Parameter() String file3,
@Parameter() int bsize
);
如果您的参数确实是一个文件,您需要指定其类型(即 type=Type.FILE
)。否则 COMPS 运行时无法区分字符串变量和文件(因为文件实际上是一个带有路径的字符串)。您的界面应如下所示:
@Method(declaringClass = "matmul.files.MatmulImpl")
void multiplyAccumulative(
@Parameter(direction = Direction.INOUT, type = Type.FILE) String file1,
@Parameter() String file2,
@Parameter() String file3,
@Parameter() int bsize
);