멀티코어 CPU에서 병렬 처리를 위한 몇몇 가지..

Exploiting Parallelism with Multi-core Technologies  위 강좌에서 잘 나온다. 3가지 멀티코어 병렬 처리를 위한 방법들.. 1. 새로운 언어를 사용한다. ex) Cilk, NESL, Haskel, Erlang, Fortress,…..2. 랭귀지 익스텐션을 사용한다. ex) OpenMP – 이해하기 쉽지만, 또 다른 컴파일러가 필요하다.3. 라이브러리 : POOMA, Hood ,…. – 사용하기 편하다. – 특정 도메인에만 적용 가능하다. 그래서 결론은 Intel Threading Building Blocks 이라는 말인인데, […]

계속 읽기

Query -Url 연결 알고리즘

어떤곳에서는 저런걸 바로가기라고 표현하기도 한다. Query로그와 Url로그를 보고 그 쌍을 학습셋으로 집어 넣어서 Query Url에 대한 신경망(neural network)을 만드는 작업이였는데, 예전에 만들어본 Neural Network 프로그램과 약간 다르게 접근해서 매우 흥미로웠다. Backpropagation algorithm을 사용한건 동일 했지만 Hidden Layer의 갯수를 입력된 Query로그를 사용해서 의미단위로 쪼개서 그 쌍을 가지고 Hidden Layer를 만들었다. 그러니까… “주니어 네이버”라는 쿼리가 들어오면 {“네이버” […]

계속 읽기

CouchDB

CouchDB 란다. 아직 인큐베이터에 있는데…. 이것도 유심히 볼 만 할거 같다. Erlang OTP 만 섭렵하면 이걸 점령해 보는것도 어렵지는 않을거 같은데…

계속 읽기

Erlang kpmap 함수

pmap을 개선해서 kpmap함수를 만들어 봤다. (함수명은 내가 직접 지어본거다. ^^;) kpmap 함수는 …기존의 pmap함수가 입력되는 리스트 원소 갯수만큼 process를 만들어 버리는 단점을 가지고 있기 때문에 마지막 인수로 k라는 인수를 두어 k개의 process만을 만들어 처리를 하게끔 하는 함수이다. pmap 함수에서 내가 사용했던 작업이 1000여개의 파일을 열어 텍스트 처리를 하는 함수였는데, 1000여개의 함수를 여는 1000여개의 process를 만들기가 […]

계속 읽기

쿼드코어에서 병렬 프로세싱 실험

사실 요즘 회사서 리서치 용으로 몇가지 간단한 파일 처리 프로그램을 만들었는데, 이 리서치 기간에 Erlang으로 그 프로그램을 만들었다. 뭐 완전한 프로그램으로는 Erlang으로 처음 만드는 것이라서 시행착오도 많이 했지만 그럭저럭 잘 마무리를 지은거 같다. 다 코딩하고 프로파일링 후 이 Erlang 코드의 어느 특정 부분에서 처리 시간이 굉장히 오래 먹는다는걸 알았다. 바로 텍스트 정규식을 처리해 그것의 중복검사까지 […]

계속 읽기

Erlang으로 만든 웹서버 스트레스 테스트

근 1주일동안 Erlang에 푹 빠져 있는데, 여기에 대한 흥미로운 자료들을 올려본다. 아래는 Erlang으로 구현한 webserver인 Yaws와 apache webserver간의 스트레스 테스트다. 아주 유명한 테스트라고 하던데 이제야 봤다.apache 웹서버처럼  어떤 상황에서든지 버텨야 하는 강건한 어플리케이션을 만들 기회가 있을지 없을지 모르겠지만, 아래의 결과를 빌어 Erlang의 파워를 보자면 매력이 장난 아님을 느낄 수 있을 것이다. 스트레스 테스트 요약을 하자면, […]

계속 읽기

Erlang으로 구현해본 멀티 코어 CPU용 MapReduce

사실 대부분 코드의 본체는 Programming Erlang 의 예제코드에서 얻었고 간단하게 멀티 코어용 MapReduce 모듈을 구현한것을 보고 감동을 받아서 조금 고쳐 봤다. 책에서는 Reducer 하나만을 생성해서 결과를 combine 했는데 이 모듈에서는 Reducer 갯수를 조절할 수 있게 해놓았고, Hadoop과 유사하게 Key, Values 쌍으로 소팅해서 결과를 가져오게 했다.Hadoop처럼 대용량 파일을 모두 메모리에 올릴 수 없어 파일로 쓸수 밖에 […]

계속 읽기

Erlang과 Hadoop

Erlang을 보고 있자면 계속 Hadoop이 생각난다. 만일 Hadoop을 Java가 아닌 Erlang으로 구현했으면 상당히 깔끔하게 구현이 되었을 거란 느낌이 든다. Hadoop에서 Job 스케줄링을 하는것과 Job 생성, 파괴 등등 아마도 Java에서 이런 기능들을 직접 구현했을 테지만, Erlang에서는 이런 멀티 프로세스 관리를 언어레벨에서 지원을 해주기 때문이다. 그것도 Hadoop의 특징인 fault tolerance를 충분히 지원하도록 말이다. 게다가 Hadoop 외부 API지원 […]

계속 읽기

Hadoop 성능 측정

 Hadoop이 느리다는 글을 우리 와이프님이 보시고 기정 사실로 받아 들이려고 하는걸 아래 테스트로 무마하고자 한다. 그럼 근거를 제시해 보도록 하겠다. 전에 netflix 데이터를 돌려본다는 포스팅을 쓴적이 있다. 그곳에서 제공해준 10억건이 넘는 데이터가 아래와 같은 포멧으로 있다. movieid(key), <rating, date, userid>,<rating, date, userid>, <rating, date, userid>, …….. 이것을 아래와 같은 유저 아이디를 키로 하는 데이터를 만드는 […]

계속 읽기

netflix prize에 도전하고 있습니다.

netflix prize라는 해당 사용자가 보지 않은 영화의 점수를 예측하는 시스템을 만드는 대회이다. 상금이 무려 100만달러에 육박한다…@.@ 이것을 접하게된 계기는 hadoop mapreduce를 이용한 canopy clustering에 대한 자료를 찾다가 이 숙제 데이터셋을 보고 알게 되었다. netflix prize사이트에 가면 많은 설명이 되어 있고, 이 블로그에 가면 쉽게 정리된 자료를 볼 수 있다. 아무래도 서비스를 위한 빠른 알고리즘을 원하기 […]

계속 읽기