Jetson에서 커널 자원 조건으로 실행 블록 크기의 후보를 얻는다.
예제 커널은 빈 함수라 호출 구조 확인용이다. 출력 후보만으로 실제 알고리즘의 최적 처리량을 보장할 수는 없다.
#include <cuda_runtime.h>
#include <cstdio>
#include <cstdlib>
#define CHECK(call) do { \
cudaError_t cuda_status_ = (call); \
if (cuda_status_ != cudaSuccess) { \
fprintf(stderr, "%s\n", cudaGetErrorString(cuda_status_)); \
exit(1); \
} \
} while (0)
__global__ void kernel() {}
int main() {
int minGrid = 0, block = 0;
CHECK(cudaOccupancyMaxPotentialBlockSize(&minGrid, &block, kernel, 0, 0));
printf("minGrid=%d block=%d\n", minGrid, block);
return 0;
}CHECK는 이 예제에 정의한 오류 검사 매크로다. CUDA 호출이 실패하면 설명을 출력하고 종료하므로 실패한 메모리나 핸들을 계속 사용하지 않는다.
Jetson에서 빌드하기
nvcc -std=c++17 main.cu -o main
./main
답글 달기