Тот факт, что на этих размерностях Кадан оказался быстрее, не говорит о том, что Такаока плохо распараллеливается.
Мы тоже писали Такаоку bitbucket.org/gribozavr/max_subarray_2d и у нас вот такие результаты на тестах с русскоязычного форума:
> 5000x5000 — 14.8 s на 40 ядрах, 517 s последовательно. маленький и средний — 27.8 s на 40 ядрах, 1092 s последовательно. Huge не пробовали.
> Не смотря на то, что распараллеливается он плохо
Отлично распараллеливается, причём на нескольких уровнях: как task-based нерегулярный параллелизм на уровне left/right/column подзадач, так и сам distance matrix multiplication.
Изучая Borland C, вы изучаете Borland C, а не ISO C 9899. Понимаете разницу? Какой смысл заставлять пользоваться Borland C когда есть бесплатные и свободные компиляторы современного, стандартизированного C? Это будет хуже? Это будет сложнее?
Теоретически Linux можно установить на любой ARM процессор. Практически всё упирается в поддержку ядром конкретной борды с её набором периферии. Linux умеет запускаться на ARM, но если он не поддерживает или не знает на какой шине находится, например, дисплей, — на практике эта система будет бесполезна.
Вполне решается если выделить сущность class TaskCompletionNotifier: public QObject и агрегировать её внутри класса, унаследованного от QRunnable. Но зачем, только чтобы избежать множественного наследования?..
Извините, думал и так всё понятно. Нужен был класс задачи для фоновой обработки, который можно поместить в QThreadPool (поэтому QRunnable), но с оповещением о завершении (нужен сигнал, поэтому QObject).
Мы тоже писали Такаоку bitbucket.org/gribozavr/max_subarray_2d и у нас вот такие результаты на тестах с русскоязычного форума:
> 5000x5000 — 14.8 s на 40 ядрах, 517 s последовательно. маленький и средний — 27.8 s на 40 ядрах, 1092 s последовательно. Huge не пробовали.
Отлично распараллеливается, причём на нескольких уровнях: как task-based нерегулярный параллелизм на уровне left/right/column подзадач, так и сам distance matrix multiplication.
www.csszengarden.com/
Хотите стабильности — коммитьте в апстрим.