'연구'에 해당되는 글 5건

  1. 2009.02.12 [205일째] 2/11/2009 5
  2. 2008.12.24 [155일째] 코드 첫번째 버전 완성. 4
  3. 2008.09.12 [52일째 ] 맨투맨 미팅 후
  4. 2008.09.10 Claremont Report
  5. 2008.08.29 [39일째] 미팅 후 1
50일이 넘게 글을 안 쓰게 되었네. 참 블로그나 미니홈피나 만드는 건 쉬워도 꾸준히 글쓰기란 참으로 어려운 듯 싶다.
글을 안 올리는 사이에 한해가 지났고, 필요없는 나이만 먹게되었다.
지금은 성대 이박사님 박사과정 친구가 VLDB'09에 제출할 논문을 준비하느라 방문중이라서, 내 오피스와 내 아파트를 같이 공유하면서  함께 숙식하고 있다.  침대 매트만 빼낸걸 그 친구 주고 나는 침대를 평상인 듯 쓰고 있다.
오피스키나 방문연구자 등록등을 하려면 여기 UA는 행정업무가 굉장히 더디므로, 그냥 안하기로 하고 나랑 꼭 붙어다니면서 생활하는 쪽으로 결정되었다. 여튼 둘다 논문 제출을 위해서 열공을 해야 하는데... ㅋ 이 친구와 죽이 잘맞는 관계로, 집에 들어가면 맨날 음식해 먹으면서 술잔을 기울이고 있다. 여기와서 한국 음식을 못먹게 될 줄 알았는데,
한국 아줌마가 배달해주는 도시락과 함께 내가 먹고싶은거 요리해서 먹으니까(문교수님도 이제 같이 도시락 주문해서 식사하신다) 매 끼니의 50% 정도는 한국 음식을 먹는 것 같다. ㅋ 나날이 요리실력도 늘어난다. 엊그제는 동태찌개, 오늘은 낙지볶음에 콩나물국... 누가 나를 한국에서 밥 한번 혼자 제대로 해본적 없는 사람이라고 하겠는가? 영균이나 갑주나 모두 내가 요리를 잘한다고 한다. ㅋ

영균이는 차를 샀다. 720만원주고 아반테 2004년식을... 도시유키는 낮과 밤이 뒤바뀌어 저녁 6시에 출근하고 새벽에 귀가하는 듯 하다. 왜 저럴까? 여기 미국에서 한국/일본 시간대에 있는 것마냥 살고 있다.
나는 문교수님의 대학원 DB 강의를 청강하고 있다. 일단 수업강도가 한국의 대학원 강의와 견주어 아주 높다.
DB 하부구조를 코딩하는 텀 프로젝트도 있고, 수업 진도도 여러 주제를 팍팍나간다. 덕분에 아직 안 접해봤거나, 피사적으로나 알고 있던 DB internal들에 대해 잘 알 수 있게 될 것 같다.

일 관련해서는 첫번째 버전의 코드를 작성하여 실험을 한 것이 성능이 뒤죽박죽으로 나와서 좀 애를 먹었다.
알고리즘의 최적화화 메모리 누수를 잡아서 좀 성능 개선을 하고 다시 테스트해봐도 아직도 버벅거리길래 원인을 찾아보았더니, STL Vector가 시간을 많이 잡아먹는 듯 싶었다. 해서 애들을 모조리 array로 바꾸어서 처리했더니 성능이 많이 좋아졌다.  그리고 인덱스 종류도 몇가지를 더 추가하였다. 처음엔 두개 뿐이던 인덱스가 이젠 4개고, 얘네들을 섞어쓰면 또 몇가지 다른 특성의 데이터 접근이 가능하게 되었다.
오늘 문교수님과 다시 이 실험 데이터를 가지고 미팅을 했는데, 탁자를 탁 두드리면서 괜찮네 하신다. 하지만 입력 데이터의 크기가 줄어진 만큼 원 알고리즘보다 수행시간이 줄어들지 않은 듯 싶다라고 하시면서, 좀더 점검해 보자고 하신다.
다시 보니 컴파일 최적화 옵션을 다르게 햇다. 하나는 -O3, 하나는 -O2 그래서 옵션 통일하고 다시 테스트를 해보았다. 하지만, 아직도 원 코드가 터무니 없이 빠르게 나온다. 문교수님이 수행시간을 뭘로 쟀냐고 해서, 그냥 라이브러리에 있는거 가져다 썼다고 했는데, time 명령어를 이용해서 elapsed time을 재던가 아니면 코드 내에 gettimeofday를 이용해서 재보는게 좋겠다 하신다. 이 조언을 크게 고민안하고 여태까지 진행시켜왔는데, 방금 전 코드를 돌려보니...
원 알고리즘에서 사용하는 라이브러리는  user time과 system time만을 리턴시키고 real time은 돌리지 않은 거였다.
긍까 내 알고리즘은 elapsed time 시간을 재고, 원 알고리즘이 user+system time만 리턴을 시키고 있는데 그걸 모르고 그냥 그 결과만 출력해서 보니까 당근 원 알고리즘이 터무니없이 빠르게 나오는거다. 아이씨....
여튼 코드 손 안대고 성능향상 2배이상이 되는바람에 좋긴 하다만, 그간 내가 멍청한 짓을 한거였어..

* System time이란 : http://en.wikipedia.org/wiki/System_time
* Unix time : http://en.wikipedia.org/wiki/Time_(Unix)
   - system time: 커널에서 프로그램의 처리를 위해 이용되는 시스템 호출을 처리하는데 걸리는 시간, 예. fork 등
   - user time: 유저 프로그램의 처리에 걸리는 시간
   - Real time: System + user time + 기타 I/O 연산 시간 등이 추가된, 프로그램의 총 수행 시간(elapsed time)

* gettimeofday란 함수를 사용하면 코드 상에서 microsecond 단위로 수행시간을 측정해낼 수도 있다.

'미국 생활 > 투산,애리조나' 카테고리의 다른 글

[242일째] 제출 마감.  (2) 2009.03.21
[215일째] 논문 작성중  (2) 2009.02.22
[155일째] 코드 첫번째 버전 완성.  (4) 2008.12.24
[138일째] 미식축구 경기  (0) 2008.12.07
[129일째] 추수감사절  (0) 2008.11.28
Posted by Bart
[12/23/08]

1.  그간 여러 일들이 있었다. 11월말에 성균관대 이상원 교수님이 SIGMOD'09 submission을 위해 잠시 다녀가셨다. 덕분에 미국에 와서 처음으로 양식을 먹게 되었다.  얘기하시는 것을 잠깐 들어보니 SIGMOD'07부터 계속하시는 Flash memory DBMS 관련한 주제로 논문을 쓰신 것 같다. 영균이는 방학을 맞아 한국에 여친 보러 갔다. 1/12에 돌아온댄다.

2.  미국의 기름값이 무척 싸졌다. 1갤론=3.789리터에 $1.55 달러까지 내려갔다. 아파트하고 학교간 거리가 가까워서 기름을 한달에 한번밖에 안넣지만...씁.. 핸드폰 고장났다. 화장실에서 용변보면서 만지작 거리다가 SIM 카드를 건드렸는지, 자꾸 비번을 요구하길래 머릿속으로 생각난 번호 몇개를 넣어봤더니, 비번 입력 오류 초과라면서 아예 먹통이 되어버렸다. 이젠 켜지지도 않는다. 아직 안 쓴 통화료가 $100정도 들어있는데... 언제 AT&T 지점에 가서  물어봐야겄다.

3. 내가 고안한 알고리즘의 첫 번째 코드를 완성하였다. 문 교수님이 요구하신대로 C++ 코드로 Linux 환경에서 작성하였고, 몇가지 예제 데이터들을 대상으로 알고리즘의 completeness를 확인하였다. 문 교수님께서 VLDB submission이 얼마 남지 않았으니, 빨리 일을 진행시켜 보자고 하신다. 

여기와서 첫번째로 제안해서 수행하는 과제로 난 XML 질의 처리, 그 중에서도 Holistic twig join상에서의 성능 개선을 위한 2가지 방법을 제안했는데, 그에 대한 실험을 이제 할 수가 있게 되었다. 일단 몇가지 예제 테스트 데이터 셋을 가지고, 돌려본 결과 괜찮은 듯 싶다. 좀더 큰 테스트 데이터를 가지고 테스트를 해봐야 할 것인데, 일단 DBLP 460여메가, TREEBANK 83메가, XMark 113메가 짜리를 가지고 실험을 수행하려 한다. 

실험에서 비교할 rival들로는 일단 Nicolas Bruno가 SIGMOD'02에 발표하였던 TwigStack와 PathStack이 있겠고, 다음으로는 Praveen이 보내준 TSGeneric+ 이 우선 되겠다. 나중에 논문 내고 나면, 비교 대상들이 꽤 오래된 코드들이 아닌가라는 지적도 있을 듯 싶어, Jiang Lu에게 따로 이메일을 보내 이 친구가 VLDB'05에 발표했던 TJFast 의 코드도 받았다.   또 Praveen의 PRIX 도 다른 스택 기반의 홀리스틱 조인 기법과는 차이가 있지만, 비교 대상에 넣어보는 것도 괜찮을 듯 싶다. 이제 80일 남은 submission을 위해 막바지 작업을 진행해야지. 하지만, 몇가지 문제가 있는 것이 일단 Bruno의 TwigStack 알고리즘이 XB-tree를 메모리 상에서 구현해 놓고 디스크 상에서 동작하도록 만들어 놓지 않았기 때문에, 이를 직접 비교하기가 어렵다. 때문에 예전에 Praveen이 GIST Library를 이용해서 disk-resident B-tree로 다시 구현을 해놓았는데, 이놈의 GIST library가 G++ 2.9.5로 컴파일이 된다는 거다. Fedora 10에서 기본 제공하는 g++ 버전이 4.3.2, compatibility package의 버전도 3.4.6. 이 둘로는 라이브러리가 컴파일이 안되어서, 혹시나 하고 G++ 2.9.5를  컴파일시켜서 설치를 시킬려고 해봤더니 또 안된다. 인터넷을 뒤져보니 ISO C++ 표준을 제정함에 따라 C++의 grammar와 표준 라이브러리 이름들이 많이 변했다는데, 이들 간의 호환이 안되는거다. compatibility package또한 3.4,6인지라, g++ 2.9.5 환경에서 개발된 GIST 라이브러리는 컴파일이 안된다.
행여나 싶어 G++ 2.9.5를 내장한 이전 리눅스를 찾아보았더니 Fedora4가 이를 포함하고 있었다. 그래서 Fedora4로 OS를 다운그레이드 시켜볼까 하고 찾아봤더니 Fedora 7 이하는 FTP archive에서도 다 날려버렸더라. 이래저래 컴파일시 에러메시지들 찾아보면서 GIST 라이브러리를 고쳐서 쓰던가. 아니면 Praveen이 손본 TwigStack의 코드에서 GIST를 빼버리고, 다른 B-트리 코드를 끼워넣던가 해야한다. TJFast는 또 Java로 작성되어서, 문교수님과 상의한 바에 따라 Java Native Compiler로 바이너리 코드를 만들어 내어 비교를 해주어야 한다. 이래저래 실험하려면 아직 준비할 것들이 많다.


 좀더 일찍 코딩을 마칠 수 있었으면 좋으련만..알고리즘 고안은 10월초에 다 끝냈는데, C++ 에 익숙치 않아서 코딩하는데 시간을 많이 보내버렸다.  한국에 있었을 때는 분업화된 랩 분위기에 맞추다보니 고년차가 되면서 코딩을 안하게 되었고,  거기다가 연구소에 있었을 때도 Java 코딩만 했으니.. 심규석 교수님 말씀대로 전산학도는 자기가 고안한 알고리즘을 직접 코딩해서 그걸 눈으로 확인할 수 있는 코딩 실력은 갖추어야 한다는 말이 절실하드만..
아무튼 몸은 고되지만 코드가 완성되어서 내 머릿속에서 생각했던데로 실제로 동작하는 것을 눈으로 확인하는 과정은 매우 즐겁다.  내가 한국의 대학원과 연구소에 있었을 때 이런 일들을 얼마나 하고 싶어했던가...  알고리즘을 작성하고, 그걸 구현해서 실험을 하고, 그 결과를 논문으로 완성시키는 이 단계를... 여기에 와서라도 이런 연구를 할 수 있게 되었으니 그나마  다행이다 싶지만, 한편으로는
한국에서는 이러한 연구를 하지 못하게 만드는 실정이 몹시 안타깝구나. 지나가버린 내 아까운  황금같은 청춘의 시간들이여~~
Posted by Bart

9/11/08 목. 문 교수님과 어김없이 맨투맨 미팅을 하였다.
 
미팅 시간이 또 부족해서, 내일 다시 미팅을 하기로 하였다. 문 교수님이 우리는 만나면 얘기할 것이 많아 미팅 시간이 부족하니, 앞으로는 30분 일찍 시작하자고 하신다. 11시부터 다른 미팅이 있으신데 한 시간 얘기하는 것으로는 시간이 계속 부족하다고.... 이제는 9:30AM부터  미팅이다. 아아... 올빼미족인 나로서는 앞으로는 전날부터 날을 새버리는게 나을라나....
그리고 다음 주 월요일 그룹 미팅 때는 내가 발표해 보는 것이 어떠냐고 하신다.  (물론 발표는 영어로)
내 판단으로는 여기에서 ~하는 것이 어떠냐라고 하시는 것은 한국에서 ~ 하라는 것과 같은 의미인 것 같다.  월요일 미팅 자료도 준비해야겠다. 난 앞으로 목요일 오후를 토요일 오후로, 금요일을 일요일로 알고 쉬어야겠다.(아 내일 금요일에 또 맨투맨 미팅 있지... ㅠㅠ)
주제는 아무것도 상관이 없다고 하신다.
 머릿속에서 떠오르는 온갖 공상 과학 스토리도 여기에서는 다 얘기할 수 있다.  참 좋은 환경이다. 이렇게 미팅을 하다보면, 처음엔 웃기지도 않던 아이디어들이 구체화되면서 하나씩 쓸모있게 변화되는 느낌이다.

내가 전부터 굉장히 궁금해 왔던 질문을 교수님께 드려보았다.  현재 가장 많이 사용되고 있고, 대학에서 주로 가르치고 있는 프로그래밍 언어는 Java  일텐데, 왜 논문들을 보면 구현은 전부다 Unix/Linux 환경에서 C/C++ 로 작성했다고 되어 있는지, 그 이유는 무엇인지,  메모리 접근 또는 관리의 유용성 때문인지? 그리고 꼭 이 환경에 이 언어로 작성해야 하는지? 등에 대해서 여쭈어보았다.

문 교수님이 이박사는 뭘 선호하냐고 여쭈어보셔서 '저도 역시 Java가 편하다. 그리고 한국의 대학에서는 Java를 주로 가르치고 있다'라고 말씀드렸다. 여기 대학에서도 Java를 주로 가르친다고 하신다. 하지만, 논문에서 구현을 위해서는 마찬가지로 Unix/Linux 환경 C/C++를 선호한다고 하신다. 내용인 즉슨,

1)  논문 작성에 있어 알고리즘의 구현을 꼭 Java로 해서는 안된다는 입장은 아니다.
2) 하지만, Java는 JVM이 Bytecode를 읽는 interprete 방식이다. 즉 OS와 프로그램 사이에 JVM이 끼어 있다. 이 때문에 성능 측정 시 JVM 때문에 왜곡이 발생할 수 있다.반대로 C/C++로 작성된 executable code는 OS 사이에 아무런 것이 없다. 
3) Windows에는 알려지지 않은 또는 접근이 불가능한 온갖 프로세스, 서비스들과 기타 성능 측정 시 왜곡을 일으킬 수 있는 요인들이 있다. 그리고 이들은 대부분 그 안을 볼 수 없는 blackbox이다. 하지만 Unix/Linux는 모든 프로세스에 대한 모니터와 handling이 가능하다.
4 결국엔 논문을 쓰기 위해서는 Unix/Linux와 C/C++ 는 필수이다.
 
아.. 생각해 보니 그렇겠구나. 당연한 내용인가?

'미국 생활 > 투산,애리조나' 카테고리의 다른 글

[56일째] 그룹 미팅 후  (2) 2008.09.16
[54일째] 여기에서 사 가져가면 좋을 물건들.  (3) 2008.09.15
[49일째] 응?!  (2) 2008.09.08
[48일째] 비어 파티  (4) 2008.09.07
[46일째] 맨투맨미팅 후  (0) 2008.09.05
Posted by Bart
CS 전공/리뷰2008. 9. 10. 10:44
Claremont Report는 DB, CS 계의 석학들이 올해 5월에 Claremont Resort, Berkeley, CA에 모여서 앞으로의 비전에 대해서 토론한 내용을 간략하게 보고서 형태로 쓴 것이다. 이 모임은 5년에 한 번 열린다고 한다. 그러니 다음 report는 5년 뒤인 2013년에 나오겠지. 아주 rough하지만(논문 주제를 잡아 줄만큼 자세하지는 않지만), Big thinker들이 생각하는 앞으로의 추세와 연구 방향에 알아볼 수 있는 좋은 내용들이다.

참석한 사람들도 어마어마하다.  Alon Halevy, Ioannidis, Stonebraker, An Hai Doan, Haas, Rakesh Agrawal 등등등..
http://db.cs.berkeley.edu/claremont/에서 간단한 report와 발표자들의 TP들을 볼 수 있다.
Posted by Bart
8/28/08 목. 지난 주 처음 개별 미팅때 문 교수님께 내가 처음 하고자 하는 연구 내용에 대해서 설명을 드렸었다. 2가지 중요한 내용에 대해 질문을 던지셨는데, 제대로 답변을 못했다. 생각해보니 내가 너무 마이너한 문제를 푸는데 치중한 나머지 실질적으로 보다 중요한 문제를 풀지 않고 그대로 간과해 버린 듯 싶었다.
 그래서 일주일 간 생각을 해보고 답을 드리기로 했다. 일주일동안 머리를 쥐어짜느라 아주 괴로웠다. 이게 안되면, 여기에서 무슨 다른 일을 해야 하나 마음 고생도 되고...그러다가 엊그제 자기 전에 든 생각이.. 그럼 지금 내가 풀려는 마이너한 문제를 푸는 건 무시해버리고, 보다 중요한 문제에 대한 솔루션으로 내 아이디어를 적용시키는 방법을 찾는게 어떨까 싶었다. 그래서 머릿속으로 대충생각해 봤는데 괜찮은 듯 싶었다. 그림으로 그려보니까 좀 몇가지 고민할 거리가 있지만 괜찮을 것 같았다. TP를 뜰 시간은 없고 그냥 종이 두장에다 쓱싹쓱싹 그림하고 중요 내용 정도를 써가지고 미팅에 참석했다. (여기에서는 격식 별로 안차려도 되는 듯. 한국에서는 이러면 안되겠지만 ^^;;)

먼저 문교수님한테 처음에 말씀하신 문제점들에 대해서는 답을 못내겠고, 아무래도 이방향으로는 좋은 논문 나오기가 어렵겠다고 말씀드렸다. 그리고 처음 연구 방향으로 가기 어려운 이유에 대해 조사한 내용을 설명드렸다. 그 다음에 새로 낸 아이디어에 대해서 그림을 가지고 설명드렸다. 보시더니 발상 전환을 잘했다며, 몇주를  이걸 가지고 고민하는데 투자할 만큼 충분한 가치가 있을 것 같다고 하신다. 아직은 가능성 뿐이지만, 어느정도는 연구가치는 인정받은 셈이다. 
 문 교수님이 연구하는 사람들은 T자로 생각해야 한다고 조언하셨다. 너무 하나만 깊게 파고들어가면 다른 쪽이 어떻게 변하는지, 뭐가 중요한지 모르게 된다고, T자 마냥 깊게 파고들어가면서 또 다른 부분도 넓게 보아야 한다고... (우리말로 하면 나무도 보고 숲도 보고... 뭐 이런 뜻이쥐~~)
그리고 교수님이 제안하신  연구 주제에 대해서도 그것도 같이 병행하겠다고 말씀드렸다.  이제 일복 터진셈이다. 이 연구주제들을 잘 꾸려나가서 좋은 결과를 내었으면 좋겠는데.... 

오늘 이메일을 보니 파킹 퍼밋이 할당되었으니 돈내고 찾아가라고 연락이 왔네.
파킹 오피스에 들렸다가 오늘은 좀 일찍 집에가서 쉬어야겠다.
학교에서 드디어 한국 동영상들 빠르게 받는 방법을 알아냈다. 이제 그간 밀린 1박2일/무한도전/황금어장 보면서 쉬어야지... 하며, 슬슬 집에 갈 준비를 하던 찰나에 문 교수님이 제안하셨던 연구 주제에 대한 문서를 주시러 오셨다. 진행 중인 일이니 기밀을 유지해달라는 당부와 함께, 한번 읽어보고 다음주에 한번 생각을 얘기해달라고 하셨다. 잠깐 보니 정말 깔끔한 영어문장들이다... 아... 나도 이렇게 영작잘하고 싶다...

Posted by Bart