Recent posts
-
C++,CUDA
[CUDA] 두 1차원 벡터 덧셈 연산을 CUDA로 프로그래밍 해보자!
해당 포스팅은 AI와 NVIDIA에서 공식적으로 게시하는 문서인 CUDA Programming Guide 문헌을 기반으로 만들어졌음을 알립니다. 개인적으로 최대한 엄밀하게 검증을 거쳤으며 혹여나 잘못된 내용이 있다라고 판단되면 적극 피드백 부탁드립니다. *앞으로, CPU 장치를 호스트 장치로, GPU 장치를 디바이스 장치로 부르도록 하겠다.이번 포스팅에서는 본격적으로 CUDA 프로그래밍을 통해서 벡터 연산을 수행하는 코드를 직접 작성해보고 실행해보도록 하자. 이 과정을 수행하면서 우리는 호스트 장치에서 디바이스 장치에서의 연산을 어떻게 실행하고 결과를 받아볼 수 있는지 그 매커니즘에 대해서도 이해해보도록 하자.1. Kernel 작성하기디바이스 장치에서 연산을 실행하기 위해서 어떤 연산을 실행할지 가장 먼..
-
C++,CUDA
[CUDA] GPU를 구성하는 여러가지 단위: Kernel, Grid, Block, Thread, Warp, 그리고 첫 프로그램 Hello.cu!
이번 포스팅에서는 GPU를 구성하는 여러가지 단위에 대해서 이론적으로 이해해보고 실제로 이 단위를 코드 레벨에서 확인해보는 첫 프로그램인 Hello.cu 소스코드도 작성해보고 실행해보려 한다. 참고로 해당 포스팅은 AI와 NVIDIA에서 공식적으로 게시하는 문서인 CUDA Programming Guide 문헌을 기반으로 만들어졌음을 알립니다. 개인적으로 최대한 엄밀하게 검증을 거쳤으며 혹여나 잘못된 내용이 있다라고 판단되면 적극 피드백 부탁드립니다. 1. GPU 장치에서 실행되는 함수: Kernel우리에게 익숙하고 그동안 잘 이용해왔던 컴퓨터에서 IDE를 켜고 아무 프로그래밍 언어 하나를 선택해서 Hello World! 라는 문자열을 출력시키는 함수를 만들고 실행한다고 해보자. 이 때, Hello Wor..
-
C++,CUDA
[CUDA] CLion + Lightening.ai 로 무료 CUDA 프로그래밍 환경 세팅
이전에 인프런의 널널한 개발자 강사님 강의로 C++ 기초를 입문했다. 이전에 C 강의도 듣긴했었는데 C언어에서 객체지향 패러다임이 추가된 C++인 점, 그리고 ML 플랫폼 엔지니어로서 계속 보편적으로 이용되고 있는 하드웨어인 GPU에 대한 지식을 쌓기 위해서 GPU에서의 로직을 프로그래밍하는 CUDA가 C/C++ 기반인 점을 고려해서 최근부터 CUDA 프로그래밍을 공부하기 시작했다. 앞으로의 포스팅 시리즈에서 C/C++언어에 대한 기초 문법이나 이런 것들을 당연히 알고 있다는 전제하에 진행한다. 사실 언어에 대한 문법 및 사용법들은 AI가 훨씬 잘 대답해주기 때문에 여기서는 길게 설명하지 않는다. 우리가 앞으로 집중할 내용은 CUDA 프로그래밍을 수행하면서 GPU 하드웨어가 어떤 구조로 구성되어 있고..
-
Milvus
[Milvus] 자료구조와 SQL 인터페이스의 종류
🔊 해당 포스팅은 Milvus 공식 문서를 기반으로, 그리고 본인의 Milvus 구축 및 운영 경험을 바탕으로 개인적인 기록 및 영구적인 기억을 위해 작성되었습니다. 해당 자료에 등장하는 자료들은 모두 Milvus 공식 문서 또는 본인이 직접 재구성한 자료임을 밝힙니다. 2024년 9월, 새로운 회사로의 이직하면서 사내에 존재하지 않았던 ML 인프라를 밑단부터 구축해나가기 시작했다. 그 과정에서 여러가지 기술과 툴들을 도입하고 적용해왔다. 약 1년이라는 시간이 지난 후, 그동안의 시간을 되돌아보았을 때 가장 구축하고 운영하기 힘들었던 것이 무엇인지 묻는다면 오픈소스 기반의 벡터 DB인 Milvus를 k8s 환경에 구축하고 운영했던 일이라고 말하고 싶다. Milvus를 구축하고 운영하면서 가장 답답했던 ..
-
Computer Science
[CS] 나만의 컴파일러를 만들어보자! (1): 컴파일러와 가상머신
🔊 해당 포스팅은 밑바닥부터 만드는 인터프리터 in go 책을 읽고 개인적인 정리 목적 하에 작성된 글입니다. 본 포스팅에 사용된 자료는 모두 본인이 직접 재구성하여 작성하였음을 알립니다. 이전 포스팅까지는 밑바닥부터 만드는 인터프리터 책을 읽고 정리한 내용들을 포스팅해왔었다. 마지막에 인터프리터를 디벨롭하는 내용에 대해서는 마저 기록하지 못했지만 기본적인 인터프리터 내용은 모두 학습했다고 생각해서 두번째 시리즈 책인 컴파일러 관련 책을 공부해보고 내용을 기록해보려고 한다. 그 중 가장 첫번째 챕터로, 컴파일러와 가상머신이라는 개념에 대해서 이해해볼 필요가 있다.1. 컴파일러는 추상적인 개념일 뿐!만약 나에게 컴파일러는 무엇이고 내부 구조는 어떻게 동작하는지 말해보라 한다거나 컴파일러를 간단하게 구현해..