게시글
질문&답변
2024.10.15
pitch값에 따른 alignement boundary(size) 질문
안녕하세요.해당 부분은 다시 체크해 보니, 말씀하신 논리 대로, 512 바이트로 보는 것이 더 합당해 보입니다.아랫쪽의 AI 답변에도 나와 있듯이, CUDA 에서는 경우에 따라서는 alignment 를 가변적으로 적용하기도 해서, 256 바이트, 512 바이트가 유동적으로 적용되기도 합니다만, 이번 경우는 512로 보는 것이 더 적합해 보입니다.강의를 재녹화할 때, 수정하도록 하겠습니다.감사합니다. ~
- 0
- 2
- 24
질문&답변
2024.10.11
vulkan 강의 일정
안녕하세요.계속해서 vulkan 에 대한 준비를 하고 있습니다만, 여러가지 사정 (해외 출장 등) 으로 늦어져서 죄송합니다.일부 촬영도 했습니다만, 계속해서 준비를 서두르도록 하겠습니다.감사합니다.
- 0
- 2
- 25
질문&답변
2024.10.10
common.cpp의 procArg 함수에 대해 질문이 있습니다.
안녕하세요.명백한 오타 이네요 ㅠㅠ연산자를 || 로 수정해야 합니다.소스 코드에서도 수정해서 다시 배포하도록 하겠습니다.감사합니다. ~
- 0
- 2
- 18
질문&답변
2024.09.03
외적 공식 문의
안녕하세요.공식을 확인해 봤는데, 문제가 없습니다. 수학책을 찾아보시거나, 아래 나무위키 링크를 참고하셔도 좋을 겁니다.https://namu.wiki/w/%EC%99%B8%EC%A0%81 아랫첨자로 쓰인 x,y,z 의 위치 (나무위키 링크에서는 아랫첨자 1,2,3) 를 잘 보면,+로 할때는 일관되게 증가해 가는 순이고,반대로, -로 할 때는 y 에 대해서는 순서가 뒤집어 집니다. (즉, determinant 가 - 로 계산됩니다.) determinant 를 어떻게 잡느냐의 문제일 뿐이고, 계산 결과는 동일합니다.감사합니다.
- 0
- 1
- 37
질문&답변
2024.08.24
[30-4] hist-shared.cu 에서 질문있습니다.
안녕하세요.thread block 1개를 기준으로 보면, 말씀하신 내용이 맞습니다.다만, 현재 예제에서는 thread block 을 여러 개 사용하고, 이것들이 동시에 실행되고 있습니다.즉, thread block 여러 개에서, theadIdx.x 는 0 ~ 31인 thread 들이, 각 thread block 에서 동시에 메모리 영역에 write 하려고 하므로, 결국 atomicAdd 가 아니면 답이 틀리게 됩니다.감사합니다.
- 0
- 2
- 35
질문&답변
2024.08.07
hello shader 프로그램 실행이 안됩니다.
안녕하세요.괜찮으시면, 사용하신 컴퓨터 환경을 알려주실 수 있을지요.말씀하신 상황이 발생했다면, 그래픽 카드 제조사에 리포트를 해야 할 것 같습니다.그래픽 카드의 모델과, 디바이스 드라이버 버전, OpenGL 드라이버 버전 정도를 알려주시면, 해당 제조사에 버그 리포트 하고, 문제점을 파악해 보겠습니다.감사합니다. P.S: 혹시 glFlush() 나, glFinish() 함수가 빠져있다면, glDraw() 함수 이후에 마지막 부분에 glFinish()를 추가해서 해결하는 경우도 있습니다만, 지금 말씀 하신 증상으로는 그 문제도 아닌 것 같긴 합니다..
- 0
- 1
- 70
질문&답변
2024.08.04
[Matrix Addition Problem] 1D를 사용하지 않는 이유가 뭔가요?
안녕하세요.2D 행렬를 다룰 때는 되도록 2D layout 으로 접근하게 됩니다.CPU + RAM 위주로 설명하는 예제들에서는 2D 행렬도 어차피 1D로 주욱 나열되고, 한 row 와 다음 row 사이에 빈 공간이 없다고 보는 경우가 많을 겁니다. 실제로 memory alloc 을 하거나, 2D 행렬의 memory alloc 상황을 봐도, 1D 로 할당 할 때나 별 차이가 없습니다.CUDA 를 비롯해서, GPU 기반으로 가거나, 병렬 처리를 고려하면, 이제 2D memory 할당 시에, 1개의 row 가 되도록 128 / 256/ 512 / 1024 Byte boundary에 맞추거나 하는 식으로 할당하는 것이 일반적입니다. thread block 별로 memory 를 access 할 때, 서로 겹치지 않게 하는 것이 전체 performance 에서 훨씬 유리하기 때문에 이런 상황이 생깁니다. 현재는 addition 이라서, 1D layout 이 유리해 보이지만, 뒤에 multiplication 등의 더 복잡한 연산으로 가면, 2D layout 으로 구현하는 것이 훨씬 빨라집니다. 여러가지 이유로, 2D 행렬 이나, 2D image 를 다룰 거나 할 때는, cuda block 도 2D layout 으로 구성하는 것이 일반적입니다.감사합니다.
- 0
- 1
- 77
질문&답변
2024.06.11
뷰포트 간의 z-index
안녕하세요.depth buffer 쪽도 color buffer 와 같이 정확하게 조정해야 할 겁니다.2개의 창이 겹친다면, 2번 째 창을 그릴 때는 해당되는 depth buffer 부분도 완전히 clear 시키고 다시 그리는게 좋을 것이고,필요하다면, 이전 depth buffer 내용을 그대로 사용하는 것도 가능합니다.대부분 동영상 강의에서 이미 설명한 내용입니다만,관련된 내용은 glEnable/Disable (GL_DEPTH_TEST) 와 glDepthMask( ) 함수를 참고하시면 좋을 겁니다.그외, 2개 창이 서로 다른 depth range 를 사용해야 한다면, glDepthRange 함수도 참고하시면 좋을 겁니다.OpenGL 은 window system 이 아니기 때문에, viewport, scissor 이외의 기능은 제공하지 않습니다.2개 이상의 윈도우를 따로 따로 열어서, 각각에 OpenGL 출력을 하는 방법도 있습니다만, 그 쪽은 OpenGL 문제가 아니고, window programming 문제이니까, 그쪽 분야를 참고하셔야 할 겁니다. 감사합니다.
- 0
- 1
- 112
질문&답변
2024.06.11
scissor box에서의 테두리 라인 그리기
안녕하세요.Scissor Box 의 테두리를 두르는 방법은 특별히 따로 제공되는 옵션이 없습니다.다른 방법으로, glDrawArrays 함수를 쓰거나 하는 방식이 가능할 겁니다.아니면, glScissor 를 약간 크게 잡은 후에, 테두리 색깔로 glClear 하고,다시 glScissor 를 약간 작게 잡은 후에, 제대로 glClear 하고, 이미지를 그리는 방법도 있을 겁니다. (직접 테스트 해 보지는 않았습니다.)감사합니다.
- 0
- 1
- 110
질문&답변
2024.04.19
Warp를 동시에 돌린다는 말이 이해가 가지 않습니다.
안녕하세요.네. 당연히 그렇게 처리 합니다.SM 1개 내의 모든 SP 들은 같은 clock 으로 동시에 실행됩니다.warp 단위로 실행 해야 하다 보니, 같은 warp 를 실행하는 32개의 SP 는 instruction 도 똑같은 것을 수행합니다.강의에서도 한번 설명했지만, GPU 구조에서는 ALU + control unit 쪽을 줄이는 대신 갯수를 늘리는 쪽으로 설계 방향을 잡았는데, ALU 를 줄이는 데는 한계가 있고, 결국 control unit을 최대한 줄이는 방법이, 32개의 warp를 실행하는 32개의 SP가 control unit 1개의 통제를 받는 방식이고, 이러면, 이들은 동시에 똑같은 instruction을 수행하는 수 밖에 없습니다.감사합니다.
- 0
- 1
- 185