Hello World CUDA compilation issues

c, c++, cuda, macos, nvcc

Solution

Rename your file to `hello.cu`

nvcc by default sends `.c` or `.cpp` files directly to the host compiler without doing any device code inspection or compilation on them.

There are various options to change this behavior.

Problem

I'm using the CUDA by Example book and attempting to compile the first real example in the book. I'm on OSX 10.9.2: My source is: ``` @punk ~/Documents/Projects/CUDA$ /Developer/NVIDIA/CUDA-6.0/bin/nvcc hello.c nvcc warning : The 'compute_10' and 'sm_10' architectures are deprecated, and may be removed in a future release. hello.c:6:1: error: unknown type name '__global__' __global__ void kernel(void) { ^ hello.c:6:12: error: expected identifier or '(' __global__ void kernel(void) { ^ hello.c:10:3: error: use of undeclared identifier 'kernel' kernel<<<1,1>>>(); ^ hello.c:10:11: error: expected expression kernel<<<1,1>>>(); ^ hello.c:10:17: error: expected expression kernel<<<1,1>>>(); ^ hello.c:10:19: error: expected expression kernel<<<1,1>>>(); ^ 6 errors generated. ``` And my source is simply: ``` punk ~/Documents/Projects/CUDA$ cat hello.c #include <cuda.h> #include <stddef.h> #include <stdio.h> //#include "common/book.h" __global__ void kernel(void) { } int main(void) { kernel<<<1,1>>>(); printf("oh hai\n"); return 0; } ``` I also tested the `/Developer/NVIDIA/CUDA-6.0/samples/1_Utilities/deviceQuery` example and that built and ran fine. Any help is greatly appreciated! TIA!

Original source