저는 CUDA 프로그래밍 초보자이며 질문이 있습니다.커널 함수에 값을 매개 변수로 전달할 때 매개 변수가 복사되는 위치는 무엇입니까?
는 I이 같은 값으로 파라미터를 전달하는 경우 :
가__global__ void add(int a, int b, int *c) {
// some operations
}
가변와 B 때문에 함수 함수 호출 스택에 복사 값 추가 커널 전달, I는 일부 메모리 추측 복사에 공간이 필요합니다.
맞습니다. 해당 매개 변수가 GPU 또는 호스트의 주 메모리에 복사 된인 추가 메모리 공간입니까?
이 문제가 궁금한 이유는 커다란 구조체를 커널 함수에 전달해야한다는 것입니다.
구조체의 포인터를 전달할 수도 있지만 struct와 각 멤버 변수에 대해 cudamalloc을 호출해야합니다.
커널 호출에 대한 값 별 인수는 특별한 종류의 장치 메모리 인'__constant__' 메모리에 저장됩니다. 커널 코드 (일반적으로)의 시작 부분에서, 필요한 인자는'__constant__' 메모리에서 레지스터로 복사됩니다. 이 내용은 프로그래밍 안내서 [여기] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#function-parameters)에서 다룹니다. –