Closed sunilkgrao closed 6 years ago
nv-wavenet requires sm_60 or later, since it relies on hardware support for half-precision math.
It should be possible to modify the code to use only floats so that it can compile for sm_52, but we do not have plans to support it in nv-wavenet.
I cannot seem to compile for target arch sm_52
It works if I specify sm_60 or sm_70.
Is there an issue with compiling for a gtx titan x (sm_52) or is this meant to be supported?
running 'make nv_wavenet_test' outputs the following:
`nvcc -arch=sm_30 -std=c++11 --use_fast_math -lineinfo -maxrregcount 512 nv_wavenet_test.cu matrix.cpp nv_wavenet_reference.cpp -o nv_wavenet_test nv_wavenet_util.cuh(89): error: more than one conversion function from "half" to a built-in type applies: function "half::operator float() const" function "half::operator short() const" function "half::operator unsigned short() const" function "half::operator int() const" function "half::operator unsigned int() const" function "half::operator long long() const" function "half::operator unsigned long long() const" function "half::operator __nv_bool() const"
nv_wavenet_util.cuh(89): error: more than one conversion function from "half" to a built-in type applies: function "half::operator float() const" function "half::operator short() const" function "half::operator unsigned short() const" function "half::operator int() const" function "half::operator unsigned int() const" function "half::operator long long() const" function "half::operator unsigned long long() const" function "half::operator __nv_bool() const"
2 errors detected in the compilation of "/tmp/tmpxft_000024ab_00000000-8_nv_wavenet_test.cpp1.ii". Makefile:70: recipe for target 'nv_wavenet_test' failed make: *** [nv_wavenet_test] Error 1 `
This is the makefile:
`NVCC = nvcc
ARCH=compute_52 -code=sm_52,compute_52
NVCC_FLAGS = -arch=$(ARCH) -std=c++11
nvcc_ARCH += -gencode=arch=compute_52,code=\"sm_52,compute_52\"
NVCC_FLAGS += $(nvcc_ARCH) -std=c++11
ARCH=sm_30# \ -gencode=arch=compute_30,code=sm_30 \ -gencode=arch=compute_50,code=sm_50 \ -gencode=arch=compute_52,code=sm_52 \ -gencode=arch=compute_60,code=sm_60 \ -gencode=arch=compute_61,code=sm_61 \ -gencode=arch=compute_62,code=sm_62 \ -gencode=arch=compute_70,code=sm_70 \ -gencode=arch=compute_70,code=compute_70
NVCC_FLAGS = -arch=$(ARCH) -std=c++11
NVCC_FLAGS += --use_fast_math
MAX_REGS = 512
HEADERS = nv_wavenet_util.cuh \ nv_wavenet_singleblock.cuh \ nv_wavenet_dualblock.cuh \ nv_wavenet_persistent.cuh \ nv_wavenet.cuh \ matrix_math.cuh \ softmax.cuh \ nv_wavenet_conversions.cuh
default: test
test : math_test nv_wavenet_test math_test nv_wavenet_test
nv_wavenet_perf : nv_wavenet_perf.cu $(HEADERS) $(NVCC) $(NVCC_FLAGS) -maxrregcount $(MAX_REGS) --ptxas-options=-v nv_wavenet_perf.cu -o nv_wavenet_perf
nv_wavenet_test : nv_wavenet_test.cu matrix.cpp matrix.h nv_wavenet_reference.cpp $(HEADERS) $(NVCC) $(NVCC_FLAGS) -lineinfo -maxrregcount $(MAX_REGS) nv_wavenet_test.cu matrix.cpp nv_wavenet_reference.cpp -o nv_wavenet_test
math_test : math_test.cu matrix_math.cuh matrix.cpp softmax.cuh $(NVCC) $(NVCC_FLAGS) math_test.cu matrix.cpp -lineinfo -o math_test
clean: rm nv_wavenet_perf nv_wavenet_test math_test `