__gloabal__ functions inside a class

Can global function be member of a class?

The CUDA programming guide only says (section D.2.5.2) that global functions cannot be static members. However, when I try non-static global function, I get “illegal combination of memory qualifiers” error (CUDA 4.0 RC2).

class A



__global__ void ker(int n, float* a, float* b);



void A::ker(int n, float* a, float* b)


    int t = blockIdx.x * blockDim.x + threadIdx.x;

    if ( t < n ) a[t] += b[t];