ROCm

AMD는 CUDA 설치 관련 스크립트 보면서 좀 배우자… CUDA도 그다지 깔끔하진 않지만…

Read More

C Preprocessor Macro

C Preprocessor에는 Macro라는 기능이 있다. Type specialization을 하고 싶은데 C++ template 따위를 쓰지 못하는 상황이면 (OpenCL C로 커널을 짠다던지…) 매크로를 적극적으로 활용하곤 한다. 매크로에는 여러가지 기능이 있는데, 그 중에서도 token concatenation을 해주는 ## 연산자가 아주 유용하다. 다음 코드를 보자.

Read More

Relocation과 PIC

프로그램이 여러 개의 오브젝트 파일로 구성되어 있는 경우 서로의 데이터를 접근하거나 코드를 호출해야 하는데, 링킹을 하기 전까지는 정확한 주소를 알 수 없다. 그래서 컴파일때 이러한 부분들을 적절히 기록해놓고 링킹 때 코드를 수정하여 올바른 주소를 가리키도록 하는 일련의 과정이 필요한데, 이를 Relocation이라고 한다. 다음 예시를 보자.

Read More

mmap의 최소 주소값

앞선 ELF 글에서 신경쓰지 않았던 부분이 있는데, 링크시에 text 섹션의 위치를 조절하여 프로그램이 로드되는 가상 주소와 entry point를 조절할 수 있다. 그런데 text 섹션의 위치를 0x10000 보다 낮게 설정하면 segfault가 발생하는 것을 볼 수 있다.

Read More

ELF 스터디

ELF(Executable and Linkable Format)은 executable file, object file 등에 널리 사용되는 포맷이다. C 컴파일러로 컴파일한 .o 파일이나 링킹까지 마친 a.out 등이 ELF로 되어있다. 리눅스에서 밥먹듯이 사용하는데 내부 구조를 살펴본 적은 없어서 간단하게 공부해 보았다.

Read More

Linux 관리

Linux 서버 관리 하면서 만나는 상황들 적는 글. 계속 업데이트 됨.

Read More

컴퓨터 업그레이드

CPU : Intel i5-4460
Board : GIGABYTE GA-B85M-DS3H-A
Memory : 2 x DDR3-1600 4GB (중고로 2개 더사서 4개로 업그레이드)
GPU : GeForce GTX970 (1080으로 업그레이드)
Chassis : ABKO NCORE 이카루스
PSU : Corsair CX600 80PLUS BRONZE
Read More

블로그 시작

글과 사진으로 기록을 남기는 것이 중요하다고 생각한다. 그래서 여러번 블로그를 시작했지만 2~3개의 글을 쓴 후 귀찮음으로 버려두곤 했다. 글 쓰기 장벽을 최대한 낮추어 다시 시도해본다.

Read More