필자는 이것을 다음과 같이 간결하게 만들 것입니다.어떻게 윈도우에서 가속 (사과 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));
}