Многопоточность и многопроцессорность из импортированных файлов Matlab - PullRequest
0 голосов
/ 19 марта 2012

Это, вероятно, длинный путь, но я задал вопрос о том, как раньше преобразовать один из кодов набора инструментов статистики в C #, осознав, что это был просто огромный и длительный процесс, и автоматизировать его было не так уж много ( действительно, что я хотел, так как ссылки, которые я предоставил, объяснили, почему это было так трудно сделать вручную, как и комментарии, которые я получил, где: почему бы вам не попробовать преобразовать его и задать вопросы о том, где вы застряли, что, очевидно, мой вопрос не был понят!) .

Причина, по которой я искал это, состоит в том, что Matlab требует длительного времени обработки, чтобы завершить то, над чем я работаю (k-средних и байесовские классификаторы для больших наборов данных). Так что я хорошо подумал: почему бы просто не преобразовать код в 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 при обработке около десятков тысяч записей действительно просто невыносим по времени обработки (понятно).

1 Ответ

1 голос
/ 19 марта 2012

Это не то, что вы сможете сделать легко. На самом деле я бы сказал, что это невозможно.

Если вы попытаетесь это сделать, у вас возникнут следующие проблемы:

  • Найдите (полу) автоматический способ преобразования функциональности математической лаборатории в C #
    Это не существует, насколько мне известно.
  • Изменить результирующий код, чтобы он включал многопоточность
    Изменить математический алгоритм для поддерживаемых нескольких потоков очень сложно, а иногда даже невозможно из-за используемых структур данных
  • Также имейте в виду, что некоторые математические задачи не зависят от количества процессоров, поэтому вы можете даже не получить ожидаемого результата.
...