2014-06-04 6 views
3

저는 C++ 클래스로 conv net 구현을했습니다. 이 클래스는 CUDA 코드를 생성하는 템플릿 라이브러리 (mshadow) 위에 구축되므로 헤더 파일 형식을 취합니다. 따라서 nvcc를 사용하여 컴파일 된 파일에서만 사용할 수 있습니다. 이제는 매개 변수, 데이터 등을 쉽게로드하고 저장하기 위해 Python에서이 클래스를 래핑하려고합니다.cuda를 사용하는 cython 확장

Cython을 사용하여 C++ 클래스를 래핑하는 방법은 무엇입니까? npcuda-example에서 C++ 클래스 주위에 래퍼 pyx 파일을 작성하는 방법을 보여줍니다. 불행히도이 예제에서 pyx 파일은 cpp 파일로 컴파일됩니다. 이것은 pyx 파일에 클래스 헤더를 포함하고 nvcc를 사용하여 컴파일해야하기 때문에 나에게 적합하지 않습니다.

distutils가 확장을 컴파일하려고 할 때 nvcc가 호출되도록 래퍼 pyx 파일을 강제로 cu 파일로 컴파일하는 몇 가지 방법이 있다면 npcuda-example의 setup.py를 사용할 수 있다고 생각합니다.

아이디어가 있으십니까?

npcuda - 예

답변

1

에서, wrapper.pyx가 결합됩니다 * 내가 당신이 원하는 것을 정확히 추측

cdef extern from "src/manager.hh" 

을 정의하여 .CU?