2016-10-01 4 views

答えて

3

は、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(次元の数)であります、あなたのケースでaf_randuする1.したがって、あなたの呼び出しがあるされている。

af_randu(&a, 1, &dims, f32); 

あなたが行列をしていたが、10×10を言うことができます場合は、あなたが

を行うだろう
dim_t dims[] = {10, 10} 
af_randu(&a, 2, dims, f32); 

詳細情報:私はArrayFireの開発者です。

+0

お返事ありがとうございました。私は遅刻の応答をお詫び申し上げます。私はランダムな配列を生成したくありません。私たちのグループはAfnumpyをプロジェクトに使用しています。カスタムCUDAカーネルを作成できるように、Afnumpy.d_array.arrオブジェクトをC++で公開する必要があります。私はaf_arrayオブジェクトへのハンドルを取得することができますが、af :: arrayオブジェクトを作成しようとすると、セグメント化エラーが発生します。 –

+0

私が言及したようにndims引数を修正した後でも、セグメンテーションフォルトが発生していますか? CUDAデバイスポインタを取得するには、[array :: device ()] [1]関数を使用する必要があります。このためのC-APIは[af_get_device_ptr()] [2]です。 [1]:http://arrayfire.org/docs/group__device__func__device.htm [2]:http://arrayfire.org/docs/group__device__func__mem.htm#ga58fda2d491cd27f31108e699b5aef506 – shehzan

+0

おかげ。これは機能します。 –

関連する問題