здрасте-приехали. Насколько мне известно, для GPGPU вычислений используется локальная память видеокарты (весьма быстрая, кстати). т.е. в общих чертах - загружаем в видеопамять задачу(данные), запускаем на видеокарте счётный алгоритм. А через некоторое время - забираем результат
Кстати по-моему минимальный объём локальной видеопамяти должен быть от 2 Гиг.
Прошу прощения если всё очень примитивно обрисовал, но это не со зла, а по незнанию :))
Т.е. о каких PCI-транзакциях Вы толкуете?? их там не должно быть! - только на операциях загрузки-выгрузки массивов данных
Разве не так??
И, в частности есть убедительные бенчмарки (например считающие кватернионы, многомерные фракталы и т.п.) в реальном времени, работающие быстрее CPU в разы
Например вот мой CoreI7 3.1ГГц, в 4 раза уступает довольно скромненькой nVidia Quadro 1000m
И потом, вот Вы говорите:
...сама элементарная операция умножения с накоплением занимает всего один такт процессорного времени...
но забываете, что говорите об одном ядре, хоть и быстром, а в GPU таких "ядер" десятки-сотни, хоть и работающих на в три раза меньше частоте. И всю это "свору" можно натравить на несчастную матрицу одновременно :) Какие там ваши CPU/МегаГерцы супротив параллельных вычислений. Уж на матрицах-то сам Бог велел. Да, вероятно посложнее подготовить данные и вообще распараллелить/запрограммировать задачу, но результат по-моему того стоит. Тем паче, что автоматом получаете код оптимизимрованный под многоядерные архитектуры сейчас и в будущем (да тот же CPU-OpenCL, если уж Вам видеокарты так претят :)) Ну и OpenCL как-то пока на "кладбище" не торопится :))
З.Ы. спорить со мной действительно ни к чему, ибо большего, чем я дилетанта в этих вопросах ещё поискать :))