코스피가 치솟아서 곧 떨어질 것을 기대하고 풋옵션을 사기 위해 선물옵션 계좌를 텄다. 3시간 교육을 받고 모의투자를 해야 거래를 시작할 수 있다길래 몇천 원 결제하고 교육을 받았다. 암호화폐 거래소나 강원랜드가 더 건전해 보였다. 매달 100만 원 이내의 금액을 보험금처럼 날리다가 한 번 무너질 때 회수하는 전략을 쓰고 싶었는데 생각보다 머리를 많이 써야 해서 공부를 좀 하다가 API를 열어봤다. Rust에서 ActiveX 로드하는 삽질하다 지쳐서 홀드.
조금은 개발자 친화적인 금융을 건드려보기로 하고 이더리움을 시작했다. 수익성은 없다지만 시스템을 이해하는 진입점으로는 괜찮을 것 같아서 채굴기를 까보기 시작했다. geth를 준비하고 채굴을 시작하려니 500G가 넘는 전체 블록 싱크를 안 하면 안 된대서 마이닝 풀로 선회했다. Etherscan에서 새 블록 나오는 거 하나씩 보면서 어느 마이닝 풀이 핫한지 구경 좀 하다가 적당한 걸 하나 찾아서 ethminer로 시작하려는데.. 맥에서 빌드가 잘 안 된다. Boost 버전 문제 같아서 Hunter 빼고 Brew로 설치한 Boost로 돌게 바꾸느라 코드 서너 줄 고쳤다. 이제 좀 해보려는데.. OpenCL과 CUDA만 되고 CPU 지원은 안 한다길래 OpenCL을 하려는데.. 애플이 Metal로 바꿔서 OpenCL을 못 쓰네? Metal로 행렬곱셈하는 샘플 프로젝트 돌려보다가 C++에서 Metal shader가 담긴 Objective-C framework을 접근하는 오버헤드 생각에 접었다.
CPU 마이닝을 어떻게든 해보기로 한다. CUDA 마이닝은 ethminer에 코드가 다 있는데 CPU 마이닝은 ethash에 코드가 다 있어서 걔를 집중적으로 팠다. CPU 버전도 GPU 버전처럼 프로그램 시작할 때 4기가가 넘는 DAG을 메모리에 다 올리도록 고치고 매번 계산해서 올리는 것도 꼴보기 싫어서 epoch-382.dag 파일에 메모리 덤프해놨다가 쓰게 하니 2초 내에 로드할 수 있었다. 이것저것 튜닝을 했지만 해시레이트가 670k를 넘지 못했다. 해시 한 번에 11,000ns를 쓰는데 keccak512가 350ns keccak256이 230ns 드는 거야 그렇다 치고 그 간단한 FNV 해시 2000여 번 도는데 루프당 5ns 쓰는 게 이해가 안 됐다.
이더리움 설계자가 ASIC 마이너 만들기 어렵게 했다는 부분이 여기에 있었다. 해시 한 번 할 때마다 2천여 번 접근이 필요한 4기가짜리 DAG이 CPU L123 캐시에 올릴 수 없도록 크게 만든 거다. 덕분에 캐시되지 않은 힙 메모리에 한 번 접근하는데 4-5ns가 걸린다는 걸 알게 됐다. 힙 접근을 막고 가짜 정보가 있는 스택에 접근하도록 코드를 고쳐보니 11,000ns가 730ns가 됐다. 올바른 해시를 계산하지 못하지만 해시레이트가 10M이 넘었다. keccak이니 FNV니 중요하지 않았다. 4기가 메모리에 졸라 빨리 접근할 수 있도록 GPU에 모조리 올리는 게 중요한 거였다. 마침 내 5년 전 아이맥의 그래픽카드 메모리는 2기가여서 Metal로 새로 쓸 의욕은 나지 않았다.
Tesla V100 4개 꽂힌 AWS p3 장비에서 CUDA로 돌려보니 CPU 1%도 안 쓰면서 안정적으로 370M 나왔다. V100 4개 박힌 장비 한 달 렌트비는 천만 원이다. PoW는 망해야 한다. 얼마 전에 런칭한 이더리움 2.0이 얼른 완성되기를 원한다.
이렇게 실험을 하다 보니 CUDA 코드에 친숙해졌고, GPU에 대한 로망이 생겼다. 내가 게임 개발을 할 가능성은 없는데 이 GPU 지식을 어떻게 활용할까 생각하다 보니 자연스럽게 딥러닝이 떠올랐다. 문득 회사 일에 딥러닝을 적용할 일이 떠올라서 70만 원짜리 딥러닝 유료 강좌를 질렀다. 내가 저 Tesla V100 꼭 혹사시키고 말겠다.
Continue Reading
Discover more thoughts and insights
산만함을 상쇄하기 위해 소리내서 책 읽기
우리가 유치원생도 아니고 초등학생도 아니고.. (블로그 독자 중에 14세 미만 어린이가 없다는 가정하에) 왜 소리내서 책을 읽어야 할까. 문자를 읽는 과정에 있어, 주의(attention)가 다른 곳으로 튀지
웃긴 아이디 모음집
재탕도 많은것 같지만, 오랜만에 봤지만서도 웃겨 죽을뻔했어요 ㅎㅎㅎ 하하하하
홈피 주소 체계 변경하다
최근에 다음 웹인사이드를 사용하고 있는데 도저히 통계를 알아보기가 어렵게 나온다. 그것은 다음의 잘못이 아니라 내 사이트 페이지들 주소의 구조 때문. 죄다 -\_- blog.jsp 인데 뭐 구분이 되겠는가? 딱