0
我需要編寫一個程序,該程序首先按順序計算矩陣中的值,然後使用openCL並行計算值。將未知大小的多維數組傳遞給函數
這是因爲我已經做了在常規的C(使用MPI)我想要簡單的功能initializeMatrix和printMatrix和喜歡同樣的事情
。
在C我用來做這個很簡單:
// Matrix initialization
void initMatrix(size_t M, size_t N, double (*matrix)[M][N][2])
{
int i, j;
for (j = 0; j < N; ++j)
{
for (i = 0; i < M; ++i)
{
(*matrix)[i][j][0] = (double)((i * (M - i - 1)) * (j * (N - j - 1)));
(*matrix)[i][j][1] = (*matrix)[i][j][0];
}
}
printf("Matrix has been initialized\n");
}
我看到這個讓我的錯誤在C++中,因爲編譯器想知道,在編譯時數組(在M和N尺寸的大小作爲參數傳遞給程序,所以我不知道在編譯時)。
如何在C++中執行此操作?
我正在考慮使用載體,但我不知道這是否是一個好主意,因爲我將不得不使用OpenCL的庫
對我來說,它看起來像'double mat [M] [N] [2]'其中M和N是const size_t,但它給我錯誤 – dominicbri7 2015-04-02 17:27:11
@ dominicbri7'M'和'N'必須編譯 - 時間常量(不是通過'const'傳遞的函數的參數)。它應該工作,看到更新的編輯。 – vsoftco 2015-04-02 17:29:11
就是這樣,正如我在我的問題中提到的M和N尺寸必須作爲參數傳遞給程序,我必須處理每個尺寸給出的任何尺寸(從3到10000) – dominicbri7 2015-04-02 17:35:57