인프런 커뮤니티 질문&답변

심현승 Shim님의 프로필 이미지
심현승 Shim

작성한 질문수

CUDA 프로그래밍 (4) - C/C++/GPU 병렬 컴퓨팅 - 행렬 matrix 곱하기

25-F closing - 클로징

소스 코드 에러 문의 드립니다

해결된 질문

작성

·

233

0

소스코드 그대로 돌리면, 아래와 같은 에러가 발생합니다. (25장 전체 소스가 모두 동일합니다)

이유와 수정 방법을 알고 싶읍니다.

// 25d-gemm-alignedTile.cu

/tmp/tmpg97edtlu/25d-gemm-alignedTile.cu(98): error: "beta" is ambiguous

 

1 error detected in the compilation of "/tmp/25d-gemm-alignedTile.cu".

 

답변 1

0

안녕하세요

소스 코드에서 컴파일 에러가 났다고 문의가 들어온 경우는 처음입니다만, 원인을 생각해 보겠습니다.

 

아시다시피, 컴파일 에러는 컴파일러의 다양한 세팅을 모두 점검해 봐야 원인을 알 수 있습니다만,

현재 상황으로는 "beta" 라는 변수명, 함수명 에서, namespace conflict 가 난 상황으로 보입니다.

 

우선, 소스 코드 전체에서, "beta" 라는 이름의 변수를 사용하고 있는데,

C++ 함수 중에, std namespace 에 std::beta() 가 있긴 합니다만, 보통 namespace 설정으로, 충돌이 벌어지지는 않습니다.

 

혹시 C++ 컴파일러 버전이 낮으면, 예전 visual C++ compiler 등에서는 충돌이 벌어질 수 있습니다.

컴파일러를 버전 업 하거나, namespace 등의 컴파일러 세팅을 잘 점검해 볼 필요가 있을 겁니다.

 

현재 include path 에서 충돌이 날 만한 헤더 파일들을 제거하는 방법이 있고,

아니면, "beta" 라는 변수를 모두 "xxxbeta" 와 같이, 전혀 충돌이 나지 않을 함수/변수명으로 교체하면 될 겁니다.

 

전체적으로 컴파일러 쪽 문제로, name conflict 가 발생한 상황이므로,

namespace 설정을 체크해 보시거나, beta 라는 변수의 namespace를 완전히 분리하거나,

아예 beta 라는 변수의 이름을 변경하면 해결 될 것입니다.

 

감사합니다.

 

심현승 Shim님의 프로필 이미지
심현승 Shim

작성한 질문수

질문하기