어떻게 하지;;

(요약버전)
실험에 필요한 프로그램이 64-bit OS에 8기가 물리메모리를 필요로 한다. 연구실에는 그런 시스템이 없고 나는 돈이 없다. 어떻게 하지;;

---

(풀버전)
bddbddb라고, 중복되는 자료가 많은 경우 DATALOG를 아주 효율적으로 실행해주는 solver가 있다. (대략 10억개의 fact를 onmemory에 표현하고 처리할 수 있다) 특정 형태의 프로그램 분석 알고리즘은 DATALOG로 쉽게 옮겨지기에 프로토타입 플랫폼으로  주목을 받고있다. (주목을 받는다고 해봐야 한국에는 아는 사람이 스무명 안팍이겠지만).

대략적인 실행 아이디어는 이렇다. fact를 bit string으로 표현하고, bit string의 set을 tree로 압축한다. 그리고 압축을 풀지 않고 set union, disjoint, negation 연산을 수행한다. 중복되는 자료가 많았다면 tree의 크기가 작을 것이기 때문에, tree에 대한 비싼 연산을 사용해도 원래 set에 대한 연산보다는 금방 끝날 것이다. 듣기에는 너무나 간단하고 멍청해 보인다. 그런데 사용해보면 눈이 휘둥그래질 만큼 압출이 잘되서, 하드 스왑이 일어날 문제가 on-cash에서 끝나기도 한다.

압축 효율은 순전이 입력을 encoding하는 방식에 달려있다. 좋은 경우와 나쁜 경우 수행 속도가 100000배쯤 다른데, 안타깝게도 "최적 encoding"을 찾는 문제는 NP-HARD 그룹에 속한다. (bdd ordering problem 이라고 알려져있다) 때문에 유전알고리즘, machine learning등을 동원해서 "비교적 효율적인 encoding"을 찾아 쓰는 수준에 만족해야만 한다. 다행스럽게도 bddbddb에는 쓸만한 machine learning 구현체도 붙어있다.

Learner가 2기가 물리메모리가 메모리가 부족하다고 뻗는 것만 빼면 쓸만하다. 2기가 이상의 물리메모리를 JVM에 할당하려면 64bit 커널에 4기가 이상의 물리메모리가 설치되 있어야 한다. 그리고 연구실에 그런 시스템은 없다. 어떻게 하지.

Posted by 발당


Trackback URL : http://jbdmk1.upnl.org/tt/trackback/425

Comments List

  1. 飛烏 2009/04/06 09:18 # M/D Reply Permalink

    다른 연구실가서 머신을 빌려본다거나;;

    1. 발당 2009/04/06 13:46 # M/D Permalink

      ne...에서 어떻게 하나 안될까요?

  2. 양치 2009/04/06 09:46 # M/D Reply Permalink

    VMWARE로 해결이 안되는 문제인가염

    1. 발당 2009/04/06 13:47 # M/D Permalink

      VMWARE는 32bit 호스트 위에 32bit 게스트 밖에 못올려ㅠㅠ

  3. 피앙 2009/04/06 11:23 # M/D Reply Permalink

    꼭 64bit여야 하나 ... 뭔가 윈도우의 램디스크 기능을 이용하는 방법으로는 안 되나

    1. 발당 2009/04/06 13:48 # M/D Permalink

      실험용 프로그램이 JVM위에서 돌아서 그려...
      JVM에 2G보다 큰 힙을 잡아주려면 64bit OS여야 하는 모양임.
      좀더 찾아봐야지.

Leave a comment
« Previous : 1 : ... 23 : 24 : 25 : 26 : 27 : 28 : 29 : 30 : 31 : ... 339 : Next »