본문 바로가기
열정/연구 일지

[연구 일지] Cython compile

by lime9 2024. 2. 8.

이번 Semantic communication에 대해 연구를 하면서 연구 과정을 하나하나 정리해볼 예정이다.

기록을 해두면 나중에 필요할 때 참고도 가능하고,

내 연구 정리에도 도움이 될 것 같아 시작하게 되었다.

 

 

1. PyCharm Professional 설치

https://www.jetbrains.com/ko-kr/pycharm/download/?section=windows

 

PyCharm 다운로드: JetBrains가 만든 전문 개발자용 Python IDE

 

www.jetbrains.com

 

연구는 PyCharm Professional에서 수행 중이다.

학교 이메일이 있으면 무료로 사용 가능하니 이메일 인증을 통해 사용하면 된다.

원래는 무료 버전인 Community를 사용하다가 여러 부분(Jupyter notebook 사용 불가, Cython 사용 불가)의 불편함으로 인해 Professional을 사용하게 되었다. (진작 쓸 걸...)

 

지금 작성 중인 코드에서 Cython을 통해 빠르게 계산을 진행하는 부분이 있었다.

Cython은 단 한 번도 사용해 본 적이 없어 사용 방법을 찾는 데 오래 걸렸다.

 

2. Visual Studio Installer 설치

Cython 코드를 build하려면 Visual Studio Installer가 필요하다.

https://visualstudio.microsoft.com/visual-cpp-build-tools/

 

Microsoft C++ Build Tools - Visual Studio

The Microsoft C++ Build Tools provides MSVC toolsets via a scriptable, standalone installer without Visual Studio. Recommended if you build C++ libraries and applications targeting Windows from the command-line (e.g. as part of your continuous integration

visualstudio.microsoft.com

 

나는 몇 가지 추가 패키지와 함께 설치를 진행했다.

대략 30분 정도 걸린 것 같다.

Visual Studio Installer 설치 과정

 

설치가 완료되면 재부팅(권장) 후, 다음 단계를 수행한다.

 

3. setup.py 파일 build

Cython 파일과 함께 있는 setup.py을 build한다.

https://www.jetbrains.com/help/pycharm/cython.html

 

Cython support | PyCharm

 

www.jetbrains.com

 

위 과정을 따라서 진행해도 되고,

setup.py가 있는 위치에 아래의 코드를 PyCharm Ternimal 창에 입력해도 된다.

python setup.py build_ext --inplace

 

그러면 build가 완료된다.

 

에러 발생?!

몇 가지 warning message가 떠서 불안했었는데, 불안은 역시나 현실이 된다.

해당 function을 사용하는 코드를 돌려보니 error가 발생했다.

읽어보니 cython 파일 내의 np.float가 문제였다.

더 이상 np.float는 사용하지 않는 것 같다.

따라서 아래처럼 변경해주었다.

# previous code
# DTYPE = np.float

# revised code
DTYPE = np.float64

 

수정된 코드로 다시 빌드하고, function을 사용하는 코드를 돌려보니 에러 없이 수행되는 것을 확인할 수 있었다.