[30-4] hist-shared.cu 에서 질문있습니다.
154
4 câu hỏi đã được viết
"hist-shared.cu"의 다음 부분에서 질문있습니다.
if(threadIdx.x < HIST_SIZE) {
atomicAdd(&(hist[threadIdx.x]), s_hist[threadIdx.x]);
}threadIdx.x는 0~31로 모두 다르기 때문에 병렬 연산이긴 해도, global memory에 있는 hist 배열의 서로 다른부분으로 write가 이루어진다고 생각했습니다.
따라서 서로 겹치는 위치가 없어서 atomic한 연산이 필요없을거라 생각했는데, atomic 연산이 없으면 결과가 이상하게 나오더라구요..
혹시 왜 그런지 알 수 있을까요?
양질의 강의 제공해주셔서 감사합니다!
Câu trả lời 2
1
안녕하세요.
thread block 1개를 기준으로 보면, 말씀하신 내용이 맞습니다.
다만, 현재 예제에서는 thread block 을 여러 개 사용하고, 이것들이 동시에 실행되고 있습니다.
즉, thread block 여러 개에서, theadIdx.x 는 0 ~ 31인 thread 들이, 각 thread block 에서 동시에 메모리 영역에 write 하려고 하므로, 결국 atomicAdd 가 아니면 답이 틀리게 됩니다.
감사합니다.
재귀함수 연산법
0
13
2
3-F 채점 관련 질문
0
4
0
BFS, DFS 활용이 되는 상황에서의 방향성
0
10
2
코딩살구클럽 승인
0
17
2
코딩살구클럽승인
0
14
2
리눅스로 진행해도 될까요?
0
21
2
코딩살구클럽 승인
0
43
2
3-D 관련 질문
0
33
2
코살구 회원가입 문의
0
38
2
코살구 로그인 문제
0
60
2
26년 1회차 기출 강의
0
55
2
3-A 문제 풀이 관련 질문
0
51
3
2-O 질문 있습니다
0
38
2
2-T 문제에 관한 질문
0
38
2
코딩 살구 클럽 접속 및 사용방법 문의
0
57
2
기출문제
0
55
1
안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~
0
64
2
코딩살구클럽 로그인문제
0
74
3
정보처리기사 실기 zip
0
44
2
데이터베이스 노션
0
38
2
본 강의와는 상관없는 내용입니다만..
0
35
1
선생님 gpu->cpu 속도 개선에 대해서 질문드려요
0
616
1
32-2의 warp의 early terminate에 대해 질문드립니다.
0
372
1
28-4 shuffle shared - shared memory 강의에서 질문이 있습니다.
0
429
1

