javadistributed-computinghpccompss

File not found in task defined in COMPSs


I have implemented an application with COMP Superscalar and I got task failed. Looking at the standard error file (job1_NEW.err) file I got a File Not Found exception but the file exists in my computer.

Any idea what could be the error?

EDIT: Added the resources and the project files

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 declaration in the Interface file

@Method(declaringClass = "matmul.files.MatmulImpl")
        void multiplyAccumulative(
                @Parameter(direction = Direction.INOUT) String file1,
                @Parameter() String file2,
                @Parameter() String file3,
                @Parameter() int bsize
        );

Solution

  • If your parameter is indeed a file you need to specify its type (i.e. type=Type.FILE). Otherwise the COMPSs runtime is not able to differentiate between a string variable and a file (because the file is actually a string with its path). Your interface should look like this:

    @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
    );