cudaMalloc()を利用しないでDeviceメモリを確保する方法

__device__をつけてバッファを用意する。
HOST側のプログラムからは次の関数を利用してアドレスを取得する。

cudaError_t cudaGetSymbolAddress (void **devPtr, const char * symbol);

こんな感じになるかな

__device__ int d_buff[256];

int main(void)
{
    int h_data[256] = {0,}
    int *d_ptr;
    cudaGetSymbolAddress((void**)&d_ptr, d_buff);
    cudaMemcpy(d_ptr, h_data, sizeof(int) * 256, cudaMemcpyHostToDevice);
    // 以下略
}

ただ、cudaMalloc()を使わないことに、特にメリットはないと思う。
素直にcudaMalloc()を使う方が良いだろう。