2014-12-12 2 views
1

Я оцениваю, использовать ли пул потоков Java с четырехъядерным процессором или графическим адаптером Aparapi для моей программы.Простой пул потоков Java против Aparapi GPU для сложных объектов

Принимая во внимание, что усиление на графическом процессоре было бы хорошим, разница в скорости между четырехъядерным процессором и графическим процессором не является критерием выбивания для алгоритма. С другой стороны, моя программа очень хорошо структурирована с множеством сложных объектов и, если я правильно понимаю, Aparapi не поддерживает распараллеливание за примитивными типами данных.

Для тех, у кого есть опыт работы с обоими методами для сложных объектов, предложите ли вы реорганизовать объекты на примитивные типы данных для Aparapi или придерживаться пула потоков Java? Правильно ли я понимаю, что для пула потоков Java нет ограничений для типа объектов, с которыми он может справиться?

ответ

1

ExecutorService как ThreadPoolExecutor просто пул рабочих потоков выполнения заданий (Runnables) вытащил из очереди, так что нет ограничений на свои объекты для обычных проблем параллелизма, таких как гонки данных и врезных замков, за исключением.

Если скорость очень важна для вас, то превращение ваших объектов в массивы примитивных типов данных, и работа над этими массивами должна быть вашей первой оптимизацией после введения параллелизма. Если после этого вы хотите перейти к gpu, то вы уже находитесь на уровне примитивных структур данных.

Смежные вопросы