我從來不需要在C#中使用指針,但是,我使用的庫要求將方法參數作爲指針傳遞。該庫允許使用SIMD指令集。試圖讓指針工作
爲了測試如何使用庫,我試圖編寫一種方法,使用SIMD一次性計算數組中所有元素的餘弦值。
這是我的本錢:
double[] ValuesToCalculate = new double[MAX_SIZE];
double[] CalculatedCosines = new double[MAX_SIZE];
long Result;
Result = CalculateCosineArray(ValuesToCalculate, CalculatedCosines);
public static long CalculateCosineArraySIMD(double[] array, double[] result)
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (int i = 0; i < array.Length; i++)
{
Yeppp.Math.Cos_V64f_V64f(*array, result, MAX_SIZE);
}
stopwatch.Stop();
return stopwatch.ElapsedMilliseconds;
}
不過,我得到這些錯誤:
The best overloaded method match for 'Yeppp.Math.Cos_V64f_V64f(double*, double*, int)' has some invalid arguments
Argument 1: cannot convert from 'double[]' to 'double*'
The * or -> operator must be applied to a pointer
Argument 2: cannot convert from 'double[]' to 'double*'
如何讓指針在此代碼工作?再次,這是第一次在我使用C#的時候出現了指針。
它似乎你的方法需要雙指針作爲第二個參數,但你傳遞一個雙數組。 –