Products & Services Solutions Academia Support User Community Company

Learn more about MATLAB Builder JA   

Improving Data Access Using the MCR User Data Interface and MATLAB Builder JA

This feature provides a lightweight interface for easily accessing MCR data. It allows data to be shared between an MCR instance, the M-code running on that MCR, and the wrapper code that created the MCR. Through calls to the MCR User Data interface API, you access MCR data through creation of a per-MCR-instance associative array of mxArrays, consisting of a mapping from string keys to mxArray values. Reasons for doing this include, but are not limited to:

MATLAB Builder JA software supports per-MCR instance state access through an object-oriented API. Unlike MATLAB Compilersoftware, access to a per-MCR instance state is optional, rather than on by default. You can access this state by adding setmcruserdata.m and getmcruserdata.m to your deployment project or by specifying them on the command line.

For more information, see Improving Data Access Using the MCR User Data Interface in the MATLAB Compiler User's Guide.

Example: Supplying Run-Time Configuration Information for Parallel Computing Toolbox Applications

Following is a complete example of how you can use the MCR User Data Interface as a mechanism to specify a configuration .mat file for Parallel Computing Toolbox applications.

Supply Configuration Parameters

Supply configuration information by setting the MCR User Data key ParallelConfigurationFile in your application. The specified configuration will be set as the default parallel configuration and used by Parallel Computing Toolbox functions such as matlabpool.

parmagic.m.  

function ranks = parmagic

cfg = defaultParallelConfig();
fprintf('Using parallel configuration: %s\n',cfg);

n = 10;

matlabpool('open');
parfor ind=1:n
   ranks(ind) = rank(magic(ind));
end
matlabpool('close');

Build the Component

Use MATLAB Compiler to build the deployable component Parmagic from parmagic.m:

>> mkdir out
>> mcc -d out -W 
         'java:com.mathworks.parmagicComponent,Parmagic' 
          parmagic.m setmcruserdata.m pctRunDeployedCleanup.m

Create a Java Application

The Java™ application udata.java relays the configuration information passed via command line to the Parmagic component via the MCR User Data Interface.

udata.java.  

public class udata
{
    public static void main(String[] args)
    {       
        /* First argument is the parallel configuration file */
        MWCharArray configFile = new MWCharArray(args[0]);
        Object[] result = null;
        Parmagic m = null;
        try
        {
            m = new Parmagic();
            String key = "ParallelConfigurationFile";
            m.setmcruserdata(key, configFile);
            int nargout = 1;
            result = m.parmagic(nargout);  

            MWClassID classID = ((MWArray)result[0]).classID();
            if (classID.equals(MWClassID.DOUBLE))
            {
                double[][] resultarray =
                    (double[][])((MWArray)result[0]).toArray();
                double[] ranks = resultarray[0];
                for (int i=0; i<ranks.length; i++)
                {
                    System.out.println(
                            "rank(magic(" + (i+1) + ")) = 
                                               " + ranks[i]);
                }
           }                    
        }
        catch (Exception e)
        {
            System.out.println("Exception: " + e.toString());
        }
        finally
        {
            MWArray.disposeArray(configFile);
            if (result!=null)
            {
                MWArray.disposeArray(result[0]);
            }
            if (m!=null)
            {
                try
                {
                    m.pctRunDeployedCleanup(); 
                } 
                catch (Exception e) 
                {
                    System.out.println("Exception: " + 
                                         e.toString());
                }
	            m.dispose(); 
            }               
        }
    }
}

Build the Java Application

Use javac to compile program udata.java:

javac -d out -g -classpath \
      .:"$MWE_INSTALL/toolbox/javabuilder/jar/javabuilder.jar"\
       :./out/parmagicComponent.jar udata.java

Run the Java Application

Run the Java application. myconfig.mat is a parallel configuration file exported from MATLAB that specifies the configuration when the application is run.

 java  -classpath \
      .:"$MWE_INSTALL/toolbox/javabuilder/jar/javabuilder.jar"\
       :./parmagicComponent.jar udata myconfig.mat
  


Recommended Products

Includes the most popular MATLAB recorded presentations with Q&A sessions led by MATLAB experts.

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS