Возможно, вам не нужно распараллеливать это;Вы можете ускорить это примерно в 10000 раз, перейдя на скомпилированный язык.(Серьезно; см. Ниже.) Октава или даже матлаб будут медленными, так как патока запускает это.Они отлично подходят для больших матричных операций, но тонны вложенных циклов с операторами if будут выполняться slow slow slow.Обычно я бы рекомендовал перенести код Octave / Matlab в FORTRAN, но, поскольку вы уже получили файловый ввод / вывод, по существу написанный с помощью операторов C, эквивалент C этого кода почти сам записывается:* Выполнение кода октавы выше и этого кода C (скомпилированного с -O3) в течение одной минуты каждый, код октавы прошел около 2163 элементов в последовательности, а скомпилированный код C - 23,299,068.Так что это хорошо.
С точки зрения распараллеливания, разбить это на независимые части легко, но они не будут особенно хорошо сбалансированы по нагрузке.Если вы запустите (скажем) 26 процессов и дадите им (a = 0, b = 0), (a = 0, b = 1) ..., (a = 0, b = 19), (a = 1,b = 0), (a = 1, b = 1), .. (a = 1, b = 5), все они могут работать независимо, и вы можете объединить результаты, когда все они сделаны.Единственным недостатком является то, что задания a = 0 будут выполняться несколько медленнее, чем задания a = 1, но, возможно, этого достаточно для запуска.