CS 전공/학회와 정보2009. 11. 15. 18:23
Christian Jensen 교수(이 분도 미국 외의 나라의 학자들 중 아주 열정적으로 연구하는 분 중 한명이다.)가 자신의 블로그에서 DB 관련 주요 학회들의 논문 투고량과 게재율을 분석했다.
요지인 즉, 전반적으로 SIGMOD, VLDB과 같은 DB 쪽 Conference의 인기가 시들어가는가? 라는 것이다. 이유인 즉 SIGMOD, VLDB 논문 투고량이 조금씩 줄고 있다는 것인데, 내 생각은 좀 다르다.
경쟁이 아주 빡세서(즉, 채택율이 아주 낮아서) 사람들이 다른 쪽으로 논문을 내고 있는 것이 아닌가라는 생각이다.  그리고, 우리나라 같이 SCI 저널만 실적으로 쳐주는 곳의 학자들은 아무래도 저널에 논문을 내기 떄문일 것이다. 

여튼 재미있는 현상들이 보이는데 요약해보면, 

1. SIGMOD, VLDB는 계속해서 채택율이 14~18% 내외이다. 논문 접수량이 줄고 있다지만 사실 예년과 거의 비슷한 수준인 듯 싶다.   채택율이 낮으니 어차피 사람들이 가능성이 꽤 있어 보임직한 논문들만 낼 터인데...계속 고정적인 채택율을 유지하는 것은   여전히 품질 유지가 잘되고 있다고 해야 할까...
역으로 말하면 사람들이 가장 쳐주는 학회가 SIGMOD, VLDB이라는 얘기라는 거.

2. 상대적으로 오래되지 않았던, (물론 이젠 오래된 학회 중 하나이지만) ICDE는 초기 25% 정도의 채택율이 이제는 SIGMOD, VLDB와 유사하다. 하지만, 논문 접수량이 최근에 급격히 줄고 있다. 

3. 유럽 쪽의 DB 컨퍼런스인 EDBT 또한 ICDE 같이 접수량의 하락폭이 무척 크다. 아마도, ICDE나 EDBT는 인지도는 SIGMOD, VLDB에 떨어지면서 채택율은 이들과 비슷하기 때문에 사람들이 접수를 피하는 것이 아닐까? 그래서 그런지 몰라도 올해 EDBT의 채택율은 갑자기 30%로 뛰었다. 내년엔 접수량이 좀 올라갈 듯?

4. CIKM은 1999, 2000년 40%에 가까운 채택율이더니 2003년부터는 다른 학회가 같은 수준으로 채택율이 빡세졌다(올해 14.5%). 채택율로만 보면 SIGMOD, VLDB 수준이다. 더불어서 논문 접수량도 다른 DB 컨퍼런스가 감소하는 반면에 지속적으로 증가하는데, 이것은 접수 분야가 다른 컨퍼런스보다 상대적으로 다양(DB, IR, KM)하기 때문에 많은 논문이 접수되는 것으로 보여진다. WWW conference 같은 경우는 정말 여러 분야의 사람들이 논문을 내는데, 그 때문인지 채택율이 8%라고.

5. 학회가 열리는 장소에 따라 논문 접수량이 차이를 보일 수도 있다. (너무 먼 곳에서 열리면, 가기 귀찮아서 다른데 내겠지...)

6. 아마 엔간한 저널들의 채택율이 주요 conf. 보다 훨씬 높을 것이다.(빡세지 않을 것이다). 예전부터 여러 사람들이 예상하고 있는 얘기이다.

결론: 오래되고, 저명한 학회는 논문 접수량에 신경쓰지 않고 고정적인 채택율을 유지한다. Inter-disciplinary 학회는 논문 접수량이 상대적으로 많다. 

 진짜 결론: 이런 거 신경쓰지 말고 그냥 제대로 된 연구나 하자...
Posted by Bart
CS 전공/책, 자료들2009. 10. 6. 23:31
최근에 CMP(Chip-level Multi Processor) 또는 Multi-core의 출현-사실 멀티코어의 대두는 frequency wall, power wall, heat dissipation 등 여러가지 이유 등으로 발생하게 되었지만, 자세한 출현 배경은 나중에 언급하도록 하자- 에 따라, 커리큘럼에 parallel programming 또는 multi-core programming 코스를 추가하는 미국 대학들이 많아지고 있다.

Memory bandwidth등의 문제로 아직 8 core 이상에서는  이상적인 성능을 보여주지는 못하는 듯 하지만,
사람들이 예측하기로는 32 core CPU가 시중에 유통될 날도 멀지 않을 것이라 한다.  뭐 인텔은 실험적으로 80-core CPU도 공개한 적이 있다. 
더 나아가 멀티 코어들을 여러개 꽂은 멀티 프로세서 시스템들도 쏙쏙 출현할 것이다. 거기에다 각 Core가 SMT (Simultaneous Multi Threading) 까지 지원한다면, 실제 돌릴 수 있는 시스템 쓰레드의 수는 엄청 많아질 수 있을 것이다. MapReduce 기술과 함께 바야흐로 Reminiscence of Parallelism이다. 
(사실 MapReduce와 Multi-core가 결합되는 예도 있는데, Stanford 애들이 만든 Pheonix라는 MapReduce의 Multi-core Programming Model로의 적용과 같은 연구도 있었다) 

아무튼 이런 저런 이유로 이제는 직렬 프로그래밍(sequential programming) 뿐만 아니라,  Parallel Programming 기법도 손에 익어두어야 할 필요가 있겠다.

아래는 여태껏 조사해 본 멀티코어 관련 강좌들:

1. Multicore Programming Primerhttp://www.youtube.com/watch?v=vhIwuNJzVG4
   MIT Open Courseware(http://ocw.mit.edu/OcwWeb/web/home/home/index.htm에서 제공하는 강좌
   2007년도 강의 비디오와 강의 노트를 제공한다. 
   올해 강의 홈페이지 및 자료는  http://groups.csail.mit.edu/cag/ps3/index.shtml에서,, 그런데 Cell   Broadband Chip을 중심으로 살짝 방향이 바뀐 거 같다

2. Parallel Programming for Multicorehttp://www.cs.berkeley.edu/~yelick/cs194f07/
    UC Berkeley 전산학과 학부  2007년도 강의

3.  Applications for Parallel Programming, http://www.cs.berkeley.edu/~yelick/cs267_sp07/
    UC Berkeley 전산학과 대학원  2007년도강의

4. An Introduction to Parallel Programming& Parallel Programming Tools,  http://www.sun.com/solutions/hpc/development.jsp
   Sun HPC(High Performance Computing)에서 제공하는 Courseware

5. High Performance Computing Training(https://computing.llnl.gov/?set=training&page=index)
  Lawrence Livermore National Laboratory에서 제공하는 강좌들
 Parallel Computing 을 비롯한 HPC 관련 강좌들을 여러 개 제공한다.

written by Bart
Posted by Bart
CS 전공/생각?2009. 10. 5. 18:19
과거에 비해 논문 심사 의뢰가 많이 들어오는 편이다.
논문 심사가 들어오는 건 참 고마운 일이다. 그만큼 사람들이 내 손(?)을 필요로 한다는 얘기일 수도 있고, 아니면 이 바닥에서 내 이름이 잊혀지지 않고 있다는 얘기도 되니까 말이다. 
하지만, 아직 갈길이 먼 나인데 내 무엇을 보고 이리 논문 심사를 의뢰들 하시나 하는 생각에 부끄러움이 들 때가 많다.

어쨌든 심사가 들어오면, 열심히 심사를 하려고 한다. 누군가 그랬다. reviewer들은 너의 적이 아니라 너의 논문을 보다 견고하게 하기 위한 조언자들이라고. 비판을 칭찬으로 받아들이라고. 옳은 말이다. 

리뷰어 중에 성실한 분들은 정말 바쁜 와중에 몇 장씩 자세하게 comment를 달아주는 경우도 있다. 또한, 이런 이런 페이퍼들도 있는데 네가 안 읽어본 것 같다. 이 내용들을 검토해서 추가하면 논문의 질이 더 높아지겠다. 이런 식으로 마치 자신들이 어드바이저 마냥 대해주는 분들도 있다.

하지만 간혹 논문 심사를 받다보면, 말도 안되게 간단하게 몇 줄 적고, 가부 판정하는 reviewer들을 만나기도 한다. 그런 경우에는 논문 작성자 입장에서는 정말 분기 탱천이다.  가타부타 자세하게 설명을 해줘야 논문을 가다듬는데 도움이 되는데, 그냥 "이래서 뭐, 저래서 뭐 그래서 게재가 가/부이다". 이렇게 쓰면, 작성자 입장에서는 이 리뷰어가 논문을 제대로 읽고서 심사했나 하는 의심까지 들 정도다. 모 학회는 Accept/Reject 판별을 하는데 아무런 comment도 주지 않는 황당+무례함를 보이기도 했다.(추후에 그 학회에서 오는 모든 메일은 싸그리 무시하고 있다. 지금은 어떤지 모르지..) 

Jiaheng Lu 교수의 홈페이지에서 논문 리뷰에 관한 자신의 다짐 정도 되는 글을 봤는데, 리뷰어 입장에서 마음에 와 닿아 글을 옮겨본다.

    My pledges as a reviewer:

    * I will treat your work with respect and write reviews in a courteous manner. 
    * I will spend enough time with your paper. I will not make any decision without a good understanding.
    * In case I decide to recommend rejection, I will do so on solid grounds. 

Posted by Bart
CS 전공/리뷰2009. 9. 28. 21:49

프로그램을 코딩할 때에 우리는 종종 컴퓨터 구조를 무시하거나, 망각하고 코딩하는 경우가 종종 있다. 이렇게 프로그래머들이 컴퓨터 구조를 무시하는 이유는 내가 판단하기에 크게 두가지이다. 첫째는 몰라 서이고, 둘째는 프로그래밍 생산성(productivity)을 증가시키기 위해 잘 추상화된, 즉 high-level abstraction을 제공하는 프로그래밍 언어의 사용 으로 인해서이다. 즉 프로그램 성능에 관한 문제를 완전히 또는 상당 부분 컴파일러나 인터프리터에게 맡겨버림으로써 더이상 컴퓨터 구조에 대한 고민을 하지 않아서이다. Java만 해도 포인터를 없앰으로써 메모리 관리에 대한 고민을 더이상 하지 않게 하지 않았는가? 이러한 프로그래밍 언어의 abstraction은 프로그램의 생산성은 크게 향상시켜 주었다. 하지만 프로그램의 성능(performance)에 대한 고민을 한다면, 저수준의 추상화를 제공하는 다른 프로그래밍 언어를 이용해 컴퓨터 구조에 잘맞는 프로그램의 작성이 요구될 것이다. 그리고 그것이 내가 생각하는 C/C++, Assembly가 아직도 성능이 우선시 되는  여러 프로그래밍 분야, 특히 시스템 프로그래밍에 널리 이용되는 이유이다. 
 
프로그램을 코딩할 때에 왜 컴퓨터 구조를 고려해야 하는지 여기에 그 이유가 있다.

그림 1. Multi-level Caches in Computer Systems



그림 1은 컴퓨터 시스템의 캐시 구조를 개념적으로 도식화한 것이다. 프로세서는 instruction이나 data를 보관할 register와 L1 cache를 가지며, 또한 L2 cache를 갖는다. 어떤  CPU는 L1 cache로 Instruction cache와 data cache를 따로 가지는 경우도 있으며 또는 Unified L1 cache 하나만을 가지는 경우도 있다. L2 Cache는 현재 대부분의 CPU는 on-chip으로 되어 있으며, 간혹 어떤 CPU들은 Off-chip L3 cache를 갖는 경우도 있다. 메인 메모리는 I/O BUS를 통해 CPU 및 다른 디바이스들과 연결되며,  Disk 또한 I/O BUS를 통해 연결된 Disk controller를 통해 연결된다. BIOS(Basic IO System)을 제외한 컴퓨터 시스템의 운용들에 필요한 거의 모든 프로그램과 데이터는 초기 디스크에 저장되어 있으며, 필요에 따라 프로세서에 의해 요구된다. 
우리가 익히 알다시피 디스크는 용량(capacity)와 $/MBytes 는 우수한 반면에 속도(speed)는 늦은 저장매체이다. (사실 속도는 latencybandwidth 두 요소에 의해 결정된다.)
따라서, 필요한 데이터 접근을 위해 매번 CPU가 disk controller에 데이터를 요청한다면, CPU는 디스크가 해당 데이터를 제공하기 위해 필요한 시간(latency + read time+ delivery time)동안 아무일도 하지 못하는 stall 상태에 놓이게 된다. CPU는 가급적 놀리지 않아야 코드의 성능 향상이 있다.

따라서, 현대의 컴퓨터 시스템은 다단계의 캐시 구조를 가진다. 자주, 빈번하게 쓰이는 데이터들은 보다 상위의, 용량은 좀더 작고, $/MBytes는 보다 비싸며, 속도는 보다 빠른, 메인 메모리에 캐싱을 하는 것이다. 데이터베이스에서는 이렇게 디스크에서 메모리로 올려진 데이터들을 버퍼라고 얘기를 하기도 하며, 또 혹자는 메모리 캐시라고도 얘기하기도 한다.
메모리 또한, 접근 속도가 시스템 캐시(L2) 보다 느리므로, 메모리에서 또 다시 자주 사용되는 데이터나 루틴은 다시 L2로 캐시한다. 그리고 L2는 L1으로 L1는 프로세서의 레지스터로.... 결과적으로 컴퓨터 구조는 다음과 같은 메모리 계층(memory hierarchy)를 갖게 된다.
 

그림 2. Memory Hierarchy


최근까지 많은 컴퓨터 프로그램의 성능 향상은 주로 디스크와 메모리 간의 속도 차이를 극복하기 위한 방안으로 진행되어 왔다. 즉 느린 속도를 개선하기 위해 많이 쓰이는 데이터를 메모리에 가져다 놓기 위한 노력이 있어왔는데 대표적인 것이 Buffer Management(LRUK 등), B+-tree, R-tree와 같은 disk-resident indexing 기법들이 있을 수 있겠다. 실상 최근까지 데이터베이스 및 정보 관리 분야에서의 거의 모든 문제들은 이러한 디스크와 메모리 간의 gap을 어떻게 극복하느냐를 주된 관심으로 가졌으며, Jim Gray는 이러한 디스크와 메모리 간의 gap에 대해 저 유명한 Five Minute Rule[5] 로 매 5분 내에 다시 이용될 디스크 페이지는 메모리에 캐시하도록 제시했었다. 또, 디스크라는 storage는 latency 자체가 크게 성능 개선이 이루어지지 않아 왔던 관계로, 이러한 기법들이 지금까지도 아주 잘 먹혀 들어갔던 것도 사실이다. (Latency와 Bandwidth의 차이는 [1]을 참조)

그림 3. Memory Wall



하지만, 최근의 경향을 보면 이제는 메모리 또한 bottleneck이 되어 가고 있다는 것이다[2]. 메모리 월(Memory Wall)이라고도 불리는 이 현상의 설명을 위해 그림 3을 보자.
그림 3은 한 instruction 수행을 위해 요구되는 clock 수의 개선 경향과, 메인메모리로 사용되는 DRAM의 접근에 필요한 clock 타임을 비교한 것이다. 메모리 용량의 증가는 메모리 칩 내부에 더 많은 내부 공간을 가진다는 것이며, 접근할 내부 공간의 증가는 더 많은 system clock을 필요로 한다.  CPU의 system clock이 매년 크게 향상되어서, 실제 메모리 접근에 필요한 시간은 줄어든다 할지라도, 메모리 접근에 필요한 절대적인 clock 수는 증가한다라는 것이다. 예를 들어 한 프로그램이 100 Instruction으로 구성되고 프로그램이 필요한 데이터를 위해 각 LOOP마다 메모리에 1번씩 접근,메모리에 10번 access를 한다고 하자.  2010년 기준으로 100 Instruction 처리는 4.2 clock만에 끝나는 반면, 한번의 메모리 접근을 위해서는 1000 clock이 요구된다. 즉, 메모리에서 데이터를 읽어들여 CPU의 레지스터에 올리기 전까지 CPU는 995.8 clock 동안 아무런 일을 하지 않고 노는 stall 상태에 빠지게 된다. 이 후 두 번째 LOOP부터는 레지스터, L1, L2 cache에 접근하여 데이터를 읽어들이던가 아니면 또다시 메모리에 접근하겠다.
물론 매 LOOP마다 메모리에서 데이터를 가져온다면, 이 같은 현상이 반복될 것이다.

 따라서 이러한 메모리와 CPU 간의 속도 차이는 L1, L2 시스템 캐시의 효과적인 이용을 고민하게 한다. 마치 예전에 디스크와 메모리 사이의 갭을 극복하고자 했던 것과 마찬가지로 말이다.
그림 4와 5는 이러한 고민이 왜 필요한지 여실히 보여준다.
  

그림 4. Memory Mountain of Pentium III Xeon


 그림 4는 1999년 출시되었던 Intel의 Pentium III Xeon 을 탑재한 컴퓨터 구조에서 메모리와 L1, L2 시스템 cache 간의 데이터 처리량(throughput)의 차이를 보여준다. 

그림 5. Memory Mountain of Intel Core 2 Duo T9300


그림 5는 2008년 1분기에 출시된 Intel Core 2 Duo T9300(2.5GHz Clock speed, 2X 32KB On-chip L1 D-Cache, 2 X 32KB On-chip L1 I-Cache, 6MB Unified L2 Cache) 을 탑재한 컴퓨터 시스템에서 메모리와 L1, L2 시스템 캐시에서의 데이터 처리량을 보인다.    

 먼저 그림 4의 Xeon 에서의 L1, L2, Mem간의 단위 시간 당 처리량을 보면, Stride-1인 경우 메모리는 200 MB/S 이하, L2 Cache는 700MB/S 이상, L1 Cache는 1000MB/S 이상을 상회한다. 
최근에도 이 상황은 달라지지 않았다. 그림 5의 Core 2 Duo의 경우 Stride-1에서 메모리는 4,000MBps/S
L1 Cache는 8,000MBps/S, L2 Cache는 10,000 MBps/S로 이 경향은 그대로 유지되고 있다. (이 실험은 멀티코어에서의 병렬성은 이용하지 않고, sequential programming하여 코어 두 개 중 하나만 이용한 경우로 보인다. 그 이유는 나중에 설명한다.)

빈번하게 사용되는 데이터는 캐시에 올려놓음으로써, 가급적 메모리에 접근하지 않고, 프로그램을 수행하는 것이 보다 프로그램 성능을 향상시킬 수 있다. 하지만, 시스템 캐시에서의 데이터 또는 instruction의 배치(placement)와 교체(replacement)는 H/W에 의해 결정이 되므로, 우리가 임의로 어떠한 프로그램이 다루는 코드나 데이터를 임의로 캐시에 배치하기는 곤란하다. 하지만, 캐시되기에 좋게 프로그램을 작성할 수 있는 방법은 있다. 즉, Cache-aware한, 또는 Cache-friendly한 프로그램을 작성하는 것이다. 그러면, 어떻게 해야 cache-friendly한 프로그램을, cache-aware한 알고리즘을 작성할 수 있을까? 위 데이터 차트들에 그 힌트가 있다.

먼저 그림 4를 보면, L1 cache와 L2 cache, memory가 서로 다른 능선들을 그리는 것을 볼 수 있다.
어떤 한 프로그램의 data가 모두 L1 cache에 저장되어 있다면 최대 1000MB/S의 처리량으로 프로그램이 처리될 수 있을 것이다. 반대로 어떤 한 프로그램의 data가 모두 memory에 저장되어 있고 L1, L2에 의해 cache되지 못한다면, 200MB/S 정도의 처리량 밖에 얻지 못한다. 
이번에는 작업 데이터 크기(working set size)를 보자. working set size에 따라 달라지는 처리량은 시스템 캐시의 크기와 관련이 있다. L1 d-cache의 크기가 16KB이므로, 16kB를 넘는 작업 데이터는 당연히 L1 d- cache에 담을 수 없으므로 L2 cache에 담고, L2 cache에 접근하게 된다. 또한, 512KB L2 cache를 넘는 데이터는 종국엔 메모리에 접근해서 가져오게 된다. 결국, 16KB, 512KB의 작업 데이터 크기를 경계로 능선이 구분된다.

또다른 현상은 stride의 수에 기인한다. stride란 해당 작업 데이터가 메모리 공간에 서로 인접해 있어 한번의 scan으로 읽혀지는지, 아니면  나뉘어져 있는지를 구분한다. 즉, stride-1은 모든 데이터가 서로 메모리 공간에 인접해 있다는 것이며(data[0], data[1], ...data[n]), stride-2는 작업 데이터가 1개 공간씩 떨어져 있다.(data[0], data[2], data[4], ,,,, data[n]). 즉, stride-k은 data[0], data[k], data[2k], ....로
메모리에서 이전 데이터와 k만큼 떨어져 있는 데이터를 읽는다.
stride-1에서는 데이터가 서로 인접해 있으므로, data를 sequential scan 하기 용이하며 결과적으로 처리량도 제일 높다. stride-k에서 k가 증가하면 증가할 수록, 데이터가 서로 떨어져 있게 되어 메모리의 처리량은 떨어진다. 하지만 L2 cache는 어떨까? L2 cache에서는 처리량이 떨어지다가 stride-8 부터는 평지를 이룬다. 이것은 한 캐시 라인이 가지는 캐시 블록 크기와 관계가 있다. 여기에서 한 캐시 라인의 block size는 8word(32bytes)이다. stride-1일 때는 8개의 인접해 있는 word들이 한 캐시라인에 캐싱될 것이고, stride-2일 때는 4개의 인접해 있는 word들이 한 캐시라인에 캐싱될 것이다. stride-8일 때는 1개의 word만이 한 캐시라인에 캐싱된다. 따라서 stride-8인 경우는 8개의 cache line을 읽어야만 8 word를 복구시킬 수 있다. stride-8 이상의 경우에도 물론 8개의 cache line을 읽어야 한다. (word 단위 이하로 잘라서 캐싱하지는 않기 때문이다).  

프로그램은 로컬리티(locality)를 가진다. locality란, 프로그램은 최근에 이용했거나 참조한 인스트럭션이나 데이터를 다시 이용하는 경향을 보인다는 것이다. 이러한 로컬리티는 크게 temporal과 spatial로 나뉜다.
  • Temporal locality: 최근에 참조한 아이템은 가까운 미래에 다시 참조되는 경향이 있다.
  • Spatial locality : 인접해 있는 항목들은 한 번에 같이 참조되는 경향이 있다.

전체 캐시 크기(total cache size)는 temporal locality를 이용에 힌트를 준다. 즉 임의 프로그램이 작업 데이터를 반복적으로 읽어야 하는 경우, 한번에 참조하는 최대 데이터의 크기를 전체 캐시 크기 단위에 맞추어 블록 단위로 처리하면, 메모리 접근을 상대적으로 많이 피할 수 있으므로 성능 향상을 시킬 수 있다는 점이다.
두 번째로는 시스템 캐시의 캐시 크기는 spatial locality의 이용에 힌트를 준다.캐시 라인 크기에 맞추어서 데이터들을 서로 메모리 공간에 인접시키면, 프로그램이 데이터를 캐시에서 읽어 들일 때 여러 캐시 라인이 아닌, 한 캐시 라인 단위로 읽어들임으로써 성능 향상을 시킬 수 있다. 이는 포인터 이용에 관한 우리의 일반적 습관들을 다시 한번 고민하게도 한다.

다음 글에서는 행렬 곱셈과, Cache-aware한 B+트리, 해싱과 같은 예를 통해 로컬리티의 향상이 어떻게 프로그램의 성능을 개선하는지 보인다.

참고 문헌
[1] Latency Lags Bandwidth, David A. Patterson, Communications of ACM, 2004
[2] Hitting the Memory: Implications of the Obvious, ACM SIGARCH Computer Architecture News,  Bill Wulf and Sally Mckee, 1995
[3] Query co-Processing on Commodity Processors, Anastassia Ailamaki and et al., A tutorial in ICDE 2006.
[4] Computer Architecture: A Quantitative Approach The 4th Edition, John L. hennesy and David A. Patterson, 2007
[5] The 5 Minute rule for trading memory for disc accesses and the 10 byte rule for trading memory for CPU time, Jim Gray, SIGMOD Record, 1987

Acknowledgement
이 글에서 참조한 그림 1,2,4 는 Computer Systems: A Programmer's Perspectivem Prentice Hall, 2002의 instructor's material에서 발췌함. 그림 5는 Wikipedia에서 발췌함. 그림 3는 참고 문헌 [3]의 저자들의 Lecture slides에서 발췌함.

Written by Bart, 2009

'CS 전공 > 리뷰' 카테고리의 다른 글

Casssandra의 매우 이상한 성능 값  (4) 2009.12.27
DBMS on New Hardware  (9) 2009.11.22
최근의 DB 연구 경향  (1) 2009.08.20
Claremont Report  (0) 2008.09.10
ASU의 Yi Chen 교수의 대학원 강의:Data on the Web  (0) 2008.03.25
Posted by Bart
CS 전공/논문 쓰기2009. 9. 27. 16:35
미국애들이 쓰는 용지 크기는 USLetter이고, 한국은 A4이고... 용지 차이로 인해 컴파일시 제대로 
용지 크기에 맞추어서 행간이 적절히 설정이 안되는 문제가 있다.  PDF LaTeX를 이용하여 컴파일 한다면, 아래대로 처리하자. 

아래의 글은 (Andrew J. Norman이 작성한 http://physics.wm.edu/~norman/latexhints/pdf_papersize.html)에서 발췌하였다. 

When compiling a document using pdflatex (under the default installation of teTeX) the papersize (page size) may be set incorrectly if calls to the Vmargin or Vpage packages are used.

The resulting page size will normally be set to an A4 default (210x297mm or roughly 8.24x11.71in) with appropriate margins. This behavior is caused by page defaults both in the pdftex configuration file and in the Vmargin style file. To correct this you should perform the following modification:
In pdftex.cfg ($TEXBASE/texmf/pdftex/config/pdftex.cfg) remove or modify the lines:

page_width 210truemm
page_height 297truemm

So that they correspond to your desired default pagesize. An example entry for letter sized paper would read:

page_width 8.5truein
page_height 11.0truein

Additionally in the Vmargin style file ($TEXBASE/texmf/tex/latex/misc/Vmargin.sty) at or around line 225 you should change the following default settings so that they reflect the correct default paper size and margins:

%
% DEFAULTS:
%
\setpapersize{A4}
\setmarginsrb{35mm}{20mm}{25mm}{15mm}{12pt}{11mm}{0pt}{11mm}

For example changing this to read:

%
% DEFAULTS:
%
\setpapersize{USletter}
\setmarginsrb{1in}{1in}{1in}{1in}{0pt}{0mm}{0pt}{0mm}

Will set up the default page layout to be the standard USLetter (8.5x11.0in) with 1 inch margins and no headers or footers.

It should be noted that for some reason calls to \setpapersize{} that are made within the document seem to be ignored by pdflatex. Even so, it is advised that you include a proper \setpagesize{} and \setmarginsrb{} call so that pagesize can be controlled when building documents with the standard latex package.

If you are constructing your PDF files via conversion of a postscript document that was produced using dvips, then you should additionally check to make sure that your postscript config file ($TEXBASE/texmf/dvips/config/config.ps) is set up to default to a USLetter (8.5in by 11.0in) bounding box. If you see the following: 

@ A4size 210mm 297mm
@+ %%PaperSize: A4

@ letterSize 8.5in 11in

@ letter 8.5in 11in
@+ %%BeginPaperSize: Letter
@+ letter
@+ %%EndPaperSize

In the config.ps file then the A4 bounding box is used incorrectly in place of the letter bounding box, resulting in documents that are typeset to a USLetter layout but are generated with an A4 canvas. To correct the situation comment out the first two A4size lines so that the file appears as: 

% @ A4size 210mm 297mm
% @+ %%PaperSize: A4

@ letterSize 8.5in 11in

@ letter 8.5in 11in
@+ %%BeginPaperSize: Letter
@+ letter
@+ %%EndPaperSize

This will now generate the proper bounding box for letter defaults.

또한, 아래의 방법도 확인해 두자. 아래는 ifpdf 패키지를 이용하여,  PDF TeX로 컴파일 할 경우 용지 크기를 설정한다.

\usepackage{ifpdf}

\ifpdf % set page size.

\setlength{\pdfpagewidth}{8.5in}

\setlength{\pdfpageheight}{11in}

\else

\fi


Posted by Bart
CS 전공/학회와 정보2009. 9. 25. 12:26
Google Scholar는 논문 검색할 때 가장 많이 이용하는 서비스 중 하나이다.
이 때 논문의 중요도를 부여하는 방법은 정확히 공개하고 있지 않다. 다만, 아래와 같이 기술하고 있을 뿐이다.

"Google Scholar aims to sort articles the way researchers do, weighing the full text of each article, the author, the publication in which the article appears, and how often the piece has been cited in other scholarly literature. The most relevant results will always appear on the first page."

Google에서는 이 Ranking system에 대해 정확히 설명한 적이 없지만, 누군가가 데이터 셋들을 이용하여 어떤 식으로 동작하는지를 분석하고 이를 논문으로 포장하였다. (관심있는 분은  참고하시길 바란다.)
역공학한 친구들의 말을 빌리면, 논문의 인용횟수가 가장 큰 순위부여 요인이고, 논문 제목에서 검색 단어의 존재 유무, 학회명과 저자 명에 큰 가중치를 부여하며, 전문에서 TF는 큰 영향을 받지 않는다 한다.
Matthew effect의 보정을 위해 상대적으로 최근의 논문에 가중치를 좀더 준다.
또한 유의어는 처리하지 못하므로, 여러 유의어들을 가지고 검색해야 한다
예를 들어 Multi-core 관계된 논문을 검색하고 싶다면, Multicore, CMP(Chip-level Multi Processor) 등과  같은 여러 유의어로 검색해야 한다.

 논문 작성에 있어서는 최근에 자신의 아이디어와 유사한 아이디어가 이미 나왔는지 훑어보아야 할 필요가 있으므로, 논문들을 이 랭킹 시스템이 부여한 순위 대신에, 연도별로 sort해 볼 필요가 있다. 
알아보니 Google에서는 이미 내부적으로 연도별 sorting을 지원을 하면서도 해당 옵션을 인터페이스에서 선택할 수 있게 제공하고 있지는 않다. (아마도, workload 가 증가할 까봐 그러는 듯 싶기도 하다.)

여하튼 다음과 같이 하면 연도별 논문 리스트 정렬이 되고, 숨겨져 있던 인터페이스 또한 이용이 가능하다.

1. 질의어 입력 후
2. URL의 맨 끝에  &scoring=r 을 추가해서 다시 접속한다.

그러면, 연도별 정렬과 함께, 언제부터의 논문을 검색할지를 결정할 수 있다.


*** 수정 내용 ***
최근의 Google Scholar는 결과 페이지 상단의 "recent articles"
한국판에서는 "최신 논문/자료"를 클릭하면 &scoring=r 붙여 질의한다는...
즉, 연도별 정렬을 인터페이스로 제공한다네요.



Posted by Bart
CS 전공/책, 자료들2009. 9. 12. 09:30
이번에 모 단체에 DB 관련 기술들에 대한 소개나 기술 동향, summary 논문등을 소개하고, 이를 검토하는 일을 맡았다.
 많고 많은 연구 논문들 중에서 너무 깊게 들어가지는 않으면서 그렇다고 너무 가볍지도 않게, 동종 분야의 연구자들이 쉽게 연구동향을 파악하기 좋도록 논문들을 선별해야 하는데 한달에 1건씩 제안할 수 있다니 1년에 12건 정도를 제안할 수 있겠다.

아래는 현재까지 정리해본 리스트:

1. Database Optimizations for Modern Hardware, Proceedings of IEEE, Vol 96(5), May 2008 pp.863-878
2. Breaking the memory wall in MonetDB, Communiactions of ACM, 12/08, pp.77-85
3. Data Management in the Cloud: Limitations and Opportunities, Data Engineering Bulleting, March 2009, Vol. 32, No.1, pp.3-13
4. Integrating NAND Flash Devices onto Servers, Communications of ACM, 04/09, pp.98-106
5. A Comparison of Approaches to large-Scale Data Analysis, In Proceedings of SIGMOD'09 June 09 
   & HadoopDB, In Proceedings of VLDB'09
6. A Survey of Uncertain Data Algorithms and Applications, IEEE TKDE Vol. 21, No.5, 609-623,  May 2009
7. Hard Disk Drives: The Good, The Bad and The Ugly, Communications of ACM,06-09, pp 38-45
8. The Claremont Report on Database Research Communications of ACM 06/09, pages. 56-65.
   SIGMOD Record March 2009
9. The Five-Minute Rule 20 Years Later (and How Flash memory Changes the Rules), Communications of ACM 07/09 pp. 48-59
10. Probabilistic Databases: Diamonds in the Dirt, Communications of ACM 07/09, pp. 86-95
11. The Pathologies of BIg Data, Communications of ACM 08/09, pp. 36-44

위 리스트는 확정된 것이 아니고, 상황에 따라 유동적이다.
다른쪽 세부분야의 논문들도 보면 좋겠는데, 지식의 한계로 본인이 그나마 먼지나 알고 있는 분야에서 논문들이 추려지는 느낌이다.  또 최근에 출간된 논문 내에서만 추려야 하다보니, 예전부터 사람들이 지긋이 파고 있는 분야는 넣기도 또 애매한 면이 있다.

혹, 다른 DB 업자들이 봐두면 좋을 것 같은 최근의(2009년 이후 출간된) introductory또는 survey paper를 가지고 계시다면, 추천해 주세요. 

Posted by Bart
CS 전공/논문 쓰기2009. 9. 7. 07:56

Bar graph는 논문 작성 시 가장 많이 이용되는 그래프 중 하나이다.
파워포인트를 이용하여 바 그래프를 그리다보면, 각 바들을 색깔로 구분을 한다.
하지만 실제 출력되는 논문은 흑백으로 인쇄되는 것이 태반이므로 색깔로 구분해 놓아서는 나중에
가독성이 심하게 떨어지는 문제가 있다. 아래의 그림 참조
(*위의 두 그래프는 Derek Bruening의 홈페이지
http://www.burningcutlery.com/derek)에서 빌려왔다.)

파워포인트에서 위와 같이 바 그래프를 색깔이 아닌 패턴을 통해 구분토록 하기 위해서는
다음과 같이 한다.

1. 해당 그래프를 우 클릭해서 데이터 계열 서식으로 들어간 후, 채우기 메뉴를 선택.
2. 거기에서 네 번째에 있는 그림 또는 질감 채우기 선택 후
3. 마이크로 패턴 파일을 선택, 삽입하고 아래는 쌓기 옵션으로 한다.

마이크로 패턴은 구글 이미지 검색 등으로 micropattern으로 검색하면 왠만한 것들은 나온다.
특히 http://www.fireworkszone.com/page-2-4-1-433.html에서 꽤 많은 마이크로패턴들을 다운받을 수 있다.  기본적인 패턴 3개는 아래 것을 받아 써도 되겠다.


Posted by Bart
CS 전공/리뷰2009. 8. 20. 11:48
1. SIGMOD 2010 CFP의 연구 주제란에 XML이 없다. 
   1998년부터 지금까지 줄기차게 사람들이 파왔던 이 분야도

   이제 연구할 거리가 거의 없어졌나 보다. 나도 빨리 다른 분야로 갈아타야겠다.

2. ecoSystem, energy efficient software
   MB 정부의 녹색성장은 어떤지 몰라도 이분야는 요새 많이들 언급되는 것 같다.
   특히 energy efficiency는 embedded device에서 뿐만 아니라 server 쪽에서도 요새 언급되고 있는 모양이다.

3. Distributed &Parallel Computing
요새 다시 엄청난 관심을 받고 있다.  MapReduce와 같은 a large-scale data processing on distributed environments는 예전에도 grid computing, distributed computing. distributed & parallel database이란 이름으로 많이들 해왔던 것이다. 그런데 이것이 Google의 mapReduce 와 cloud computing이라는 키워드 때문에 다시금 각광을 받는가 보다. 사실 학계 입장에서는 MapReduce 개념은 30년 전에 이미 논의되었던 단순한 개념에 불과한데, 이리 관심을 받는 것이 편치 않는 듯하다. 아마 그 개념의 단순함에 의해서 사람들이 접근이 용이하고, Google이라는 회사가 이를 구현해서 이용한다는 것 때문에 사람들이 그리들 관심을 가지고 있는지도 모른다. 어쨌든, DeWitt이나 Stonebraker 같은 DB계의 거목들은 MapReduce의 이용이 30년전으로 회귀하는 것이라고까지 말하지만,   산업계의 흐름은 이쪽으로 넘어가려고 하는 듯 하다.  하지만, 또다시 여기에 필요한 여러가지 기능들을 추가하다보면 결국엔 또다시 disributed DBMS와 비슷한 모습을 취하지 않을까 싶다. 또한 보안 문제 등 아직까지 여러가지로 걸리는 것들이 많다.
이 분야 연구는 개인이 하기엔 규모면에서 좀 버거운 점이 있다. 일단 노드 컴퓨터 수가 어느정도 되어야 실험을 해보던가 할텐데, 소규모의 프로젝트 그룹이나 개인이 하기에는 일단 보유할 PC수부터 제약이 있다. 아마, 몇몇 연구단쳬에서 테스트베드를 구축하고 그걸 가지고 코드를 실험해야 할 것이다. 아 얼핏 인터넷 뒤져보니 이미 그런게 몇개 있기는 한 듯 하다. 두번째로는 산업체에서 주로 많이들 달라붙다 보니, 많은 인력들이 붙어서 단기간에 논문을 뽑아내는데, 그 속도를 개인이 따라가기에 쉬울까라는 고민이 좀 있다.

4. Database Management System and Algorithm Designs for emerging harwdware architectures:
  Multi-core processors, larger on-chip caches, large inexpensive RAM, and flash memory
  하드웨어 상황이 변하다 보니, 기존의 알고리즘들을 변화된 하드웨어 환경에 맞추어 효율적으로 동작할 수 있도록 알고리즘을 새로 만들던가 또는 수정을 하던가 해야 할 일들이 필요하게 되었다. 대표적인 것이 멀티코어 프로세서 출현에 따른 parallelism의 재고려, flash memory 가격 경쟁력의 향상에 따른 HDD의 flash memory의 대체, cache capacity의 증가와 memory의 access latency와 CPU clock과의 차이에 따른 stall 문제를 해결하기 위한 cache-aware/oblivious 알고리즘들, 보다 큰 메모리에서 데이터를 효과적으로 처리하기 위한 in-memory data structure와 algorithm등등. 이런 부분들은 Computer Architecture, H/W 쪽 지식을 많이 요구한다.

5. Emerging Computing Environments
   Social network, semantic web, scientific data, sensor network 등은 기존의 관계형 데이터 모델과 상이한 여러 특징들을 가지고 있으므로 이들에 대한 연구도 많이 진행되는 듯 싶다.  일단 이들과 관련하여 graph model에 대한 DB 지원, 또는 graph db 등이 요새 좀 다루어지는 것 같고, scientific data 는 처리해야 할 data volume 때문에 분야 3.과 같은 테두리에서 연구도 많이 진행되는 것 같다.

6. Web Data Processing & Retrieval
  가장 성공적인 데이터, 서비스 전달 도구인 만큼 웹 관련한 내용은 웬만한 CFP에는 항상 있다.

7. 기본기들은 언제나 CFP에서 살아있다.
  indexing, query processing, transaction, privacy, security, data mining 등 기본적으로 필요한 세부 기술들은 언제나 CFP에 오르내리고 있다.

'CS 전공 > 리뷰' 카테고리의 다른 글

DBMS on New Hardware  (9) 2009.11.22
Memory Hierarchy, Memory Wall and Memory Mountain  (10) 2009.09.28
Claremont Report  (0) 2008.09.10
ASU의 Yi Chen 교수의 대학원 강의:Data on the Web  (0) 2008.03.25
Queyring Large XML data repositories  (0) 2007.11.28
Posted by Bart
CS 전공/생각?2009. 7. 31. 00:55

한국이 과학 노벨상 못받는 이유
한국에서 과학분야 노벨상 수상자 등 세계 수준의 과학자가 나오지 않는 것은 눈에 보이는 성과를 위해 양적 성장에 치우쳐 왔기 때문이라는 분석이 나왔다. 또 우수 인력이 극소수 대학에 편중돼 대학간 공동연구가 없는 것도 큰 문제점으로 지적됐다.

19일 교육과학기술부가 공개한 정책연구보고서 ‘세계수준 과학자 배출과 창의형 과학기술 환경 조성’에 따르면 국내에서 과학기술에 대한 투자는 증가하고 있으나, 연구원 수, 논문의 질적 수준은 선진국 수준에 크게 못 미치는 것으로 드러났다.

국내 연구원 수는 경제활동인구 10 00명당 8.3명으로 미국(9.3명)과 일본(10.6명)에 못 미쳤다. 과학기술논문색인(SCI) 논문 수는 2007년 2만 5494건으로 세계 12위를 기록해 양적 성장은 어느 정도 달성했다고 평가받지만, 질적 수준의 잣대인 논문 1건 당 피인용 건수는 3.44건으로 세계 30위에 불과했다.

전문가들은 우리나라에서 과학 노벨상 수상자가 배출되지 않는 가장 큰 이유로 국내 과학의 창의성 부족을 꼽았다. 과학자들이 짧은 시간내에 눈에 보이는 성과를 얻겠다는 양적 성장에만 치우쳤다는 지적이다. 또 이미 존재하는 기술을 모방·개선하는 방식으로 선진국을 추격해 왔기 때문에 창의성과 원천기술 개발능력이 부족한 데다, 암기위주인 국내 교육이 창의성 발현의 가장 큰 걸림돌이 됐다고 분석했다.

 

대학간의 경쟁력 격차도 문제점으로 제시됐다. 우수 과학 인재들이 포항공대나 카이스트 같은 몇몇 대학에 편중돼 연구인력 쏠림현상이 일어나 대학간 교류나 협력이 제한된다는 것. 그 결과 공동연구보다는 개인 연구성과가 많았다. 하지만 2000년 이후 과학 노벨상은 공동수상 비율이 90.5%에 달한다.

젊은 우수인재들의 해외 유출도 주요 원인으로 지적됐다. 연구자에게 지원되는 연구비가 5년 정도의 단기간 논문 수에 따라 평가돼 지원금이 들쑥날쑥하다 보니 안정적인 연구비가 지원되는 해외 연구소로 진출하는 경향이 크다는 것이다.

과학 노벨상을 받은 연구 성과 대부분이 수상자가 20~30대 때 연구한 결과임을 감안하면 젊은 인재들의 해외유출은 수상에 치명적이라는 분석이다.

연구책임자인 포항공대 김승환 연구처장은 “응용 과학보다 기초 과학에 대한 투자를 높여야 하며, 창의적인 연구 환경을 조성해야 한다.”고 말했다.

*출처: 서울 신문 http://www.seoul.co.kr/news/newsView.php?id=20090520001011

* 1년에 한두편의 논문을 써도 파급력이 큰 논문을 쓰도록 해주어야 하는데, 단순히 SCIE나 학진 등재 논문 편수로만 논문을 평가를 하니 이런 문제가 나오는 듯 싶다. A. Einstein이 뭐 논문 많이 써서 우수한 학자였던가..
* 단순히 외국 기술 대체를 위해 제안되는 기술 따라잡기 과제보다는 독창적인 연구를 할 수 있게 해주면 좋겠다.
* 이런 면에서 보면, 우리나라 실정에서 논문 편수에 매달리지 않고, 매년 SIGMOD, VLDB 논문을 내시는 교수님 몇 분은 정말 존경스럽다.(더욱이 그러면서도 교수직을 유지할 수 있는 실적을 매년 충분히 뽑아낼 수 있는 능력이 있으신 것도..) 

'CS 전공 > 생각?' 카테고리의 다른 글

개발 프로젝트의 실패 요인의 분석.  (1) 2009.12.15
논문 심사  (0) 2009.10.05
DB쪽 논문 인용 수 TOP5?  (2) 2009.07.29
엔지니어는 왜 논문을 읽지 않는가?  (1) 2008.09.04
불태웠어 새하얗게...  (4) 2008.08.29
Posted by Bart