매우 많은 컴퓨터를 사용해서 계산을 하고 있다. 물리적인 CPU의 개수가 아닌, hyper-threading으로 늘린 thread의 개수를 core라 하겠다. 즉, 요즘 보통 core 개수가 100개 이상을 갖고 작업을 하곤 했다. 우선 다른 연구실의 cluster 에 계정을 얻어서 돌렸다.
각 job이 어느 정도까지 실행되었는지 보기 위해 위와 같이 간단한 script를 만들어 확인해 보았다. 보통 200~300시간 정도가 걸려야 job 하나가 끝나는데, 이런 job이 200개 남짓. 이것을 한 번에 20개의 노드에 날렸고, 각 노드에서 core 4개를 점유해서 사용했다. 주말이나 연휴에 확인했을 때 다른 사람들이 node를 사용하고 있지 않으면 이 때는 대부분의 node를 이용했었다. 그러다 보니... 그 쪽 연구실 사람들이 작업할 node가 없다는 민원이 발생하는 사태. 그래서 지금은 10개만 내가 사용하고 있다. 이것만도 절반이기 때문에 좀 미안한 마음이다. 30분마다 내가 날린 job이 실행되고 있는 개수를 확인해서 10개(그 전엔 20개)로 유지되도록 하는 스크립트를 작성해서 실행시키고 있기 때문에 30분의 지연 정도로 계속 job의 수가 일정하게 유지되고 있다.
그런데. 문제는, 저 정도의 자원으로도 작업이 너무 오래 걸린다는 점. 그래서 결국 우리 연구실의 다른 컴퓨터들을 사용하기로 결심. 내 컴퓨터에서 각 컴퓨터로 계산할 값을 전송하면, 각 컴퓨터가 계산을 하고, 계산이 끝나면 결과 파일을 내 컴퓨터로 전송하는 프로그램을 작성했다. 즉, 서버-클라이언트 개념의 프로그램. 내 컴퓨터에서 서버 프로그램이 돌면서 작업을 각 컴퓨터로 날려 주고, 결과 파일을 각 컴퓨터에서 받아 온다. 이런 식으로 해서 연구실에서 10~20대 정도의 컴퓨터를 사용하고 있다. core 수는 대략 40~80개 사이를 왔다갔다 한다. 다른 아이들이 컴퓨터를 사용할 때는 내 프로그램이 사용할 core 수를 좀 낮게 설정할 수 있도록 하는 GUI를 작성해서 같이 베포했다. 파이썬이 매우 쉬워서 다행이다. 네트웍 개념이 없어서 처음으로 넷트웍 프로그래밍을 한 것인데 하루 만에 끝낼 수 있었다. 지금 돌아 가고 있는 것은 다소 저수준에서 작성된 것이고, 이 일을 계속 하게 되면 좀 더 잘 작성하기 위해 python 으로 할 수 있는, RPC 류의 라이브러리들을 검색해 놓았다, 좋은 거 많더만. 조그만 보탬이라도 되게 하기 위해 연구실에서 잘 안 쓰던 오래된 컴퓨터들도 다 끄집어 내서 사용하고 있다. 일단 돌아 가기만 하면 전부 셋팅해서 사용 중이다, ㅋ. 다행이 프로그램이 윈도우즈/맥/리눅스에서 다 되는 것이기 때문에 운영 체제에 상관 없이 사용 중이다. core 2개 짜리 컴퓨터도 여럿 있다, ㅋ. 아무리 성능이 낮다 해도 지금 이 일을 대략 몇 달을 돌릴 생각을 하고 있으니, 이 중 며칠 정도는 성능 낮은 컴퓨터가 벌어 주는 것이니까 그런 녀석들도 사용 중이다. 마치... 감상적인 영화의 전쟁 장면에서 아무 힘없는 민초들도 자신들이 할 수 있는 사소한 것이라도 손을 보태는, 그런 장면같은 느낌, ㅋ.
'연구관련 > 연구생활' 카테고리의 다른 글
일중독일 것이라 생각하여 (0) | 2014.10.10 |
---|---|
연구 자원(DB 등) (2) | 2014.09.27 |
지속되는 두통 (0) | 2014.04.09 |
새로운 것을 생성하는 것에 관하여 (0) | 2014.04.08 |
힘든 하루였다 (0) | 2014.03.30 |