6

次のように定義された2要素のベクトルがあるとします(パックされたベクトルのGCC構文を使用)

// packed vector of 2-elements
typedef double v2d __attribute__((vector_size(sizeof(double)*2)));

v2d x = ...;
double y = ...;

x[0] = pow(x[0], y)
x[1] = pow(x[1], y)

ベクトル演算を使用して2つのべき乗の計算を行うより速い方法があるかどうか知りたいです。アーキテクチャはx86-64上のGCCであり、プラットフォーム固有のコードは問題ありません。

4

2 に答える 2

5

はい、特別なケース (負の数、0、1、NaN など) がなく、コード パスが線形である場合、これは可能です。

IEEE754 doubleの関数の一般的なコードは次のとおりpowです。これにはループ構造がないため、すべての特殊なケースを肉付けすると、ベクトル化は簡単に見えます。楽しむ。

于 2012-11-17T00:32:50.530 に答える