私はできるだけ簡潔にするつもりです:どのように私はWindowsでアクセラレーション(リンゴDSPライブラリ)関数を複製できますか?
私は非常に特定のハードウェアの制約のために、Windowsに移植する必要があるプロジェクトがあります。 AppleのDSPライブラリであるAccelerateを使用してベクトル距離計算を実行するユーティリティクラスがあります。私はこのライブラリを使わずに機能するように書き直す必要がありますが、適切な置き換えを見つけることができませんでした。私の最善の行動は何ですか?
#include <Accelerate/Accelerate.h>
inline float distBetween(float *x, float *y, unsigned int count) {
float *tmp = (float*)malloc(count * sizeof(float));
// float tmp[count];
//t = y - x
vDSP_vsub(x, 1, y, 1, tmp, 1, count);
//t.squared
vDSP_vsq(tmp, 1, tmp, 1, count);
//t.sum
float sum;
vDSP_sve(tmp, 1, &sum, count);
delete tmp;
return sqrt(sum);
}
inline float cosineDistance(float *x, float *y, unsigned int count) {
float dotProd, magX, magY;
float *tmp = (float*)malloc(count * sizeof(float));
vDSP_dotpr(x, 1, y, 1, &dotProd, count);
vDSP_vsq(x, 1, tmp, 1, count);
vDSP_sve(tmp, 1, &magX, count);
magX = sqrt(magX);
vDSP_vsq(y, 1, tmp, 1, count);
vDSP_sve(tmp, 1, &magY, count);
magY = sqrt(magY);
delete tmp;
return 1.0 - (dotProd/(magX * magY));
}