2014-10-04 106 views
1

我有四個向量,A,B,C,D,它們的長度是1024雙倍。然後我有我的輸出向量O,即1792雙倍長,並且最初是全零。加速:如何將多個向量添加到與輸入向量不同大小的輸出向量中?

我想將A加製成O,使A添加雙換雙在位置0-1023

我想對於B做同樣的256個雙打後,讓B加入A製成O所以將b加入雙換雙在位置256-1279

然後同爲C,位置512-1535

後來終於同爲d,位置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) 
} 

我承認,這個長相醜陋,而且是在這個意義上,無論是斯威夫特編譯 也不運行時可以檢查數組邊界,但到現在也就是不安全唯一的解決方案 我能找到。