메모리 해제 관련 문의
396
投稿した質問数 5
回答 1
0
제가 방금 cudaFree 없이 코드 돌려봤는데 남아있지는 않네요. 그러나 운영체제나 드라이버가 없다고 생각하면 (예를 들어 임베디드 기기의 GPU NPU등 을 opencl로 한다거나 ) 해제 안하면 큰일나겠죠
C에서도 마찬가지로 운영체제가 free해줘서 안해줘도 상관 없는거지 운영체제 없이 임베디드 개발을 한다고 하면 free가 정말 중요하게 쓰일껍니다. 메모리를 극도로 아껴야 하는 경우에도 free하고 선언하고 여러번 반복하게 될꺼구요
0
우와 실험까지 해서 결과 알려주시고 ... 감사합니다!
그런데 제가 궁금한 점은 free 를 꼭 해야할까? 같은 단순한 물음이 아니었습니다. free는 꼭 하는게 맞겠죠. 근본적인 것은 GPU 시스템의 메모리 관리가 어떻게 CPU 시스템의 운영체제와 맞물리는가 하는 것입니다. 강의를 들어보면 둘 간에 통신을 한다고 하며 GPU 시스템도 하나의 완전한 시스템이라고 하였습니다. 그러면 CPU 에서 가상메모리 기준으로 동작하는 프로그램의 생애주기와 그 생애주기를 가지는 CPU 시스템의 프로그램이 호출하는 GPU 시스템 내의 어떤 존재... 그 존재가 무엇인지조차 모르겠어요. 그걸 프로그램이라고 불러야 할지... 서브루틴이라 불러야 할지... 그 존재라는 것은 CPU 상의 가상메모리 상에 코드가 올라가지는 않을 거잖아요. 힙메모리도 별도로 가지고 있을건데요, 그 존재는 어떤 생애주기를 가지며 어떻게 CPU 의 함수호출을 듣게 되느냐 하는 것이 물음입니다. 이것들을 알게 되면 free() 할 때 일어나는 일도 알게되겠지요...
이 대화가 있은 뒤에 저도 공부를 더 해보았습니다. nvidia dli 라는 유료온라인 강의가 도움이 됩니다. 무료 강의도 있습니다.
nvidia의 강의에서는 https://developer.nvidia.com/blog/unified-memory-in-cuda-6/ 를 가지고 설명을 하고 있습니다. 인프런의 본 강의에서는 다루지 않는 내용입니다.
UM 이란 것은 nvidia 가 제공하는 가상메모리 기술 같습니다. CPU 와 GPU 의 메모리를 통합하는 새로운 가상메모리입니다. 가상메모리라고 생각하면 프로세스가 종료될 때 혹시 free 하지 않은 메모리들은 모조리 반납될 것으로 유추 할 수 있을 것 같습니다. OS 의 가상메모리가 그렇듯이요... 물론 확인한 것은 아닙니다.
ch .12 grid 설정 관련 질문 드립니다.
0
73
2
memcpy 시간 고려 시 gpu vs. cpu
0
82
2
cudaFree가 자동으로 되는 상황
0
79
2
MSB3721 오류
0
242
2
식별자 threadIdx 정의 되지 않음 오류
0
225
2
cudaGetLastError() 에러 처리
0
133
1
CUDA Samples 없음
0
183
2
24-2 3중 for loop 개선책 이해가 가지 않습니다.
0
124
2
transpose-shared.cu 가 느린 이유에 대해서 질문 있습니다.
0
129
2
pitch값에 따른 alignement boundary(size) 질문
0
173
2
common.cpp의 procArg 함수에 대해 질문이 있습니다.
0
133
2
[30-4] hist-shared.cu 에서 질문있습니다.
0
145
2
[Matrix Addition Problem] 1D를 사용하지 않는 이유가 뭔가요?
0
215
1
Thread Block 개수에 제한이 있나요?
0
399
1
Warp를 동시에 돌린다는 말이 이해가 가지 않습니다.
0
312
1
ppt 자료는 없나요..
0
232
1
계산시간 비교
1
367
2
매크로 함수를 쓴 이유
0
301
1
hello-prrallel.cu 의 병렬처리에 관하여
0
352
1
kernelMatCpy에서는 __syncthreads가 필요없지 않나요
0
222
1
소스 코드 에러 문의 드립니다
0
341
1
deviceQuery.exe
0
252
0
OpenMP가 무엇인가요?
0
557
1
버전 질문입니다.
0
234
1

