본문 바로가기
연구관련/연구생활

그러니까, 4.5GB

by adnoctum 2011. 9. 16.


   얼마 전에 썼던 글에서 말한 데이터를 처리하기 위해 요 며칠 또 코딩 중인데, 역시나, 데이터가 엄청나게 커졌다. 전부 55570 개의 데이터 중 대략 3000 개가 중요하게 나왔는데, 내가 하고 싶은 것은 중요하게 나온 것 중에는 중요하지 않게 나온 것이랑 sync 가 되는 게 있을 것 같아서 그것을 확인하고 싶었다. 그래서, 대략 5만 곱하기 3천, 해서 1억5천만 개 중 특정 조건을 만족하는 것만을 골라 내서, 그것들에 대해서만 PCC 를 계산하기로 하고, 그렇게 특정 조건을 만족시키는 것을 뽑아 보려고 했다. 그런데, 1%도 채 못가서 결과 파일이 2GB 를 넘어 가서 중간에 중단. 안되겠다 싶어서, 그냥 3천개 중에서 pair 로 했을 때 나오는 것들에 대해서만 sync 가 일어나는 것을 찾기로 결정. 전체 조합 수가 3천 곱하기 3천 나누기 2 해서 4백5십만 개가 나오는데, 이중에 조건을 만족하는 것이 대략 4백만 개 나온다. 이것을 가지고 PCC를 계산, 결과 파일이 4.5GB... correlation 각각 구하고, 그 correlation 이 차이가 나는 것에 대한 p-value 를 구한 후, 그 p-value 에 대한 q-value 까지 다 구해 놓은 것. 얼마 전 작성한 pcc의 차이에 대한 p-value 는 사실 이것 때문이 아니라 다른 일 때문에 글 작성하고 코딩한 것인데 역시나 이번에도 내 일에 또 쓰였다, ㅎ. 이런 경우도 많았다. 다른 사람 일 때문에 해 놓은 것이 내가 하는 일에 필요로 하게 되어 그냥 살짝 수정한 경우.

   어쨌든, 4.5GB 여도 메모리에만 한꺼번에 올리지 않으면 상관이 없는데, 생각해 보니 여태까지 내가 작성한 대부분의 코드들이 파일을 한꺼번에 메모리에 올려 놓고 작업을 하게끔 되어 있다. 심지어 파일이 너무 커서 자르는 코드까지... 딱 하나, matrix transpose 시키는 코드는 예전에 1만5천 x 1만5천 짜리 matrix 를 transpose 시켜야 했기 때문에 대용량도 가능하게끔 해 놓은 코드가 있을 뿐. 그래서 파일 자르는 것까지 아예 새로 코딩을 해버렸다. 1000개로... 같은 아이디를 갖는 것은 반드시 한 파일 안에 있어야 하기 때문에 (하지만 한 파일에 다른 아이디를 갖는 내용이 있어도 상관은 없다) 기계적으로 코딩 시작했다가 한 5분 짱구를 굴려야 했다. map 에 4백만 개가 올라갈까 약간 의구심이 들었는데, 다행이 올라는 가는구나, 메모리를 약 400mb 먹으면서. 사실 지금 처리하는 것도 내가 하고 싶은 것은 못하는 것이어도 예전에 비슷한 처리를 한 것보다 상당히 큰 양이다. 그런데 예전에는 처리할 때 3일이 걸렸었단 말이야. 그 경험 때문에 어떻게든 빠르게 하려고 correlation theorem 찾아 보고 했던 것인데, 결론적으로는 그냥 생짜로 pcc 를 구하게 되었다. 그런데 예전에는 매번 합이나 제곱의 합 을 계산하게 그냥 두었는데, 이번에는 오래 걸릴지도 모른다는 생각 때문에 이것을 미리 계산해 놓게 하고, pcc 를 구할 때는 내적만 계산하도록 했더니, 헐, 뭐, 한시간도 안 걸린 것 같다. 뭐, 그냥 당연하게 생각하고 다음 일을 하다가 생각해 보니 이것이 예전엔 3일이나 걸리던 것이었어!


   고생한 만큼 결과가 깔끔하게 나와 줘야 할텐데. 내일이 되면 알겠지.

'연구관련 > 연구생활' 카테고리의 다른 글

이제 내일  (0) 2011.10.04
1시필침은 작심삼일인가?  (0) 2011.09.27
에러 error  (0) 2011.09.14
에잇, 그냥 할 껄,  (0) 2011.09.14
역시나 1픽셀인가  (4) 2011.08.09