Как вычислить точечный продукт с NEON и двойными значениями в процессоре ARM

Мне нужно сделать много векторных вычислений. Поэтому мне кажется мудрым, что следует использовать NEON. Проблема в том, что функция зависит от двойников. Это дает мне два варианта: переписать весь код так, чтобы он работал с числами с плавающей запятой, или создать функцию, использующую удвоения в качестве ввода и удвоения в качестве вывода и выполняя вычисления с числами с плавающей запятой.

Мне нужно сделать следующие вычисления:

dotproduct = A[0]*B[0] + A[1]*B[1] + A[2]*B[2]

массивы имеют двойной размер. Как я могу выполнить это вычисление, используя встроенные функции NEON?


person Alex van Rijs    schedule 16.05.2013    source источник
comment
Предполагая, что вам нужна производительность, а не точность, лучше всего везде использовать одинарную точность, что позволит вам использовать неон и снизить затраты на пространство памяти/пропускную способность.   -  person auselen    schedule 16.05.2013


Ответы (1)


NEON не поддерживает операции с двойной точностью. Вам придется либо переписать свою функцию для работы со значениями с одинарной точностью, либо использовать скалярные инструкции VFP с двойной точностью вместо NEON.

person Marat Dukhan    schedule 16.05.2013