[토치 (Torch)] error: more than one operator "==" matches these operands

 

Lua 기반의 딥 러닝 프레임워크인 토치(Torch)를 빌드하다 보면 error: more than one operator "==" matches these operands 와 같은 에러 메시지가 뜰 때가 있습니다. 이 현상은 CUDA가 9.0 버전에서부터 절반 정확도의 부동 소수점 연산을 지원하면서 생기는 문제입니다. 이럴 때에는 빌드 전에 다음과 같이 환경 변수를 추가로 지정해주면 됩니다.

 

export TORCH_NVCC_FLAGS="-D__CUDA_NO_HALF_OPERATORS__"

 

이 글을 쓸 때에 https://github.com/torch/torch7/issues/1086 를 참조하였습니다.

[쿠다] CUDA, CUDNN 설치 여부 및 버전 확인

 

 

1. CUDA

 

nvcc --version

--

< 결과 >

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2016 NVIDIA Corporation

Built on Tue_Jan_10_13:22:03_CST_2017

Cuda compilation tools, release 8.0, V8.0.61

 

 

2. CUDNN

 

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

--

< 결과 >

#define CUDNN_MAJOR      5

#define CUDNN_MINOR      1

#define CUDNN_PATCHLEVEL 10

--

#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

 

#include "driver_types.h"

 

 

참고한 사이트:

https://stackoverflow.com/questions/9727688/how-to-get-the-cuda-version

https://stackoverflow.com/questions/31326015/how-to-verify-cudnn-installation

E0201 15:14:22.851824 18611 common.cpp:104] Cannot create Cublas handle. Cublas won't be available.

E0201 15:14:22.859390 18611 common.cpp:111] Cannot create Curand generator. Curand won't be available.

F0201 15:14:22.868336 18611 syncedmem.hpp:18] Check failed: error == cudaSuccess (30 vs. 0)  unknown error


CUDA를 사용하려고 할 때에 이런 에러 메시지가 뜰 때가 있습니다. 모든 설치 과정을 올바르게 마쳤는데도 이런 에러 메시지가 뜬다면


cd /home/[자기 계정]/NVIDIA_CUDA-7.5_Samples/0_Simple/matrixMulDrv

make

sudo ./matrixMulDrv


해서 관리자 계정으로 CUDA 예제를 한 번 돌리면 문제가 해결됩니다. CUDA는 설치한다고 끝이 아니고, 설치한 후에 한 번 사용해줘야 그 다음부터 제대로 돌아가는 듯 합니다. 만약 위의 방법으로 안 된다면 예제 디렉토리에 있는 다른 예제들을 두세 개 정도 더 실행해 보세요.


( 간접적인 힌트를 얻은 곳: https://groups.google.com/forum/#!topic/caffe-users/DeLNtQ9i0HY )

 

+ Recent posts