호스트 코드에 대해 nvcc가 C++로 기본 설정되어 있기 때문에 나머지 호스트 코드가 C가 아닌 이상 extern "C"는 더 이상 필요하지 않습니다.extern "C"가 더 이상 cuda에 필요하지 않습니까?
-2
A
답변
2
실제로 "더 이상"이라는 단어는 다소 혼란 스럽습니다. 나는 아무것도 변화하지 않았다고 생각한다. Robert Crovella는 기술적 인면에서 그의 대답에서 extern "C"
을 사용하는 것과 사용하지 않는 것의 주된 차이점을 지적했다.
그러나, 나는 혼란에 대한 이유 중 하나가 될 수있는 CUDA 커널에 대한 extern "C"
를 사용하여 암시하는 중요한 차이점을 지적하고 싶습니다 :
CUDA는 드라이버 API를 사용하여, "CUDA 모듈"과 "CUDA 기능"을 수동으로로드 할 수 있습니다. CUBIN (CUDA 바이너리) 또는 PTX 파일을 산출하기 위해,
__global__ void exampleKernel(float** data) { ... }
이는 NVCC 컴파일 할 수 있습니다 : 지금과 같은 커널을 포함하는 .CU 파일을 상상한다. 는 "CUDA 모듈"모듈로이 파일을로드 한 후, 하나는 기능 (즉, CUDA 커널)에 액세스 할 수 있습니다 :
cuModuleLoad(&cuModule, modulePath);
cuModuleGetFunction(&cuFunction, cuModule, "exampleKernel");
대부분 성공하지 못합니다 두 번째 호출 : 커널, exampleKernel
의 이름 것 C++ 함수로 간주되기 때문에 은 일 것입니다 (참조 Name mangling 참조). 커널이 예에서와 같이, extern "C"
로 선언
cuModuleGetFunction(&cuFunction, cuModule, "exampleKernel");
액세스 할 수 있습니다 다음
extern "C" __global__ void exampleKernel(float** data) { ... }
.
1
예 사실 nvcc는 기본적으로 C++ 연결 스타일을 사용합니다. 나는 당신이 "더 이상"무엇을 의미하는지 확신하지 못합니다. 나는 그것이 오랫동안이 방법이었다고 생각한다.
다른 C/C++ 코드를 믹스와 마찬가지로, 대신 C 스타일을 외부 링크를 나타 내기 위해
extern "C" {}
구조를 사용할 수 있습니다.
관련 문제
- 1. PROVIDE_BACKGROUND 권한이 더 이상 필요하지 않습니까?
- 2. Class.forName (JDBC_DRIVER)이 더 이상 필요하지 않습니까?
- 3. 더 이상 Webhook 콜백이 필요하지 않습니까?
- 4. cuInit (0)은 더 이상 필요하지 않습니까?
- 5. Firefox에서 RSS 자동 검색이 더 이상 필요하지 않습니까?
- 6. 따옴표로 HTML5의 속성 값을 묶는 것이 더 이상 필요하지 않습니까?
- 7. Java 5 이상에서 serialVersionUID가 더 이상 필요하지 않습니까?
- 8. -moz 및 -webkit css가 더 이상 필요하지 않습니까?
- 9. Excel 수식을 렌더링하여 더 이상 다른 열이 필요하지 않습니까?
- 10. javax.servlet.jsp.tagext.TagSupport를 더 이상 사용하지 않습니까?
- 11. Android - JNI에서 "extern"C가 필수입니까?
- 12. extern C가 각각의 함수를 래핑해야합니까?
- 13. FacebookSDKResources.bundle은 더 이상 응용 프로그램에 필요하지 않습니다
- 14. 더 이상 Flash Builder 4가 필요하지 않습니다!
- 15. Zepto.js를 확장하면 더 이상 jQuery가 필요하지 않습니다.
- 16. WSE2는 더 이상 사용되지 않습니까?
- 17. Clearbox가 더 이상 사용되지 않습니까?
- 18. PFLogInViewController가 더 이상 인식되지 않습니까?
- 19. CreateProcessW가 더 이상 사용되지 않습니까?
- 20. MSMQ는 더 이상 사용되지 않습니까?
- 21. Ember.js에서 더 이상 사용되지 않습니까?
- 22. MFC가 더 이상 사용되지 않습니까?
- 23. LDAP가 더 이상 사용되지 않습니까?
- 24. Dojo.js는 더 이상 사용되지 않습니까?
- 25. SetTimer는 더 이상 사용되지 않습니까?
- 26. Eclipse가 더 이상 시작하지 않습니까?
- 27. MSMQ가 더 이상 사용되지 않습니까?
- 28. OCR은 더 이상 문제가되지 않습니까?
- 29. EventCollection은 더 이상 사용되지 않습니까?
- 30. 9P가 더 이상 사용되지 않습니까?
'.cu' 파일을 C 파일로 컴파일하여 'extern "C"'가있는 모든 함수 프로토 타입이 파손되지 않도록 요청하는 방법이 있습니까? – user14717
@ 닉, 당신은 모든 기능을 vanadlize하지 않아도됩니다. 'extern "C {"[모두들 여기에]}'안에 그들을 모두 감쌀뿐입니다. –