inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel

GPU addition program - CUDA로 addition하는 예제

gpu-add.cu 부분에서 커널 lanch 이후 cudaDeviceSynchronize() 부분 질문이요

해결된 질문

491

superdy

작성한 질문수 3

0

- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다.

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요. 선생님 좋은 강의 잘 듣고 있습니다. 강의 부분에 질문이 하나 있어 이렇게 남깁니다.

kernel 을 launch한 이후에 cudaDeviceSynchronize() 를 call 해주는 이유가 kernel의 작업 완료를 보장하기 위함이라는 사실은 인지하고 있습니다.

그런데, 그 아래 부분에서 cudaMemcpy를 해주기 때문에 저 부분이 생략해도 되지 않나 싶어서 질문을 남깁니다. memcpy가 저번 강의 때, kernel 작업 완료 후에 이뤄진다고 말씀하셨던 부분이 있어서, cudaDeviceSynchronize() 을 이번 예제에서 빼도 상관 없지 않을까해서 질문드립니다. 좋은 강의 감사합니다.

c c++ cuda gpu 병렬-처리

답변 1

0

드립커피+한모금더

안녕하세요.

우선, 해당 강의를 수강해 주셔서 감사합니다. ~

말씀하신 대로, kernel launch - cudaMemcpy() 사이에는 사실 cudaDeviceSynchronize() 가 없어도 문제 없이 작동합니다.

다만, single thread 에서만 적용되는 상황이라서, 혹시 multiple thread 로 kernel 과 cudaMemcpy 가 서로 다른 thread 에서 돌거나 하면, cudaDeviceSyncronize 를 해 주어야 하는 경우도 발생할 수 있습니다. (참고하세요)

cudaDeviceSynchronize 를 쓴 부분은, 예제 코드들이 조금조금 업데이트 해 가는 방식으로 작성되어서, 예전 코드에서 그대로 들어가는 경우도 있고, 일종의 습관처럼 쓰는 경우도 있습니다. 참고하셔서, 일부는 생략하셔도 문제가 없을 겁니다. 참고하세요 ~ 🍀

 

 

20년 4,5회 13번

0

13

1

11강 CallOrRegister_OnExperienceLoaded 질문

0

19

0

4 - A

0

21

2

코딩살구클럽 입장이 안됩니다

0

55

2

강의자료는 어디서 받을 수 있죠?

1

23

2

4-F 경우의 수 질문입니다.

0

32

2

코딩살구클럽 가입이 안됩니다.

0

66

2

살구 클럽에 대한 질문있습ㄴ디ㅏ

0

54

1

교안 158페이지 문의드립니다

0

44

2

코딩살구클럽 관련 건의사항

0

110

1

코살에 19942 다이어트 문제에 N의 범위가 빠져있슴니다

0

44

1

Reticle이 안나옵니다.

0

22

1

진행 방법 질문드립니다!

0

79

2

Singleton 관련 질문입니다.

1

47

2

안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.

0

22

1

Export template 안됨

1

44

2

2-I) 왜 이 문제가 그래프이론 카테고리에 있는지 잘 모르겠습니다.

0

63

2

cudaFree가 자동으로 되는 상황

0

79

2

MSB3721 오류

0

243

2

식별자 threadIdx 정의 되지 않음 오류

0

228

2

cudaGetLastError() 에러 처리

0

136

1

CUDA Samples 없음

0

184

2

hello-prrallel.cu 의 병렬처리에 관하여

0

352

1

에러처리 매크로에서!!

0

457

1