Comunidad Empresarial Dinamiza

 
 
  • No hay categorías

 
No te pierdas...
 

 
Publicado 02/08/2019 por admin en
 
 

c# cuda 예제

변수 래퍼 함수 «C» 플로트 __declspec(dllexport) __stdcall GetExecutionTime(){반환 sExecutionTime;} 이러한 종류의 변수에 직접 액세스할 수 있지만 (C # 부품에 표시 될 예정) 래퍼 함수 접근 방식 (get / set 접근자처럼 작동 할 수 있음)에서는 훨씬 쉽습니다. 마지막으로 예제 커널 function:// cuda 커널 (내부)_global__ void some_calculations (float *a, 서명되지 않은 int N, 서명되지 않은 int M){ 서명되지 않은 int idx = blockIdx.x * blockDim.x + threadIdx.x; (idx < N) { // note1: 공유 메모리가 필요하지 않은 경우 // note2: 전역 메모리 액세스는 결합 // (구조체 없음, 부동만 사용) // 각 스레드에 계산 M 시간을 수행 (서명되지 않은 int i = 0; i < M; i ++) { // 일부 쉬운 산술 a[idx] = a[idx] * 0.1 – a[idx] 및 실행 시간 비교를위한 CPU 버전 :extern "C"void __dclspec (dllexport) __stdspec (dllexport) __stdspecsCPU (float *a_h, const unsigned int N, const 서명되지 않은 int M) size_t 크기 = N * sizeof(float); a_h = (부동*)malloc(크기); (서명되지 않은 int i = 0; i 구성 속성 -> 일반 섹션. 또한 CUDA 프로파일러를 사용할 수 있습니다(C:CUDAcudacudaprofbin 디렉토리에 있음). 파일 dllmain.cu 외부 변수 exampleextern «C»{ float __declspec (dllexport) sExecutionTime = -1; } dll:// 외부에서 액세스할 수 있는 변수의 예도 있습니다. 3단계) 프로젝트 속성을 열고 구성 속성, 링커를 확장하고 입력을 선택합니다. 추가 종속성을 편집하고 cudart.lib를 추가합니다. Radix 정렬 정렬 정렬을 선택하는 이유는 많은 문제에 널리 사용되는 기본 계산 구성 요소입니다. Radix 정렬은 가장 오래된 알고리즘 중 하나이며 O(n)의 알고리즘 복잡성으로 작은 키를 순차적으로 정렬하는 데 매우 효율적입니다. 추력에서 제공하는 두 가지 정렬 알고리즘 중 하나는 Radix Sort이므로 추력은 예제에 매우 잘 맞습니다. 많은 코어 GPU에 대 한 효율적인 정렬 알고리즘 디자인에 대 한 종이 있다, 알고리즘 GPU에서 작동 하는 방법을 설명 하는. 템플릿 인스턴스화 힌트는 HybridTemplateConcept 및 HybridRegisterTemplate(장치 코드의 실제 템플릿 인스턴스화를 트리거하는)라는 두 가지 특성으로 Hybridizer에 제공됩니다. 예를 들어 가상 함수 호출을 사용하는 버전과 템플릿 매핑을 사용하는 버전의 간단한 스트림 벤치마크를 살펴보겠습니다. 벤치마크는 공통 인터페이스 IMyArray 노출 하위 스크립트 연산자: 이 코드는 GPU에서 지정된 정수 배열을 정렬하는 데 필요한 유일한 프로그램 논리입니다.

이 예제를 위해 예외 처리 및 유효성 검사를 포함하지 않았습니다. 그러나 모든 프로덕션 코드의 경우 예외 처리 및 유효성 검사 논리를 추가하려고 할 수 있습니다.


admin