У меня есть два входных вектора float4, скажем float4 A
& float4 B
.И выходной массив векторов с плавающей точкой float4 C[4]
I, который я намереваюсь выполнить, - это
C[0] += A.s0 * B
C[1] += A.s1 * B
C[2] += A.s2 * B
C[3] += A.s3 * B
Существует ли какая-либо встроенная функция OpenCL для выполнения этой операции (или) какой-либо альтернативный способ ускорить эту операцию?
Редактировать 1: я уже пробовал описанную ниже опцию, используя встроенную функцию mad()
.Улучшения в производительности не было.
C[0].s0 = mad(A.s0, B.s0, C[0].s0);
C[0].s1 = mad(A.s0, B.s1, C[0].s1);
C[0].s2 = mad(A.s0, B.s2, C[0].s2);
C[0].s3 = mad(A.s0, B.s3, C[0].s3);