从导入的matlab文件中进行多线程和多处理

本文关键字:多线程 处理 导入 matlab 文件 | 更新日期: 2023-09-27 18:28:13

这可能是一个很长的机会,但我早些时候问了一个关于将一个统计工具箱代码转换为C#的问题,意识到这只是一个巨大而漫长的过程,没有太多的自动化方法(我真正想要的是,我提供的参考资料解释了为什么手工操作如此困难,就像我在哪里得到的评论一样:你为什么不试着转换它,问一些关于你被困在哪里的问题,这显然是我的问题没有被理解!)

我之所以希望这样做,是因为matlab需要很长的处理时间来完成我的工作(大型数据集上的k-means和bayes分类器)。所以我想,嘿,为什么不把代码转换成C#,并尝试多线程和多处理器,这可能会提供一种减少处理时间的功能性方法。但显然,要手动将所有matlabs函数转换为C#来实现这一点是非常困难的。

所以我的问题是,如果我将matlabs文件导入C#,是否有可能以多线程和多处理的方式使用/运行它们,或者导入的文件是否会像在matlab中那样运行?

它在matlab中运行缓慢的原因(我认为)是统计工具箱中的函数或其中一些函数只从多线程中受益,特别是:

MATHEMATICS
Arrays and matrices
• Basic information: ISFINITE, ISINF, ISNAN, MAX, MIN
• Operators: +, -, .*, ./, .', .^, *, ^, ' (MLDIVIDE), / (MRDIVIDE)
• Array operations: PROD, SUM
• Array manipulation: BSXFUN, SORT

Linear algebra
• Matrix Analysis: DET, RCOND
• Linear Equations: CHOL, INV, LINSOLVE, LU, QR
• Eigenvalues and singular values: EIG, HESS, SCHUR, SVD, QZ
Elementary math
• Trigonometric: ACOS, ACOSD, ACOSH, ASIN, ASIND, ASINH, ATAN, ATAND, ATANH, COS, COSD, COSH,HYPOT, SIN, SIND, SINH, TAN, TAND, TANH
• Exponential: EXP, POW2, SQRT
• Complex: ABS
• Rounding and remainder: CEIL, FIX, FLOOR, MOD, REM, ROUND
Special Functions
• ERF, ERFC, ERFCINV, ERFCX, ERFINV, GAMMA, GAMMALN
DATA ANALYSIS
• CONV2, FILTER, FFT and IFFT of multiple columns or long vectors, FFTN, IFFTN  

因此,我不确定如何或以何种方式可能减少处理时间,当处理近数万条记录时,kmeans和bayes分类器的处理时间确实令人难以忍受(可以理解)。

从导入的matlab文件中进行多线程和多处理

这不是一件容易做到的事情。事实上,我想说这是不可能的。

如果你尝试它,你有以下问题需要处理:

  • 找到一种(半)自动化的方法将数学实验室功能转换为C#
    据我所知,这是不存在的
  • 将生成的代码更改为启用多线程
    由于使用的数据结构,修改数学算法以支持多个线程是非常困难的,有时甚至是不可能的
  • 还要记住,有些数学问题不会随着处理器的数量而缩放,因此您甚至可能得不到预期的好处