書寫makefile時,使用-fopenmp
命令選項時會報nvcc fatal : unknown option 『fopenmp』錯誤。正確的編譯選項是:
-xcompiler
-fopenmp
在核心中呼叫原子函式(例如atomicadd)時,如果編譯的時候出現」error: identifier 「atomicadd」 is undefined」;
那麼首先要確定的gpu顯示卡計算能力是否在1.1或者1.1以上,原子性操作在低端的計算能力 gpu 是不支援的,1.1 以上的計算能力才支援全域性記憶體的原子操作,1.2 以上的計算能力才支援共享記憶體的原子操作。
使用原子操作的話在編譯的時候需要指明gpu的計算能力,新增如下nvcc的編譯選項:
-gencode=arch=compute_35,code=\"sm_35,compute_35\"
使用nvcc -wall
時會提示nvcc fatal : unknown option 『wall』的錯誤。原來nvcc預設開啟所有警告,如果想禁止警告,使用-w
編譯選項。
具體使用nvcc --help
檢視幫助。
# check for 32-bit vs 64-bit
proc_type = $(strip $(shell uname -m | grep 64))
ifeq ($(
proc_type),)
flags+= -m32
else
flags+= -m64
endif
#cuda install path
cuda_install_path ?= /usr/local/cuda-5.5
#environment variable vpath
vpath=./include
#gpu architecture
gencode_sm35 := -gencode=arch=compute_35,code=\"sm_35,compute_35\"
cxx=nvcc
cxxflags=-g -xcompiler -fopenmp -ddebug
cxxflags+=$(
flags) $(
gencode_sm35)
#source files
cxxfiles = $(wildcard src/*.cpp)
cufiles =$(wildcard src/*.cu)
#header files
includes= -iinclude -i
$/include
#static lib
libdir=./lib
libs=$(
libdir)/libxmlextern.a
#preprocess
objdir=./obj
notdir_cxxfiles=$(notdir $)
notdir_cufiles=$(notdir $)
objs=$(addprefix ./obj/,$(patsubst %.cpp,%.o,$))
objs+=$(addprefix ./obj/,$(patsubst %.cu,%.o,$))
#compile
dicualg.out:
$ $(
make) -c ./src/xmlparser
$(cxx) -xcompiler -fopenmp -o $@
$^$(
libs)
$/%.o :src/%.cpp
$(cxx) $ $ -c $< -o $@
$/%.o :src/%.cu
$(cxx) $ $ -c $< -o $@
$/md5.o $/common.o:macro.h
$/gpu_decomposer3.o:cnre.h gpu_define3.h global.h
.phony:clean
clean:
rm obj/* ./dicualg.out
[1]nvcc命令編譯選項.
[2]
CUDA中NVCC的編譯器選項
cuda bin path nvcc.exe ccbin vcinstalldir bin c d debug dwin32 d console d mbcs xcompiler ehsc,w3,nologo,wp64,od,zi,rtc1,mtd i cuda inc path i.i.commo...
CUDA學習(一) NVCC的編譯過程
nvcc的編譯過程總體可以用乙個圖進行描述 nvcc的編譯過程分為離線編譯和即時編譯兩部分組成 離線編譯 綠色虛線框內 cuda源程式 即 cu檔案 在編譯前的預處理會被分為主機端 和裝置段 即圖中的左右分支 1.如圖右分支 在裝置端 會被編譯成ptx檔案 可以看作是用於裝置端的彙編檔案 或是直接可...
BCC編譯器幹嘛用的?
最近碰到奇葩的編譯器了,bcc gcc m32 fno stack protector dbios build date date m d y e p rombios.c rombios c bcc o rombios.s c c d i86 0 s rombios c make bcc 命令未找到...