ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
1 мая
706040 Топик полностью
Ксения (16.10.2016 10:47, просмотров: 108) ответил Adept на здрасте-приехали. Насколько мне известно, для GPGPU вычислений используется локальная память видеокарты (весьма быстрая, кстати). т.е.
Когда данные хранятся в памяти видеокарты, то тогда и компилятор нужен для видеопроцессора, чтобы писать для него программу, выполняемую ТАМ. Мы говорим с вами о разных вещах: я о способе ускорить вычисления с помощью новых инструкций AVX/AVX2, а вы - о распараллеливании задачи на ядрам GPU. К сожалению, реальность такова, что распараллеливаться способны только векторные операции, когда матрицу можно порезать на строки, а вектор на части. Между тем, большинство матричных алгоритмов состоят из ЧЕРЕДОВАНИЯ векторных и невекторых операций. Это только перемножение матриц такая тупая операция, когда не требуется смотреть на то, что делаешь, а в действительности после каждого перестроения матрицы (т.е. векторной операции) приходится решать, что делать дальше, путем анализа элементов этой матрицы. Т.е. большинство матричных алгоритмов нынче итерационные, когда после каждого шага приходится вычислять параметры следующего. Поэтому если "планированием" шагов занимается CPU, но ему надо видеть, как эта матрица выглядит. Тогда как пересылка матрицы из GPU в CPU (т.е. из локальной памяти видеокарты в общую) настолько накладна, что векторную операцию было быстрее выполнить самому CPU. Образно говоря, жить на два дома здесь нельзя, т.к. решения должна принимать та сторона, в чьей памяти получается результат.