코스피가 치솟아서 곧 떨어질 것을 기대하고 풋옵션을 사기 위해 선물옵션 계좌를 텄다. 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
위험한 생각들
위험한 생각들 며칠전 습관적으로 서점에 들러 소설과 비소설을 헤매이다 오랜만에 인문학 쪽 코너를 들렀다. 언젠가부터 친구들한테 '참 위험한 발상이야' 라는 말을 듣는 편이다. 오래전부터 그랬기 때문에 별
SMS MO로 야후! 거기 서비스를 이용하기
MSN과 네이트온 메신저의 문자도착 알림 서비스를 활용하여 SMS MO서비스를 만들었다. MSN 프로토콜에서는 IPG, 네이트온에서는 GWBP 헤더를 잡아내면 연동해둔 H.P.로 도착한 SMS를 프로그램에서 처리할
삼겹살
바쁜 와중에도 와이프가 가끔 이렇게 삼겹살을 해줍니다. 저기, 짙은 갈색의 소스는 도대체 뭘까요. 와이프 진술에 따르면 데리야끼 소스랑 냉장소에 있는 이것저것 넣었다는데 기억이 잘 안난답니다. 저희집에 춘장이