전체 글

안녕하세요
· CUDA
Bank ConflictsCUDA를 공부하면 Shared Memory에 대한 개념을 접할 수 있습니다. 그러면서 `Bank Conflicts`에 대한 개념을 접할 수 있는데요. 아래와 같은 그림 혹은 비슷한 그림들을 보셨을 겁니다. Bank Conflicts는 메모리 요청이 뱅크에 중복되게 일어날 때 발생하는 것을 나타냅니다.Shared memory는 32-bit 크기를 가진 메모리 모듈 32개로 이루어져있습니다. 64개의 fp32 데이터를 SRAM에 넣으면 아래와 같이 들어가게 됩니다. 즉, 32개의 bank에 순차적으로 속하게 됩니다. 각 스레드가 각각 다른 뱅크에 접근할 때(1, 2번)에는 bank conflict가 발생하지 않습니다. 3번 경우에는 bank conflicts가 "일어날 가능성이"..
· CUDA
Motivation & GoalNVIDIA는 AI 시장에서 하드웨어와 그에 맞는 소프트웨어 스택이 압도적임CUDA는 하나의 큰 생태계가 되었고, 유저들은 많은 기법들을 이용해서 NVIDIA GPU를 fully utilize하고 있음Pytorch, vLLM과 같은 라이브러리들은 backend에 숨겨서 일반 유저들이 CUDA를 몰라도 연구를 할 수 있게 하였음그러나 GPU의 내부를 알게되는것은 충분한 강점이며, 보다 나은 성능을 위해서는 필수적임큰 틀에서의 CUDA 의 개념들을 훑어보기로 합시다Memory Hierarchy그렇다면 CUDA, NVIDIA GPU는 내부적으로 어떻게 동작하는지 알아보겠습니다. 우선 메모리 구조를 살펴보면 다음과 같습니다.Global memoryGPU의 메모리로, DRAM 영역..
나온지 꽤 된 논문인데요, ML 도메인에서는 아주아주 유명한 논문인 것 같습니다. ILSVRC'15 에서 당당하게 1위를 차지한 모델로, CVPR'16의 best paper 로 선정되었습니다. 마이크로소프트 북경 연구소에서 개발하였고, ResNet 으로 불리는 네트워크입니다. Shortcut/Skip connection 을 이용하여 residual (잔차) 을 학습시켜 성능을 향상시킨 논문으로, 이후 대부분의 모델들에서 ResNet 을 활용하게 되었습니다.Inspiration이 논문이 발표되기 이전까지, CNN 기반 모델의 정확도를 높이기 위해서는 보다 깊은 네트워크를 구성해야한다고 생각했습니다. 실제로 당시의 논문들을 보면 보다 깊은 네트워크의 성능이 더 나은 경우가 많았습니다.이러한 `가정`으로부터 ..
VS code 로 작업할 때, screen 에서 휠을 쓰고 싶은데 안돼서 답답함. copy mode 가 있긴 하지만, 여간 불편한게 아님.~/.screenrc 파일에 아래와 같이 저장해주면 됨. 자세한 정보는 https://stackoverflow.com/questions/359109/using-the-scrollwheel-in-gnu-screen 여기로부터. termcapinfo xterm* ti@:te@ 명령어설명screen -S [name][name] 스크린 생성screen -x [name][name] 스크린 접속 스크린 내부 명령어설명ctrl+a  c윈도우 생성ctrl+a  tab윈도우 전환
Translation InvarianceTranslation에 invariant 하다는 것은 입력이 바뀌어도 출력은 바뀌지 않는 것을 의미합니다. 입력 이미지가 고양이인지 아닌지 판별하는 함수 f 는 고양이의 위치가 바뀌어도 동일하게 고양이라고 판별해 줄 것입니다.Translation EquivarianceTranslation Equivariance는 입력이 바뀌면 출력도 바뀐다는 뜻입니다. 예를들어 고양이가 있는 영역에는 1을 칠하고, 아닌 영역에는 0을 칠하는 함수 f 가 있다고 합시다. 이때, 고양이의 위치를 이동시키는 S 함수를 이용하여 입력 이미지를 바꿔주었다면 출력도 동일하게 변경된 고양이의 위치에 칠해져 있을 것입니다. Convolutional layer 자체는 아래 그림과 같이, 입력이 변..
null-ptr
널-포인터