코딩 중에 Matrix의 대형 연산이 필요하게 되어 EJML을 사용했었는데,
EJML은 Single-threaded library라서 32 core cpu 위에서도 computing power를 모두 사용하지 못했다.
주 사용 언어가 Java가 아니다보니 Matrix 연산에 최적화 되어있는 Python의 numpy나 pytorch 같은 모듈들이 생각이 나서,
Java code 위에서 Python code를 돌리고자 조사한 결과,
Jep과 Jython이라는 외부 라이브러리를 통해 Python code를 실행할 수 있다는 것을 알게 되었으나,
몇 차례 시도 끝에 시도는 실패로 끝났다.
가장 큰 원인은,
1. Jep
GIL을 사용한다.
pytorch의 autograd 또한 GIL을 기반으로 작동하기 때문에,
Jep을 이용하여 Pytorch autograd를 사용하면, 충돌이 발생한다.
2. Jython
Python 2.7을 내장하여 Interpreter로 사용한다고 한다.
덕분에 numpy, pytorch 모두 사용할 수 없다.