Hello All,
I am having CUDA error mixed device execution, when running my code in emulation mode ( -deviceemu) and I can’t figure out what is wrong, I am using following makefie.
[codebox]CUDA_INC_PATH=/usr/local/cuda/include
CUDA_LIB_PATH=/usr/local/cuda/lib64
INCLUDE_PATH=…/include/
CXX=g++
CXXFLAGS=-Wall -I$(INCLUDE_PATH)
NVCC=nvcc
NVCFLAGS= -deviceemu -c -O3 -I$(CUDA_INC_PATH) -I$(INCLUDE_PATH) --host-compilation=c++ --ptxas-options=-v -arch=sm_13
LDFLAGS=-L$(CUDA_LIB_PATH) -lcublasemu -lcudart
all: sim
cpu_context.o: cpu_context.cu …/include/cpu_context.h
$(NVCC) $(NVCFLAGS) cpu_context.cu -o cpu_context.o
core.o: core.cu …/include/cpu_context.h …/include/processor.h …/include/decode.h …/include/execute.h …/include/simulator.h …/include/tools.h
$(NVCC) $(NVCFLAGS) core.cu -o core.o
core_main.o: core_main.cu …/include/cpu_context.h …/include/tools.h …/include/processor.h …/include/simulator.h
$(NVCC) $(NVCFLAGS) core_main.cu -o core_main.o
sim: core_main.o core.o cpu_context.o
$(NVCC) $(LDFLAGS) ../common/tools.o cpu_context.o core.o core_main.o -o sim
clean:
\rm -f *.o
\rm -f sim
\rm -f *~
\rm -f *.linkinfo[/codebox]
According to programming guide, All code for an application, including any libraries used, must be compiled consistently either for device emulation or for device execution. Linking code compiled for device emulation with code compiled for device execution causes the following runtime error to be returned upon initialization: cudaErrorMixedDeviceExecution.
I have used cublasemu instead of -lcublasemu, still this doesn’t work. Can’t figure out what is it that not compiled with device emulation. my ldd to the executable is as follows:
linux-vdso.so.1 => (0x00007fff98bff000)
libcublasemu.so.2 => /usr/local/cuda/lib64/libcublasemu.so.2 (0x00007f75a5308000)
libcudart.so.2 => /usr/local/cuda/lib64/libcudart.so.2 (0x00007f75a50c8000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f75a4dbb000)
libm.so.6 => /lib/libm.so.6 (0x00007f75a4b36000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f75a491e000)
libc.so.6 => /lib/libc.so.6 (0x00007f75a45ac000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007f75a4390000)
libdl.so.2 => /lib/libdl.so.2 (0x00007f75a418c000)
librt.so.1 => /lib/librt.so.1 (0x00007f75a3f84000)
/lib64/ld-linux-x86-64.so.2 (0x00007f75a5a93000)
Please help. Thanks in advance.