강의에서 일러주신 대로 basic으로 계정 권한 업그레이드 후 quota increase 요청을 하였고, 접수되었다고 이메일이 왔는데, 한참이 지나도 접수 승인 메일이 오지 않습니다. 다시 quotas에서 확인해보니 16개로 늘어나 있지도 않습니다. 추후 어떤 action을 더 해야 할까요?
CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel
- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 강의를 최대한 따라 해보았는데 실행은 잘되고 cuda success까지 잘 나오는데 오류랑 경고가 없어지지 않아 질문 남기게 되었습니다.
강의에서 설명해주신 대로 Spot quotas 리밋을 16으로 올리려고 했으나 계속 거부 메시지가 옵니다. 현재 제가 가진 subscription으로는 Spot VM을 16까지 늘릴 수 없다고 합니다. spot의 다른 지역 Korea, Japan, East US 등 다 해봤는데 똑같습니다. 이 때문에 강의에서 보여주신 Standard_D16as_v5 - 16 vCPUs, 64 GiB memory $0.08480/hour 옵션 대신, 훨씬 비용이 높은 Standard_D16as_v5 - 16 vCPUs, 64 GiB memory US$619.04/month 옵션밖에 선택할 수 없습니다. 어떻게 강의와 동일한 VM 환경으로 실습을 진행할 수 있을까요? 일단 Azure의 서포트에 아래와 같은 메시지로 문의를 남겼으나 답변이 매우 늦는 상태입니다: I wanted to increase my spot limit to 16 and then want to create a VM using the 'Standard_D16as_v5 - 16 vCPUs, 64 GiB memory $0.08480/hour' option. However, since this is my first time using it, I'm only seeing the option labeled 'Standard_D16as_v5 - 16 vCPUs, 64 GiB memory US$619.04/month'. Could you please help me resolve this issue? Azure의 Help + support 섹션에서 아래와 같은 응답이 계속 표시됩니다: QMS Update - Status: ResourceType: crpCores { Quota Bucket: TotalLowPriorityCores Status Description: Due to very high rates of Spot consumption, Microsoft is unable to approve additional quota at this time State: SpotVMNotAllowedForPayGCustomer Current Quota: 3 New Quota: 16 } Properties: [location, koreacentral] 이 문제를 해결할 방법이나 대체 방안이 있으면 알려주시면 감사하겠습니다. 스크린샷 첨부하였습니다:
KeyError: 'Adj Close' 오류가 나는 이유는, yahoo finance method가 변경되어 Adj Close를 안 가져오기 때문입니다. #기존 df = yf.download(tickers=["AAPL","MSFT","GOOG","AMZN"])["Adj Close"] #고침 df = yf.download(tickers=["AAPL","MSFT","GOOG","AMZN"])["Close"] 으로 변경하면, 오류가 해결됩니다.
ValueError: Mime type rendering requires nbformat>=4.2.0 but it is not installed 오류가 나오는 경우, pip install ipykernel pip install --upgrade nbformat 코드를 돌리고 Visual Studio Code 윗쪽에 Restart 버튼을 눌려 Kernel 재시작하면 작동합니다.
2:10 보면 가상머신 화면 위에 로컬머신 폴더를 띄우셨는데, 어떻게 하셨나요? 저는 가상머신을 minimize해야 로컬 머신이 보여서요. 그렇다고 가상머신 화면을 축소하면, 글자가 너무 작아지거나 전체 화면이 안 보여서 다루기 힘듭니다. 왼쪽에 강의영상, 오른쪽에 코드프로그램을 둬서 보면서 코딩하고 싶은데, 방법이 궁금합니다.
CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel
- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. print를해서 error를 처리했다고 표현하셨는데 해결을 했다는 의미가 아니고 그냥 print한 것이 처리했다는 의미가 맞나용? print를 했으니깐 reset해주는 것이고요 PeekAtLastError()는 print도 안하고 하면 볼 수 있는 것도 없는건가요?
안녕하세요 강사님. 제목의 강의 중에서 depth_first 함수의 동작이 궁금하여 기본 코드에서 "2.코드 변경"과 같이 print 문을 추가 하여 분석 중 "3. 실행결과"와 같이 출력 되는 것을 확인 하였습니다. 질문 Node(3) 출력하기 전에 s-yield가 한번 출력 되어야 할 것 같은데 두 번 출력에 대한 해석이 안됩니다. f-yield Node(3) s-yield Node(1) Node(3) s-yield Node(0) Node(3) Node(3) @@추가 질문을 올려 놓고 고민 하다 보니 Node(1).depth_first() 함수가 한번만 호출 된다고 생각했는데. 프로그램이 종료 될 때 까지 총 4번이 호출 되면 말이 되는 듯 한데.. 추측한 시나리오가 맞는지요? Node(1).depth_first() : next(Node(1)) 4번 호출 Node(3).depth_first() : next(Node(3)) 2번 호출 Node(4).depth_first() : next(Node(4)) 2번 호출 Node(2).depth_first() : next(Node(2)) 3번 호출 Node(5).depth_first() : next(Node(5)) 2번 호출 코드 변경 def depth_first(self): print("f-yield",self) yield self print("f-next",self) for c in self: for x in c.depth_first(): print("s-yield",self,x) yield x print("s-next",self,x) 실행 결과 f-yield Node(0) Node(0) f-next Node(0) f-yield Node(1) s-yield Node(0) Node(1) Node(1) s-next Node(0) Node(1) f-next Node(1) f-yield Node(3) s-yield Node(1) Node(3) s-yield Node(0) Node(3) Node(3) s-next Node(0) Node(3) s-next Node(1) Node(3) f-next Node(3) f-yield Node(4) s-yield Node(1) Node(4) s-yield Node(0) Node(4) Node(4) s-next Node(0) Node(4) s-next Node(1) Node(4) f-next Node(4) f-yield Node(2) s-yield Node(0) Node(2) Node(2) s-next Node(0) Node(2) f-next Node(2) f-yield Node(5) s-yield Node(2) Node(5) s-yield Node(0) Node(5) Node(5) s-next Node(0) Node(5) s-next Node(2) Node(5) f-next Node(5)
CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel
- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다. v12.8인데 samples 파일이 없습니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 좋은 강의 감사합니다. 3중 for loop 개선책 설명해주신 부분 이해가 가지 않아 질문드립니다. 말씀하신건 A도 B도 C도 캐쉬 친화적으로 이동 한다고 말씀하셨는데 A배열은 아래로 움직이지 않나요? 물론 matmul-host.cpp 보다는 캐쉬 미스 확률이 좋아지겠지만 A배열의 인덱스 이동은 캐쉬 친화적인거 같지 않은데 강의에서는 A도 옆으로 움직인다고 하셔서 헷갈려서 문의드립니다.
- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 좋은 강의 감사합니다. transpose-shared.cu 가 느린 이유에 대해 질문이 있습니다. 강의 23-2에서는 X축으로 읽는 것이 아니라 Y축으로 메모리를 사용했기 때문에 느려졌다고 설명해 주셨습니다. 보통 이런 경우, 이중 for문을 돌릴 때 메모리 공간 지역성(spatial locality)으로 인해 X축(연속된 메모리)으로 읽는 것보다 Y축(연속되지 않은 메모리)으로 읽는 것이 더 느리다고 알고 있습니다. 하지만 이 transpose-shared.cu CUDA 예제에서는 각 스레드가 배열의 단 하나의 인덱스만 사용하므로, 이중 for문에서 발생하는 문제라기보다는 이후 강의에서 설명해 주신 Bank Conflict가 발생해서 느려진 것이 아닐까 생각했습니다. 제 생각이 맞는지 여쭤보고 싶습니다. 수정 및 추가 질문) 챕터16강의 다시 보고 제 생각이 틀렸다는것을 인지했습니다. 그럼 결국 데이터를 저장할때도 캐쉬 문제인것일까요? transpose-block.cu 는 캐쉬에 저장하고 한번에 flush가 가능하지만 transpose-shared.cu 는 저장할때마다 캐쉬미스가 발생해서 매번 global memory에 접근해야하니 느려지는것일까요?
안녕하세요, 선생님의 좋은 강의 덕분에 잘 공부하고 있습니다. 강의 내용 복기 중에 한가지 의문이 생겨 질문 남깁니다. 강의 17-8 matrix addition, pitched의 4분 07초 부분 에서 device pitch (dev_pitch) 값이 40448 byte로 나온 것을 확인할 수 있고, 이어서 이 경우에 CUDA GPU 메모리 alignment boundary가 256 byte라고 설명 주셨습니다. 여기서, 만약 alignment boundary가 256 byte 라면 device pitch 값은 40448 byte가 아닌 40192 byte 가 나와야 하지 않는지 의문이 들었습니다. 40192 byte가 40000 byte(10000개 elements) 에서 가장 가까운 256의 배수임과 동시에 40000 byte를 모두 커버할 수 있다는 근거로 이렇게 생각을 했습니다. 그래서 alignment boundary 값을 512 byte로 계산을 해보니, 40448 byte가 40000 byte로부터 가장 가까운 512 배수로 계산이 되는데요. 이 경우에, 어떤 값이 맞는지 확신이 서지 않아 질문 글을 작성하게 되었습니다. 제가 사용한 계산식은 pitch = ceil(row_size_in_byte / alignment_boundary_in_byte) * alignment_boundary_in_byte 입니다. 제가 아직 공부하는 단계이고, 이해가 부족했을 가능성이 큽니다. 답변에 소중한 시간 내어주시면 정말 감사드립니다. 다시 한번 멋진 강의 만들어주셔서 감사합니다.
- 출장이 잦아서, 답변에 시간이 좀 걸릴 수도 있습니다. 양해 바랍니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! C++과 CUDA 공부를 쉽고 재미있게 잘 하고 있습니다 ^^ 부족해서 하나부터 다 공부하고 있는데요. 중요한 건 아닌 것 같습니다만 common.cpp의 procArg 함수의 이하 if문의 conditoin에 대한 질문이 생겨서 글을 남기게 되었습니다. if (typeid(TYPE) == typeid(float) && typeid(TYPE) == typeid(double)) 다름이 아니라 TYPE의 변수 타입을 알아내 strtof인지 strtol을 사용하는 결정의 if문의 조건에 걸린 연산자가 || (or) 연산자여야 할 것 같은데요.. 어차피 vecSize의 개수는 정수로 떨어지니 저렇게 만들어두셨나 싶다가도 정 궁금해서 여쭤봅니다! 그럼 답변 기다리겠습니다. 감사합니다 😀
3:37 근처에서 Select Kernel을 클릭했는데 myenv-finance-analysis가 드롭다운에 보이질 않습니다. 드롭다운에 Python Environments 만 떠서 그걸 선택했더니 가상머신을 끄고 다시 들어와도 Detecting Kernels만 계속 실행되는 모습입니다. 혹시 왜 이런건지 알 수 있을까요?