2014-10-04 3 views
1

나는 1024 Doubles 길이 인 4 개의 벡터 A, B, C, D를 가지고 있습니다. 그럼 나는 내 출력 벡터 O를 가지고 있는데 그것은 1792 더블 즈이고, 처음에는 모두 제로이다. 그 A가 두 번에 대한 두 번 추가되도록 위치 0-1023Accelerate : 입력 벡터와 크기가 다른 출력 벡터에 여러 벡터를 추가하려면 어떻게합니까?

에서

은 내가 256 복식 나중에 B에 대한 동일한 작업을 수행하므로 O로 B를 추가 할 O에 추가 할 있도록 B 두 번에 대한 더블 추가 위치 C에 대한 그런 256-1279

같은 위치 D에 대한 512-1535

그리고 마지막으로 같은 위치 768-1791

나는이 작업을 수행 할 수있는 방법 Apple의 Accellerate 프레임 워크를 사용하고 있습니까? 나는 vDSP_vaddD를 조사하고 있었지만, 출력 배열은 같은 길이 여야 만하는 것 같습니다.

나는 이것을 Swift에서 표현하려고합니다. Objective C를 사용했다면 포인터 배열을 사용하여 출력 배열에서 어디에서 시작했는지 표현할 수 있을까요?

건배

답변

1
O.withUnsafeMutableBufferPointer { (inout bufPtr : UnsafeMutableBufferPointer<Double>) -> Void in 
    var ptr = bufPtr.baseAddress 
    vaddD(A, 1, ptr, 1, ptr, 1, 1024) 
    ptr += 256 
    vaddD(B, 1, ptr, 1, ptr, 1, 1024) 
    ptr += 256 
    vaddD(C, 1, ptr, 1, ptr, 1, 1024) 
    ptr += 256 
    vaddD(D, 1, ptr, 1, ptr, 1, 1024) 
} 

나는이 추한 모습, 그리고 둘 스위프트 컴파일러 이나 배열 범위를 확인할 수 있습니다 런타임에이 지금은 없지만까지한다는 점에서 안전하지 않은 것을 인정 유일한 해결책은 찾을 수 있습니다.