從調用一個簡單的arrayfire構造函數,我得到了Segmentation Fault。從簡單的arrayfire構造函數中獲取seg fault
#include <arrayfire.h>
int main(){
af_array a;
int N = 10;
dim_t dims = 10;
af_randu(&a, N, &dims, f32);
af::array b(a);
return 0;
}
從調用一個簡單的arrayfire構造函數,我得到了Segmentation Fault。從簡單的arrayfire構造函數中獲取seg fault
#include <arrayfire.h>
int main(){
af_array a;
int N = 10;
dim_t dims = 10;
af_randu(&a, N, &dims, f32);
af::array b(a);
return 0;
}
af_randu
是ArrayFire中的C-API函數。理想情況下,用戶不需要直接調用這些功能。
你需要調用的是af::randu()。所以,你要RANDU電話是:
af:array b = af::randu(N, f32);
以下就是回答提出的問題,爲af_randu的C-API是
AFAPI af_err af_randu(af_array *out,
const unsigned ndims,
const dim_t *const dims,
const af_dtype type
)
所以第二個參數是ndims
(維數) ,而你的情況是1。因此您的來電af_randu是:
af_randu(&a, 1, &dims, f32);
如果你正在做的一個矩陣讓說10×10,那麼你會怎麼做
dim_t dims[] = {10, 10}
af_randu(&a, 2, dims, f32);
完全披露:我是ArrayFire的開發人員。
非常感謝回覆。我對遲到的迴應表示歉意。我不想生成一個隨機數組。我們的團隊正在使用Afnumpy進行項目。我們需要在C++中公開Afnumpy.d_array.arr對象,以便編寫定製的CUDA內核。我能夠處理af_array對象,但是當我嘗試創建af :: array對象時,出現了分段錯誤。 –
即使在我提到的糾正了ndims參數後,你是否也遇到了分段錯誤? 您應該使用[array :: device
感謝。這工作。 –
哪一行會導致段錯誤? – HazemGomaa