我正在尋找快速方法來完成點積,BLAS可以是一個選項。但是有沒有辦法做到不同數組值的點積?在C++中使用BLAS的不同數組的值的點積
例如,讓我們有4個不同的一維陣列,A,B,C,d
a = {1, 2, 3, 4}
b = {5, 6, 7, 8}
c = {9, 10, 11, 12}
d = {13, 14, 15, 16}
並且存在另一個數組
k = {1, 2, 3, 4}
我想要做的是計算
ans1 = a[0]*k[0] + b[0]*k[1] + c[0]*k[2] + d[0]*k[3];
ans2 = a[1]*k[0] + b[1]*k[1] + c[1]*k[2] + d[1]*k[3];
等等......
做了相同的計算很多時間,但是因爲所有數組中的值可以在每次迭代中更改。 我試圖在BLAS中使用ddot並以某種方式使用指針,但未能做到。 是否有任何方式使用DDOT而不分配另一個陣列和值複製到它如,
e[0]=a[0]; e[1]=b[0]; e[2]=c[0]; e[3]=d[0];
然後,
ans = ddot(4, e, 1, k, 1);
而且很難使其爲2D矩陣,因爲每個一維向量(數組)位於不同的類中。 請給我一個建議,更有效地做到這一點。
在此先感謝。
在編譯時你的值是否已知? – user2296177
這些值在運行時不斷變化,並且無法知道。這就是爲什麼我每次迭代都要將每個值複製到1D數組中。但它需要時間和效率下降... – user270700