Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hello World CUDA compilation issues

Tags:

c++

c

macos

cuda

nvcc

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!

like image 784
mr-sk Avatar asked May 29 '14 23:05

mr-sk


1 Answers

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.

like image 167
Robert Crovella Avatar answered Oct 14 '22 13:10

Robert Crovella