title: CUDA Dynamic Parallelism MakeFile
body: <p>This is my first program using Dynamic Parallelism and I am unable to compile the code. I need to be able to run this for my research project at college and any help will be most appreciated:</p>
  
  <p>I get the following error:</p>
  
  <pre><code>/cm/shared/apps/cuda50/toolkit/5.0.35/bin/nvcc -m64 -dc  -gencode arch=compute_35,code=sm_35 -rdc=true -dlink -po maxrregcount=16 -I/cm/shared/apps/cuda50/toolkit/5.0.35 -I. -I.. -I../../common/inc -o BlackScholes.o -c BlackScholes.cu
  g++ -m64 -I/cm/shared/apps/cuda50/toolkit/5.0.35 -I. -I.. -I../../common/inc -o BlackScholes_gold.o -c BlackScholes_gold.cpp
  g++ -m64 -o BlackScholes BlackScholes.o BlackScholes_gold.o -L/cm/shared/apps/cuda50/toolkit/5.0.35/lib64 -lcudart -lcudadevrt
  BlackScholes.o: In function `__sti____cudaRegisterAll_47_tmpxft_000059cb_00000000_6_BlackScholes_cpp1_ii_c58990ec()':
  tmpxft_000059cb_00000000-3_BlackScholes.cudafe1.cpp:(.text+0x1354): undefined reference to `__cudaRegisterLinkedBinary_47_tmpxft_000059cb_00000000_6_BlackScholes_cpp1_ii_c58990ec'
  collect2: ld returned 1 exit status
  make: *** [BlackScholes] Error 1
  </code></pre>
  
  <p>I have one cpp file, one cu file and one cuh file. Important portions of my makefile are below:</p>
  
  <pre><code># CUDA code generation flags
  #GENCODE_SM10    := -gencode arch=compute_10,code=sm_10
  GENCODE_SM20     := -gencode arch=compute_20,code=sm_20
  GENCODE_SM30     := -gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35
  GENCODE_SM35     := -gencode arch=compute_35,code=sm_35
  #GENCODE_FLAGS    := $(GENCODE_SM10) $(GENCODE_SM20) $(GENCODE_SM30)
  GENCODE_FLAGS    := $(GENCODE_SM35)
  
  # OS-specific build flags
  ifneq ($(DARWIN),)
        LDFLAGS   := -Xlinker -rpath $(CUDA_LIB_PATH) -L$(CUDA_LIB_PATH) -lcudart -lcudadevrt
        CCFLAGS   := -arch $(OS_ARCH)
  else
    ifeq ($(OS_SIZE),32)
        LDFLAGS   := -L$(CUDA_LIB_PATH) -lcudart -lcudadevrt
        CCFLAGS   := -m32
    else
        LDFLAGS   := -L$(CUDA_LIB_PATH) -lcudart -lcudadevrt
        CCFLAGS   := -m64
    endif
  endif
  
  # OS-architecture specific flags
  ifeq ($(OS_SIZE),32)
        NVCCFLAGS := -m32 -dc
  else
        NVCCFLAGS := -m64 -dc
  endif
  
  # Debug build flags
  ifeq ($(dbg),1)
        CCFLAGS   += -g
        NVCCFLAGS += -g -G
        TARGET := debug
  else
        TARGET := release
  endif
  
  
  # Common includes and paths for CUDA
  INCLUDES      := -I$(CUDA_INC_PATH) -I. -I.. -I../../common/inc
  
  # Additional parameters
  MAXRREGCOUNT  :=  -po maxrregcount=16
  
  # Target rules
  all: build
  
  build: BlackScholes
  
  BlackScholes.o: BlackScholes.cu
          $(NVCC) $(NVCCFLAGS) $(EXTRA_NVCCFLAGS) $(GENCODE_FLAGS) -rdc=true -dlink $(MAXRREGCOUNT) $(INCLUDES) -o $@ -c $&lt;
  
  BlackScholes_gold.o: BlackScholes_gold.cpp
          $(GCC) $(CCFLAGS) $(INCLUDES) -o $@ -c $&lt;
  
  BlackScholes: BlackScholes.o BlackScholes_gold.o
          $(GCC) $(CCFLAGS) -o $@ $+ $(LDFLAGS) $(EXTRA_LDFLAGS)
          mkdir -p ../../bin/$(OSLOWER)/$(TARGET)
          cp $@ ../../bin/$(OSLOWER)/$(TARGET)
      enter code here
  
  run: build
          ./BlackScholes
  </code></pre>