我在另一台机器(linux)上有大量文件,我通常通过ssh访问(或者当我想要传输时使用scp)。我自己的机器上也有很多matlab脚本(mac os x),据我所知,它不能轻易地在另一台机器上运行。
理想情况下,我想要做的是从我的机器上运行脚本,但是在另一台机器上运行数据。是否可以通过ssh或类似的方式做这种事情?或者我最好只是将(非常大的)一堆文件扫描到我自己的机器上,然后从那里进行分析。
提前干杯, 亚当
答案 0 :(得分:2)
也许是一个扩展的评论而不是一个答案:
当您的Matlab代码运行时,它所需的数据必须与代码位于相同的RAM中。在存储持久存储数据的文件的任何地方都是如此。基本上有三种选择:
将您的Matlab代码复制到存储数据的机器上,并在远程机器的RAM中运行分析。这可能会最大限度地减少传输的数据量(将Matlab程序复制到远程计算机),但您可能需要将结果提取回本地计算机。您的问题表明您可能无法在远程计算机上运行Matlab,因此这可能不是您的选择。
在每个程序运行时,将数据(一次一个文件)从远程计算机复制到本地计算机。这将导致相对较多的相对较小的数据传输。
将数据一次性从远程计算机复制到本地计算机,然后在本地运行所有程序。
您可能会看到我的目的:最小化总执行时间,您应该最小化数据传输时间(即延迟(每个文件时间)和带宽(每个字节时间)使用选项3而不是选项2.所以是的,我认为你最好的选择是将整个文件从远程扫描到本地。
答案 1 :(得分:2)
我在这里看到两种可能性:
执行前,使用rsync将数据提取到本地计算机。
使用sshfs在本地挂载远程数据,并隐式进行数据传输。
根据您针对的优化条件(本地磁盘使用情况,传输的数据量,延迟/吞吐量,手动步骤数量......),您可能需要选择其中一种。