{"id":3962,"date":"2021-03-08T09:22:33","date_gmt":"2021-03-08T07:22:33","guid":{"rendered":"http:\/\/ucthpc.uct.ac.za\/?page_id=3962"},"modified":"2021-04-18T21:58:46","modified_gmt":"2021-04-18T19:58:46","slug":"matlab-remote-job-submission","status":"publish","type":"page","link":"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/","title":{"rendered":"MATLAB remote job submission"},"content":{"rendered":"<p><strong>Getting Started with Parallel Computing using MATLAB on the HPC Cluster \u2013 Remote Submission<\/strong><\/p>\n<p>This document provides the steps to configure MATLAB to submit jobs to a cluster, retrieve results, and debug errors.<\/p>\n<p><strong>CONFIGURATION<\/strong><\/p>\n<p>The HPC MATLAB support package can be found here (Linux can be used by Mac users)<\/p>\n<ul>\n<li><a href=\"https:\/\/ucthpc.uct.ac.za\/db\/matlab\/uct.nonshared.R2021a.zip\">Windows<\/a><\/li>\n<li><a href=\"https:\/\/ucthpc.uct.ac.za\/db\/matlab\/uct.nonshared.R2021a.tar.gz\">Linux<\/a><\/li>\n<\/ul>\n<p>Download the appropriate archive file and start MATLAB.\u00a0 The archive file should be untarred\/unzipped into the location that is returned by calling userpath:<\/p>\n<pre>&gt;&gt; userpath\r\nans =\r\n    'C:\\Users\\jsmith\\Documents\\MATLAB'<\/pre>\n<p>Configure MATLAB to run parallel jobs on your cluster by calling configCluster.<\/p>\n<p>configCluster only needs to be called <u>once<\/u> per version of MATLAB.<\/p>\n<pre>&gt;&gt; configCluster<\/pre>\n<p>Submission to the remote cluster requires SSH credentials.\u00a0 You will be prompted for your ssh username and password or identity file (private key).\u00a0 The username and location of the private key will be stored in MATLAB for future sessions.<\/p>\n<p>Jobs will now default to the cluster rather than submit to the local machine.<\/p>\n<p><strong>NOTE<\/strong>: If you would like to submit to the local machine then run the following command:<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Get a handle to the local resources<\/span>\r\n&gt;&gt; c = parcluster('local');<\/pre>\n<p><strong>CONFIGURING JOBS<\/strong><\/p>\n<p>Prior to submitting the job, we can specify various parameters to pass to our jobs, such as queue, e-mail, walltime, etc.\u00a0 <em>Only WallTime is required.<\/em><\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Get a handle to the cluster<\/span>\r\n&gt;&gt; c = parcluster;\r\n\r\n<span style=\"color: #008000;\">[<strong>REQUIRED<\/strong>]<\/span>\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Specify the walltime (e.g. 5 hours)<\/span>\r\n&gt;&gt; c.AdditionalProperties.WallTime = '05:00:00';\r\n\r\n[<strong>OPTIONAL<\/strong>]\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Specify an account to use for MATLAB jobs<\/span>\r\n&gt;&gt; c.AdditionalProperties.AccountName = 'account-name';\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Specify e-mail address to receive notifications about your job<\/span>\r\n&gt;&gt; c.AdditionalProperties.EmailAddress = 'user-id@uct.ac.za';\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Request 2 Fermi GPU cards per node<\/span>\r\n&gt;&gt; c.AdditionalProperties.GpuCard = 'fermi';\r\n&gt;&gt; c.AdditionalProperties.GpusPerNode = 2;\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Specify memory to use for MATLAB jobs, per core (MB)<\/span>\r\n&gt;&gt; c.AdditionalProperties.MemUsage = '4000';\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Specify a queue to use for MATLAB jobs<\/span>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n&gt;&gt; c.AdditionalProperties.QueueName = 'queue-name';<\/pre>\n<p>Save changes after modifying AdditionalProperties for the above changes to persist between MATLAB sessions.<\/p>\n<pre>&gt;&gt; c.saveProfile<\/pre>\n<p>To see the values of the current configuration options, display AdditionalProperties.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% To view current properties<\/span>\r\n&gt;&gt; c.AdditionalProperties<\/pre>\n<p>Unset a value when no longer needed.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Turn off email notifications<\/span> \r\n&gt;&gt; c.AdditionalProperties.EmailAddress = '';\r\n&gt;&gt; c.saveProfile<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>INTERACTIVE JOBS<\/strong><\/p>\n<p>To run an interactive pool job on the cluster, continue to use parpool as you\u2019ve done before.<\/p>\n<p><strong>NOTE 1<\/strong>: Before calling any parallel code (e.g. parpool), you must first call configHostname (each time you start MATLAB).\u00a0 Otherwise, you will not be able to start a parallel pool with the HPC cluster and an error will be thrown.\u00a0 As a best practice, place a call to it in startup.m.<\/p>\n<p><strong>NOTE 2<\/strong>: If you have just run the configuration steps above you will need to exit and restart MATLAB now before continuing. It will not be possible to run configHostname unless you do this.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Configure MATLAB\u2019s hostname<\/span>\r\n&gt;&gt; configHostname\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Get a handle to the cluster<\/span>\r\n&gt;&gt; c = parcluster;\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Open a pool of 4 workers on the cluster<\/span>\r\n&gt;&gt; p = c.parpool(4);<\/pre>\n<p>At this point you may be asked if you would like to login with an identity file. Answer no (unless you are using an identity file) and you will now be challenged for your HPC password.<\/p>\n<p>Rather than running local on the local machine, the pool can now run across multiple nodes on the cluster.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Run a parfor over 1000 iterations<\/span>\r\n&gt;&gt; parfor idx = 1:1000\r\n      a(idx) = \u2026\r\n   end<\/pre>\n<p>Once we\u2019re done with the pool, delete it.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Delete the pool<\/span>\r\n&gt;&gt; p.delete<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>INDEPENDENT BATCH JOB<\/strong><\/p>\n<p>Use the batch command to submit asynchronous jobs to the cluster.\u00a0 The batch command will return a job object which is used to access the output of the submitted job.\u00a0 See the MATLAB documentation for more help on batch.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Get a handle to the cluster<\/span>\r\n&gt;&gt; c = parcluster;\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Submit job to query where MATLAB is running on the cluster<\/span>\r\n&gt;&gt; j = c.batch(@pwd, 1, {}, 'CurrentFolder','.', 'AutoAddClientPath',false);\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Query job for state<\/span>\r\n&gt;&gt; j.State\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% If state is finished, fetch the results<\/span>\r\n&gt;&gt; j.fetchOutputs{:}\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Delete the job after results are no longer needed<\/span>\r\n&gt;&gt; j.delete<\/pre>\n<p>To retrieve a list of currently running or completed jobs, call parcluster to retrieve the cluster object.\u00a0 The cluster object stores an array of jobs that were run, are running, or are queued to run.\u00a0 This allows us to fetch the results of completed jobs.\u00a0 Retrieve and view the list of jobs as shown below.<\/p>\n<pre>&gt;&gt; c = parcluster;\r\n&gt;&gt; jobs = c.Jobs;<\/pre>\n<p>Once we\u2019ve identified the job we want, we can retrieve the results as we\u2019ve done previously.<\/p>\n<p>fetchOutputs is used to retrieve function output arguments; if calling batch with a script, use load instead.\u00a0\u00a0 Data that has been written to files on the cluster needs be retrieved directly from the file system (e.g. via ftp).<\/p>\n<p>To view results of a previously completed job:<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Get a handle to the job with ID 2<\/span>\r\n&gt;&gt; j2 = c.Jobs(2);<\/pre>\n<p>NOTE: You can view a list of your jobs, as well as their IDs, using the above c.Jobs command.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Fetch results for job with ID 2<\/span>\r\n&gt;&gt; j2.fetchOutputs{:}<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>PARALLEL BATCH JOB<\/strong><\/p>\n<p>Users can also submit parallel workflows with the batch command.\u00a0 Let\u2019s use the following example for a parallel job:\u00a0 <strong>parallel_example.m<\/strong><\/p>\n<pre><span style=\"color: #0000ff;\">function<\/span> t = parallel_example(iter)\r\n\r\n<span style=\"color: #0000ff;\">if<\/span> nargin==0, iter = 16; <span style=\"color: #0000ff;\">end<\/span>\r\n\r\ndisp(<span style=\"color: #800080;\">'Start sim'<\/span>)\r\n\r\nt0 = tic;\r\n<span style=\"color: #0000ff;\">parfor<\/span> idx = 1:iter\r\n    A(idx) = idx;\r\n    pause(2)\r\n<span style=\"color: #0000ff;\">end<\/span>\r\nt = toc(t0);\r\ndisp(<span style=\"color: #800080;\">'Sim completed.'<\/span>)<\/pre>\n<p>This time when we use the batch command, in order to run a parallel job, we\u2019ll also specify a MATLAB Pool.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Get a handle to the cluster<\/span>\r\n&gt;&gt; c = parcluster;\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Submit a batch pool job using 4 workers for 16 simulations<\/span>\r\n\r\n&gt;&gt; j = c.batch(@parallel_example, 1, {}, 'Pool',4, 'CurrentFolder','.', 'AutoAddClientPath',false);\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% View current job status<\/span>\r\n&gt;&gt; j.State\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Fetch the results after a finished state is retrieved<\/span>\r\n&gt;&gt; j.fetchOutputs{:}\r\nans =\r\n      8.8872<\/pre>\n<p>The job ran in 8.89 seconds using four workers.\u00a0 Note that these jobs will always request N+1 CPU cores, since one worker is required to manage the batch job and pool of workers.\u00a0\u00a0 For example, a job that needs eight workers will consume nine CPU cores.<\/p>\n<p>We\u2019ll run the same simulation but increase the Pool size.\u00a0 This time, to retrieve the results later, we\u2019ll keep track of the job ID.<\/p>\n<p>NOTE: For some applications, there will be a diminishing return when allocating too many workers, as the overhead may exceed computation time.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Get a handle to the cluster<\/span>\r\n&gt;&gt; c = parcluster;\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Submit a batch pool job using 8 workers for 16 simulations<\/span>\r\n&gt;&gt; j = c.batch(@parallel_example, 1, {}, 'Pool', 8, 'CurrentFolder','.', 'AutoAddClientPath',false);\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Get the job ID<\/span>\r\n&gt;&gt; id = j.ID\r\nid =\r\n      4\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Clear j from workspace (as though we quit MATLAB)<\/span>\r\n&gt;&gt; clear j<\/pre>\n<p>Once we have a handle to the cluster, we\u2019ll call the findJob method to search for the job with the specified job ID.<\/p>\n<pre>&gt;&gt; <span style=\"color: #008000;\">% Get a handle to the cluster<\/span>\r\n&gt;&gt; c = parcluster;\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Find the old job<\/span>\r\n&gt;&gt; j = c.findJob('ID', 4);\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Retrieve the state of the job<\/span>\r\n&gt;&gt; j.State\r\n\r\nans\r\n   finished\r\n\r\n&gt;&gt; <span style=\"color: #008000;\">% Fetch the results<\/span>\r\n&gt;&gt; j.fetchOutputs{:};\r\n\r\nans =\r\n     4.7270<\/pre>\n<p>The job now runs in 4.73 seconds using eight workers.\u00a0 Run code with different number of workers to determine the ideal number to use.<\/p>\n<p>Alternatively, to retrieve job results via a graphical user interface, use the Job Monitor (Parallel &gt; Monitor Jobs).<\/p>\n<p><strong><a ref=\"magnificPopup\" href=\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2021\/03\/parmenu.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"size-medium wp-image-3975 aligncenter\" src=\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2021\/03\/parmenu-300x248.jpg\" alt=\"\" width=\"300\" height=\"248\" srcset=\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2021\/03\/parmenu-300x248.jpg 300w, https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2021\/03\/parmenu-600x496.jpg 600w, https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2021\/03\/parmenu.jpg 664w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/strong><\/p>\n<p><strong>DEBUGGING<\/strong><\/p>\n<p>If a serial job produces an error, call the getDebugLog method to view the error log file.\u00a0 When submitting independent jobs, with multiple tasks, specify the task number.<\/p>\n<pre>&gt;&gt; c.getDebugLog(j.Tasks(3))<\/pre>\n<p>For Pool jobs, only specify the job object.<\/p>\n<pre>&gt;&gt; c.getDebugLog(j)<\/pre>\n<p>When troubleshooting a job, the cluster admin may request the scheduler ID of the job.\u00a0 This can be derived by calling schedID<\/p>\n<pre>&gt;&gt; schedID(j)\r\n\r\nans =\r\n\r\n     25539<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p><strong>TO LEARN MORE<\/strong><\/p>\n<p>To learn more about the MATLAB Parallel Computing Toolbox, check out these resources:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.mathworks.com\/products\/parallel-computing\/code-examples.html\" target=\"_blank\" rel=\"noopener\">Parallel Computing Coding Examples<\/a><\/li>\n<li><a href=\"http:\/\/www.mathworks.com\/help\/distcomp\/index.html\" target=\"_blank\" rel=\"noopener\">Parallel Computing Documentation<\/a><\/li>\n<li><a href=\"http:\/\/www.mathworks.com\/products\/parallel-computing\/index.html\" target=\"_blank\" rel=\"noopener\">Parallel Computing Overview<\/a><\/li>\n<li><a href=\"http:\/\/www.mathworks.com\/products\/parallel-computing\/tutorials.html\" target=\"_blank\" rel=\"noopener\">Parallel Computing Tutorials<\/a><\/li>\n<li><a href=\"http:\/\/www.mathworks.com\/products\/parallel-computing\/videos.html\" target=\"_blank\" rel=\"noopener\">Parallel Computing Videos<\/a><\/li>\n<li><a href=\"http:\/\/www.mathworks.com\/products\/parallel-computing\/webinars.html\" target=\"_blank\" rel=\"noopener\">Parallel Computing Webinars<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Getting Started with Parallel Computing using MATLAB on the HPC Cluster \u2013 Remote Submission This document provides the steps to configure MATLAB to submit jobs to a cluster, retrieve results, and debug errors. CONFIGURATION The HPC MATLAB support package can be found here (Linux can be used by Mac users) Windows Linux Download the appropriate&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MATLAB remote job submission - UCT HPC<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MATLAB remote job submission - UCT HPC\" \/>\n<meta property=\"og:description\" content=\"Getting Started with Parallel Computing using MATLAB on the HPC Cluster \u2013 Remote Submission This document provides the steps to configure MATLAB to submit jobs to a cluster, retrieve results, and debug errors. CONFIGURATION The HPC MATLAB support package can be found here (Linux can be used by Mac users) Windows Linux Download the appropriate...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/\" \/>\n<meta property=\"og:site_name\" content=\"UCT HPC\" \/>\n<meta property=\"article:modified_time\" content=\"2021-04-18T19:58:46+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2021\/03\/parmenu-300x248.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/\",\"name\":\"MATLAB remote job submission - UCT HPC\",\"isPartOf\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#website\"},\"datePublished\":\"2021-03-08T07:22:33+00:00\",\"dateModified\":\"2021-04-18T19:58:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/#breadcrumb\"},\"inLanguage\":\"en-ZA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ucthpc.uct.ac.za\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MATLAB remote job submission\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#website\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/\",\"name\":\"UCT HPC\",\"description\":\"University of Cape Town High Performance Computing\",\"publisher\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ucthpc.uct.ac.za\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-ZA\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#organization\",\"name\":\"University of Cape Town High Performance Computing\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-ZA\",\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png\",\"contentUrl\":\"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png\",\"width\":450,\"height\":423,\"caption\":\"University of Cape Town High Performance Computing\"},\"image\":{\"@id\":\"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MATLAB remote job submission - UCT HPC","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/","og_locale":"en_US","og_type":"article","og_title":"MATLAB remote job submission - UCT HPC","og_description":"Getting Started with Parallel Computing using MATLAB on the HPC Cluster \u2013 Remote Submission This document provides the steps to configure MATLAB to submit jobs to a cluster, retrieve results, and debug errors. CONFIGURATION The HPC MATLAB support package can be found here (Linux can be used by Mac users) Windows Linux Download the appropriate...","og_url":"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/","og_site_name":"UCT HPC","article_modified_time":"2021-04-18T19:58:46+00:00","og_image":[{"url":"http:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2021\/03\/parmenu-300x248.jpg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/","url":"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/","name":"MATLAB remote job submission - UCT HPC","isPartOf":{"@id":"https:\/\/ucthpc.uct.ac.za\/#website"},"datePublished":"2021-03-08T07:22:33+00:00","dateModified":"2021-04-18T19:58:46+00:00","breadcrumb":{"@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/#breadcrumb"},"inLanguage":"en-ZA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ucthpc.uct.ac.za\/index.php\/matlab-remote-job-submission\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ucthpc.uct.ac.za\/"},{"@type":"ListItem","position":2,"name":"MATLAB remote job submission"}]},{"@type":"WebSite","@id":"https:\/\/ucthpc.uct.ac.za\/#website","url":"https:\/\/ucthpc.uct.ac.za\/","name":"UCT HPC","description":"University of Cape Town High Performance Computing","publisher":{"@id":"https:\/\/ucthpc.uct.ac.za\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ucthpc.uct.ac.za\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-ZA"},{"@type":"Organization","@id":"https:\/\/ucthpc.uct.ac.za\/#organization","name":"University of Cape Town High Performance Computing","url":"https:\/\/ucthpc.uct.ac.za\/","logo":{"@type":"ImageObject","inLanguage":"en-ZA","@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/","url":"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png","contentUrl":"https:\/\/ucthpc.uct.ac.za\/wp-content\/uploads\/2015\/09\/logocircless.png","width":450,"height":423,"caption":"University of Cape Town High Performance Computing"},"image":{"@id":"https:\/\/ucthpc.uct.ac.za\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/pages\/3962"}],"collection":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/comments?post=3962"}],"version-history":[{"count":20,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/pages\/3962\/revisions"}],"predecessor-version":[{"id":4023,"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/pages\/3962\/revisions\/4023"}],"wp:attachment":[{"href":"https:\/\/ucthpc.uct.ac.za\/index.php\/wp-json\/wp\/v2\/media?parent=3962"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}