これは私のヘッダーファイルの一部ですaes_locl.h
:
.
.
# define SWAP(x) (_lrotl(x, 8) & 0x00ff00ff | _lrotr(x, 8) & 0xff00ff00)
# define GETU32(p) SWAP(*((u32 *)(p)))
# define PUTU32(ct, st) { *((u32 *)(ct)) = SWAP((st)); }
.
.
ファイルから関数.cu
を宣言し、__ global__
次のようなヘッダー ファイルをインクルードしました。
#include "aes_locl.h"
.....
__global__ void cudaEncryptKern(u32* _Te0, u32* _Te1, u32* _Te2, u32* _Te3, unsigned char* in, u32* rdk, unsigned long* length)
{
u32 *rk = rdk;
u32 s0, s1, s2, s3, t0, t1, t2, t3;
s0 = GETU32(in + threadIdx.x*(i) ) ^ rk[0];
}
これにより、次のエラーメッセージが表示されます。
エラー: __ device__/__ global__ 関数からのホスト関数の呼び出しは、デバイス エミュレーション モードでのみ許可されます
プログラマーがその方法でマクロを正確に呼び出すサンプル コードがあります。
このように呼び出すことはできますか、それともまったく不可能ですか? そうでない場合は、マクロを書き直して目的の値を に割り当てる最善の方法についてのヒントをいただければ幸いS0
です。
事前にどうもありがとうございました!!!