diff --git a/Makefile b/Makefile index 865f6fa..8be333b 100644 --- a/Makefile +++ b/Makefile @@ -203,14 +203,14 @@ train_gpt2cu: train_gpt2.cu cudnn_att.o train_gpt2fp32cu: train_gpt2_fp32.cu $(NVCC) $(NVCC_FLAGS) $< $(NVCC_LDFLAGS) $(NVCC_INCLUDES) $(NVCC_LDLIBS) $(CUDA_OUTPUT_FILE) -test_gpt2cu: test_gpt2.cu - $(NVCC) $(NVCC_FLAGS) $(PFLAGS) $< $(NVCC_LDFLAGS) $(NVCC_INCLUDES) $(NVCC_LDLIBS) $(CUDA_OUTPUT_FILE) +test_gpt2cu: test_gpt2.cu cudnn_att.o + $(NVCC) $(NVCC_FLAGS) $(PFLAGS) $< $(NVCC_LDFLAGS) $(NVCC_INCLUDES) $(NVCC_LDLIBS) $(CUDA_OUTPUT_FILE) cudnn_att.o test_gpt2fp32cu: test_gpt2_fp32.cu $(NVCC) $(NVCC_FLAGS) $< $(NVCC_LDFLAGS) $(NVCC_INCLUDES) $(NVCC_LDLIBS) $(CUDA_OUTPUT_FILE) -profile_gpt2cu: profile_gpt2.cu - $(NVCC) $(NVCC_FLAGS) $(PFLAGS) -lineinfo $< $(NVCC_LDFLAGS) $(NVCC_INCLUDES) $(NVCC_LDLIBS) $(CUDA_OUTPUT_FILE) +profile_gpt2cu: profile_gpt2.cu cudnn_att.o + $(NVCC) $(NVCC_FLAGS) $(PFLAGS) -lineinfo $< $(NVCC_LDFLAGS) $(NVCC_INCLUDES) $(NVCC_LDLIBS) $(CUDA_OUTPUT_FILE) cudnn_att.o clean: $(REMOVE_FILES) $(TARGETS) diff --git a/profile_gpt2.cu b/profile_gpt2.cu index 5b043e0..2ea7f98 100644 --- a/profile_gpt2.cu +++ b/profile_gpt2.cu @@ -49,9 +49,7 @@ int main() { cublasCheck(cublasSetMathMode(cublas_handle, cublas_math_mode)); // setup the (global) cuBLASLt workspace cudaCheck(cudaMalloc(&cublaslt_workspace, cublaslt_workspace_size)); - #ifdef ENABLE_CUDNN - checkCudnnErr(cudnnCreate(&cudnn_handle)); - #endif + create_cudnn(); // build the GPT-2 model from a checkpoint GPT2 model; @@ -81,10 +79,7 @@ int main() { // free gpt2_free(&model); - #ifdef ENABLE_CUDNN - if (cudnn_workspace != NULL) { cudaCheck(cudaFree(cudnn_workspace)); } - checkCudnnErr(cudnnDestroy(cudnn_handle)); - #endif + destroy_cudnn(); cudaCheck(cudaFree(cublaslt_workspace)); cublasCheck(cublasDestroy(cublas_handle)); cublasCheck(cublasLtDestroy(cublaslt_handle)); diff --git a/test_gpt2.cu b/test_gpt2.cu index 67afa50..1a7df63 100644 --- a/test_gpt2.cu +++ b/test_gpt2.cu @@ -106,10 +106,8 @@ int main(int argc, char *argv[]) { cublasMath_t cublas_math_mode = enable_tf32 ? CUBLAS_TF32_TENSOR_OP_MATH : CUBLAS_DEFAULT_MATH; cublasCheck(cublasSetMathMode(cublas_handle, cublas_math_mode)); cudaCheck(cudaMalloc(&cublaslt_workspace, cublaslt_workspace_size)); - - #ifdef ENABLE_CUDNN - checkCudnnErr(cudnnCreate(&cudnn_handle)); - #endif + // set up cuDNN (noop if not available) + create_cudnn(); // build the GPT-2 model from a checkpoint GPT2 model; @@ -326,10 +324,7 @@ int main(int argc, char *argv[]) { free(grads_memory_cpu); free(grads_memory_cpu_float); gpt2_free(&model); - #ifdef ENABLE_CUDNN - if (cudnn_workspace != NULL) { cudaCheck(cudaFree(cudnn_workspace)); } - checkCudnnErr(cudnnDestroy(cudnn_handle)); - #endif + destroy_cudnn(); cudaCheck(cudaFree(cublaslt_workspace)); cublasCheck(cublasDestroy(cublas_handle)); cublasCheck(cublasLtDestroy(cublaslt_handle));