inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

CUDA 프로그래밍 (3) - C/C++/GPU 병렬 컴퓨팅 - 메모리 구조

18-2 filtering operation, device version - 필터링 연산, CUDA 디바이스 버전 (섹션 전체 source code 포함)

계산시간 비교

해결된 질문

368

Dong Chan Park

작성한 질문수 2

1

알찬 강의 계속 잘 듣고 있습니다!

CPU와 GPU version의 계산시간 비교에 대해 질문 드립니다. 커널에서 계산시간만 비교하면 CUDA이 훨씬 빠릅니다.

하지만 CUDA version에서 메모리 복사를 포함하면 337,737 us 으로 CPU version보다 훨씬 느린 것 같습니다. 혹시 메모리 복사 시간을 줄이는 방법이 있는지요?

c c++ cuda gpu 병렬-처리

답변 2

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

Dong Chan Park님, GPU를 사용하여 계산을 수행할 때 기대하는 것은 효율적인 처리 속도입니다. 그러나 메모리 전송 시간이 전체 성능에 큰 영향을 미칠 수 있죠. 말씀하신 바와 같이 CPU에서 GPU로의 데이터 전송 및 GPU에서 CPU로의 데이터 전송이 프로그램의 전체 실행 시간에 상당히 부담을 줄 수 있습니다.

선생님 gpu->cpu 속도 개선에 대해서 질문드려요에서 상세한 답변을 확인하실 수 있습니다. 이 답변에서는 메모리 전송이 프로그램 수행 시간에 큰 영향을 미치는 이유와 이를 줄이기 위한 가능한 접근 방법에 대해 설명하고 있습니다.

주요 포인트로는:
- CUDA에서는 주로 cudaMemcpy 함수를 사용하여 VRAM-RAM 간의 전송을 수행하는데, 이 함수 자체의 효율성은 보장되지만 준비 작업 및 종료 처리에 시간이 걸릴 수 있습니다.
- 데이터의 크기가 클 경우 한번에 크게 데이터를 전송하는 것이 실제 전송과 처리를 분산시키는 것보다 효율적일 수 있습니다.
- 현대의 GPU들은 cudaMemcpyAsync 함수를 지원하여 비동기적으로 데이터를 복사할 수 있으나, 코딩의 복잡성이 증가하고 강의 내용에서는 다루어지지 않았음을 설명합니다.

이러한 맥락에서, 메모리 전송 시간을 줄이는 방법으로는 데이터를 더 큰 블록으로 전송하거나, 비동기 메모리 전송을 고려하는 것 등이 언급됩니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

드립커피+한모금더

안녕하세요.

답변을 쓰러 왔더니, AI 인턴이 생각보다 잘 답해 주네요. ㅎㅎ

아래쪽, 중간에 나온, 기존 질문에 대한 답변을 참고하시면 더 상세하게 나올 겁니다.

 

CUDA로 실제 프로젝트를 진행할 때, 실질적으로 제일 신경쓰는 부분이

바로, 데이터 이동을 최소화 하면서 전체 알고리즘을 돌리는 것이 됩니다.

 

결국 최소한 1번씩은 main memory --> CUDA memory , CUDA memory --> main memory 를 해야 하고, 그 외에는 최대한 추가 copy를 피하도록 설계하게 됩니다.

 

그리고, main board 의 구조에 따라서, copy 시간이 꽤 차이가 난다는 점도 고려하셔야 할 겁니다.

 

감사합니다.

 

0

Dong Chan Park

답변 감사합니다!!!

5-B

0

22

2

질문있는데요.. vLLM은 말씀하신 사양에 적용이되나요?

0

25

2

20년 4,5회 13번

0

25

2

11강 CallOrRegister_OnExperienceLoaded 질문

0

32

1

4 - A

0

33

2

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

0

84

2

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

1

36

2

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

0

36

2

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

0

88

2

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

0

65

1

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

0

47

2

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

0

122

1

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

0

46

1

Reticle이 안나옵니다.

0

28

2

진행 방법 질문드립니다!

0

85

2

Singleton 관련 질문입니다.

1

57

2

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

0

22

1

Export template 안됨

1

45

2

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

0

65

2

AddGameFrameworkComponentReceiver vs AddExtensionHandler

0

35

1

scanf("%d\n") 의미

0

28

1

pitch값에 따른 alignement boundary(size) 질문

0

175

2

[Matrix Addition Problem] 1D를 사용하지 않는 이유가 뭔가요?

0

216

1

video에 필터를 적용하는 경우

0

363

1