这是我的头文件的一部分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
.
非常感谢你!!!!