Я пишу программу с использованием JOGL / openCL для использования графического процессора.У меня есть код, который срабатывает, когда мы работаем с размерами данных, который должен обнаружить доступную память на GPU.Если на графическом процессоре недостаточно памяти для одновременной обработки всего вычисления, он разбивает процесс на подпроцесс с числом кадров X, которое использует меньше, чем максимальная глобальная память графического процессора для хранения.
Я ожидалчто использование максимально возможного значения X даст мне наибольшее ускорение за счет минимизации количества используемых ядер.Вместо этого я обнаружил, что использование меньшей группы (X / 2 или X / 4) дает мне лучшие скорости.Я пытаюсь понять, почему разбивка обработки на GPU на более мелкие группы, а не на обработку GPU максимальной производительностью, которую он может обработать за один раз, дает мне увеличение скорости;и как я могу оптимизировать, чтобы выяснить, каково наилучшее значение X.
Мои текущие тесты выполнялись на ядре графического процессора, которое использует очень небольшую вычислительную мощность (оба ядра сокращают вывод, выбирая часть ввода и возвращаяэто) Однако, я вполне уверен, что те же самые эффекты происходят, когда я активирую все ядра, которые выполняют большую степень обработки значения перед возвратом.