使用matlabpool时出错 - 未定义的函数'distcomp.fileserializer'

ray*_*ica 7 matlab

我正在尝试使用MATLAB中的并行计算工具箱来帮助加快我正在执行的一些密集计算.在我可以使用类似的结构之前parfor,我需要通过创建一个工作池matlabpool.首先,我local只想matlabpool通过自己调用而不使用其他参数来使用默认/ 配置文件.但是,当我这样做时,我收到以下错误消息:

>> matlabpool
Starting matlabpool using the 'local' profile ... 
Error using matlabpool (line 134)
Undefined function 'distcomp.fileserializer' for input arguments of type
'distcomp.filestorage'.
Run Code Online (Sandbox Code Playgroud)

我在Mac OS X 10.9.3(Mavericks)上运行MATLAB R2013a.有没有人遇到过这个错误?这是如何解决的?

ray*_*ica 4

感谢@RTL 在上面的评论中,他发现这是将 Java 版本更新到 1.6.0_39 或更高版本后引入的错误。可以在此处找到相关主题。使用至少此版本或更高版本的任何 Java 版本运行任何并行计算工具箱代码都可能会导致NullPointerException抛出异常。该distcomp.fileserializer错误就在此处的错误之中。

因此,我在上面引用的线程中发布了一个错误修复,其中 MATLAB 中的多个文件必须更新。以下是我解决此错误所遵循的步骤:

  1. 请访问以下描述此错误修复的网站:http ://www.mathworks.com/support/bugreports/919688

  2. 有些.zip文件包含您需要在 MATLAB 中覆盖的必要文件。每种.zip文件都与您使用的 MATLAB 版本相关。确保下载与您的 MATLAB 版本相对应的正确文件。 .zip我在上面的帖子中查阅了一张海报,声称这些文件破坏了他/她的 MATLAB,因此需要重新安装。这没有发生在我身上。

    .zip当我运行 MATLAB R2013a 时,这是我下载的文件的链接: http://www.mathworks.com/support/bugreports/license/accept_license/5383 ?fname=attachment_919688_12b_13a_2013-03-08.zip&geck_id=919688

  3. 打开 MATLAB,然后在命令提示符中键入以下内容:cd (matlabroot)并按ENTERRETURN

  4. 在您看到“当前文件夹”子窗口的 GUI 中,右键单击该区域中的任意位置,然后单击“在 Finder 中打开当前文件夹”。这将在 Finder 中打开 MATLAB 在系统上的位置。就我而言,我的 MATLAB 位于此处:/Applications/MATLAB_R2013a.app

  5. 现在,关闭 MATLAB

  6. .zip解压缩下载的文件的内容。您将看到解压缩的存档中有三个文件夹:bugreportjavatoolbox。你只需要担心javatoolbox

  7. 您需要做的只是将javatoolbox文件夹的内容替换为解压存档中与步骤 #4 中在 MATLAB 上找到的相同的javatoolbox文件夹。在执行此操作之前,请转到步骤 #8。

  8. 强烈建议您在执行此操作之前保存要覆盖的内容的副本。我只是重命名了要使用后缀覆盖的文件和文件夹old,以便在必要时可以恢复它们。供您考虑,这些是需要使用该.zip文件替换的文件和文件夹:

    • java/jarext/distcomp/jiini2/
    • toolbox/distcomp/private/initcommon.m
  9. 现在您已经备份了这些文件,获取.zip文件内容并覆盖您使用步骤 #4 找到的文件夹中的 MATLAB 程序中的内容。

  10. 重新启动 MATLAB。这应该可以解决这个错误,并且它对我有用。