20180410

오늘의 일기
* 소스 코드가 꽤 큰 상황에서 Makefile을 처음으로 from scratch에서 작성해보았다. 사실 그리 어렵지 않았지만, 기록해 둠. https://gist.github.com/maxtruxa/4b3929e118914ccef057f8a05c614b0f

Advertisements
Posted in 1) Memo

20180409

오늘의 일기
* 오늘은 한 친구가 엘레베이터에서 곡을 흥얼거리기에 무엇인지 물어보았고, 다음의 곡이었다.

Posted in 1) Memo

20180408

오늘의 일기
* 평일에 긴 휴일이 있었어서 오늘도 근무일이다. 평일에 쉬고 주말에 업무일이 있는 것은 정말 좋지 않은 아이디어인 것 같다. 물론 업무일에 무관하게 회사에 나오고는 있지만, 자발적인 주말 출근과 비자발적인 주말 출근은 다르다. 게다가 일요일이 업무일이 되면 연속 근무일이 6일이 되어버려서 매우 좋지 않다.
* 홍콩과기대에서 온 친구에게도 물어보았는데, 해당 학교에서도 4-5년 안에 박사 졸업을 하는 것이 일반적이라고 한다. 중요한 점은 석사 과정 없이 통합 4-5년이라는 점이다. 분명 카이스트 전산학부는 석사까지 포함하면 최소 6-7년인데, 어째서 카이스트 전산학부에서는 박사 배출에 이렇게 오랜 시간이 걸리는지 궁금했다. 교수님께서 “해외에서는 석박 통합이 일반적이고 2-3년차에는 우수학회에 논문을 내야 한다”라고 항상 말씀하셨지만, 시간이 지나면서 잊기도 했고, 주변을 보면 그렇지 않아서 방심한 것도 있었던 것 같다. 이처럼 개인적인 문제도 있겠지만, 다른 곳과 평균값을 비교해도 차이가 난다는 점이 잘 이해가 되지 않고, 그 원인이 궁금했다. 어째서 우리 연구실 또는 전산학부에서는 다른 곳처럼 하지 못하고 있는가 정말 궁금했다. 1-2년의 격차는 어디에서 발생하나? 카이스트 전산학부에서는 추가 투입 시간만큼 더 훌륭한 박사급 인재들을 양성하고 있는 것일까?

Posted in 1) Memo

20180407

오늘의 일기
* 친구들이 머신 러닝 이야기만 해서 “여기에는 메모리 연구하는 사람은 나밖에 없다”고 불평했는데, 어쩌다보니 머신 러닝을 그리 좋아하지 않는 것을 들켰다. 싫어하는 것은 아니지만, 좋지 않은 기억들이 있다. 첫째로 문제가 잘 풀리지 않을 때면 교수님께서 머신 러닝을 적용해 풀어보라고 하셨던 것, 둘째로는 캐시 파티셔닝 문제를 머신 러닝으로 풀어보려다 잘 되지 않은 것이 있다. 셋째로는 실체가 불분명한 4차 산업혁명의 핵심이 인공지능이란 점이 마음에 들지 않는다.
* 연구실에서 잘 되었던 연구, 잘 되지 않았던 연구, 주워들었던 것들이 모두 도움이 된다는 느낌을 여기에서 계속해서 받고 있다. 우연히 연구 분야가 일치해서 그런 것도 있고, 대학원에서 만 4년의 시간을 보냈으니 그런가 하는 생각도 든다.

Posted in 1) Memo

20180406

오늘의 일기
* 실제 워크로드의 메모리 트레이스를 생성하고 있는데, 메모리 크기를 제약하기 위해 cgroup을 사용하고 있다. 음… 다시 생각해보니 내 목적에 적합하지 않은 것 같다.
– cgroup 명령어 설치: sudo apt-get install cgroup-bin
– cgroup 생성: cgcreate -g memory:/trace
– 메모리 크기 조절: echo 16384 > memory.limit_in_bytes
* Hash collision에 대한 내용
https://stackoverflow.com/questions/14210298/probability-of-collision-when-using-a-32-bit-hash
http://preshing.com/20110504/hash-collision-probabilities/

Posted in 1) Memo

20180405

오늘의 일기
* 이전에 급하게 작성하느라 linear search로 작성한 코드를 red-black tree로 변경했더니 100배 넘게 빨라졌다. Red-black tree를 적용할 때 가장 고민이 되었던 점은 원하는 문제를 어떻게 red-black tree로 풀 것인가였다.
– 각 엔트리는 unique한 키 A를 갖고 있고, 동시에 B라는 값을 갖고 있다(non-unique).
– 각 엔트리는 삽입/삭제가 발생한다.
– 각 엔트리에 대해 B값 업데이트가 빈번하게 발생한다.
– B 값의 global minimum값을 찾아야 하는데, 엔트리가 아주 많아서 선형 탐색은 느리다.
해당 문제에서 A를 red-black tree의 key로 쓰자니 B의 global minimum을 찾을 때 결국 선형 탐색을 해야 한다는 점이 문제였고, B를 key로 쓰자니 중복 값이 있어서 삽입/삭제시에 찾기 어렵다는 점이 문제였다. 결국에는 A와 B를 동시에 key로 사용해 문제를 해결했다. 조금 high-level에서 본다면 A와 B를 함께 사용하는 새로운 자료형을 정의한 것이다. B를 사용해서 트리에 삽입하되, 원하는 값을 갖는 sub-tree를 찾은 뒤에는 A를 사용해서 다시 key를 탐색해나간다. 이렇게 하면 unique한 key를 사용해서 삽입/삭제할 수 있고, min 값을 찾을 때에는 left-most node를 따라가면 된다.

Posted in 1) Memo

20180404

오늘의 일기
* 시뮬레이터 성능 개선을 위해 valgrind에서 callgrind라는 툴과 kcachegrind라는 분석 도구를 사용했는데, 정말 좋다. 한 눈에 어느 정도의 시간을 어떤 함수에서 보내는지 확인할 수 있다.
* 친구들에게 DragonFly 제품을 소개시켜주었다. 두 명은 만족해했고 한 명은 소리만 커지는 것 같다고 이야기했다. 다음 영상을 테스트에 사용하였음.


* 창현이 형이 했던대로 나도 커널에서 사용하는 red-black tree를 가져왔다. 링크는 red-black tree를 어떻게 쓸 수 있는지에 대한 예제 코드.

Posted in 1) Memo
Recent Posts
누적 방문자 수
  • 118,432 hits