Torch7는 lua기반으로 되어 있는데 cpp에서 사용하려면 cpptorch라는 Wrapper를 이용해야 한다.
이 cpptorch를 가장 최근의 Torch7와 사용하기 위해서 약간의 에러 픽스가 필요하다.
Torch7이 업데이트되면서 THNN 모듈이 빠졌기 때문에 본 포스팅에서는 합쳐서 컴파일하는 방식으로 진행한다.
먼저 3가지 파일을 다운받는다.
https://github.com/torch/torch7
torch/torch7
http://torch.ch. Contribute to torch/torch7 development by creating an account on GitHub.
github.com
torch/nn
Contribute to torch/nn development by creating an account on GitHub.
github.com
https://github.com/tuotuoxp/cpp-torch
tuotuoxp/cpp-torch
cpp-torch is a C++ library, implemented as a wrapper around Torch libraries. - tuotuoxp/cpp-torch
github.com
각각 압축을 풀어서 torch/nn을 torch/torch7에 합친다.
충돌이 몇 가지 나오는데 torch/torch7을 기준으로 하여 Overwrite 하지 않는다.
필자는 C:\TorchWorkspace\torch7-master 경로에 압축을 풀었다.
이 경로를 Base로 하여 C:\TorchWorkspace\torch7-master\lib\CMakeLists.txt를 수정한다.
C:\TorchWorkspace\torch7-master\lib\THNN\CMakeLists.txt 에서 Torch를 찾는 코드를 해제한다.
이제 CMake를 실행해 보자.
WITH_OPENMP 가 체크되어 있는데 해제한 뒤에 [Configure]->[Generate]를 한다.
Warning은 나오지만 넘어가도 무방하다.
솔루션 파일을 열면 몇 가지 프로젝트가 보이는데 선택된 두 항목만 컴파일할 것이다.
먼저 TH부터 컴파일한다. 무사히 컴파일될 것이다.
그다음 THNN의 속성에서 포함 디렉터리를 아래와 같이 추가한다.
이 역시 빌드 성공이다. 이제 Torch7의 컴파일은 끝났다.
이제 cpptorch를 컴파일할 차례이다.
Configure를 해보면 Torch_DIR을 찾는데 cmake버전에 따라 넣어줘도 안 되는 경우가 있다.
그래서 C:\TorchWorkspace\cpp-torch-master\CMakeLists.txt를
14-16 라인의 Find Torch를 해제하자.
CMake에서 THNN_LIBRARY와 TH_LIBRARY 두 항목을 세팅한다.
[Generate] 후 VS를 열고 다음 4가지 포함 디렉터리를 세팅한다.
자. 이제 세팅은 다 되었는데 컴파일하면 에러가 난다.
이 에러는 소스를 직접 수정해줘야 한다.
에러 상황은 cpptorch가 torch7의 업데이트를 반영하지 못한 것이다.
에러 위치에 parameter 0을 추가해준다. 다음과 같이 고쳐진다.
이제 컴파일하면 성공하는 것을 볼 수가 있다.
Visual Studio를 관리자 권한으로 실행하여 solution을 다시 열자.
그리고 INSTALL project 만 build 하자.
보기 좋고 사용하기 좋게 라이브러리화 되어 정리된다.
bin 폴더에 cpptorch.dll이, lib 폴더에 cpptorch.lib가 들어있는 것을 볼 수 있다.
'Tech' 카테고리의 다른 글
[OpenSSL] EVP 방식으로 OpenSSL 사용하기 2/2 (0) | 2018.08.15 |
---|---|
[OpenSSL] EVP 방식으로 OpenSSL 사용하기 1/2 (0) | 2018.08.09 |
PKCS#5 패딩과 PKCS#7 패딩의 차이점 (0) | 2018.08.06 |
몇가지 Random Number Generation 예제 (0) | 2018.08.06 |
[OpenSSL] AES 암호화 복호화 (0) | 2018.08.05 |