https://www.ddengle.com/esn/10386172 - [ProgPoW] 개발 보고 및 AMD 그래픽카드 지원받습니다 (종료)
https://www.ddengle.com/10330244 - 이더리움 1.x와 ProgPoW 개발 진척도
https://www.ddengle.com/10255612 - ProgPoW 스터디 및 버그 보고 외
지난번에 ProgPoW AMD(OpenCL) 지원을 위해 그래픽 카드를 기부를 받은바 있습니다.
카드 하나는 몇일 뒤 금방 도착했고, 나머지 카드 하나는 기부하시는 분의 개인 사정때문에 지체되었고 아직 도착하지 않았습니만,
여러가지 일이 겹쳐지는 관계로 AMD카드 셋업을 개인 PC에 장착하여 오늘에야 비로소 제대로 테스트해볼 수 있었습니다.
위의 글을 보시면 아시겠지만, 스터디 할겸, 이더리움 ProgPoW 테스트넷에 기여도 하고, Ethersocial Network도 ProgPoW 준비를 해두어서 아직 결정되지 않은 ESN의 ProgPoW 전환을 대비하는 등등 좋은 기회였던 것 같습니다.
생각보다 AMD(OpenCL) 지원도 어렵지 않게 추가할 수 있었습니다.
- 50블록 주기로 peroid_seed가 변경되게 되는데, 이때 OpenCL커널도 다시 생성시켜야 합니다. 기존 코드는 이것이 제대로 이루어지지 않고 있는 작은 문제가 있었습니다. => 해결
- 커널 컴파일하는 루틴을 따로 빼내서, 3만블록 주기로 dag성성하고, 50블록단위로 커널을 셋업하게끔 고쳤습니다.
- OpenCL은 Nvidia카드를 쓰는 경우도 지원이 되더군요. 일부 작업은 NVidia카드만 달린 채로 코드를 수정.
- 코드가 제대로 작동하는지 검증 디버깅 하는 과정에서 비로소 AMD카드 장착하여 테스트 하였습니다.
이로써, ProgPoW를 지원하면서, ethminer 최신 소스를 기반으로 하며(기존 ProgPoW 소스코드는 0.15 버전 낡은 코드 기반)
GPU로 얻은 솔루션을 CPU 루틴으로 검증하는 루틴까지 모두 들어간,
OpenCL 및 CUDA를 모두 지원하는 마이너가 비로서 나오게 된것입니다~
(ProgPoW CPU 검증 루틴은 최신 ethminer에서 이미 지원.
낡은 구버전 기반의 레퍼런스 ProgPoW 마이너는 CPU 루틴이 내장이 안되어있는채로 공개됨)
이 작업은 ESN의 지원을 받았고, 땡글 회원분의 관심으로 AMD카드도 지원받아서 개발을 했으니 ProgPoW가 이더리움에 좀 더 빨리 적용되게 된다면 땡글과 ESN의 공이 일정정도 있는 셈이 되는 것이지요 ^^
참고로 RX 570-4G에서 ProgPoW 해시속도가 약 8.6~9MH/s 나오는군요. (P106-100 6G(samsung), 파워제한 85%, 해시 ~8.55MH/s)
테스트를 위한 풀도 준비되었더군요. 마이너로 직접 테스트해보실 수 있게 되었습니다~
- Pool: https://testnet.progpool.pro/
(윈도우64비트의 경우 OpenCL만 지원하는 버전입니다.)
- AMD(OpenCL, windows binary only) https://github.com/hackmod/ethminer/releases/tag/v0.9.2-opencl-win-1218
CUDA의 경우 아래 실행파일로 테스트 가능합니다. (리눅스/윈도우64비트)
- CUDA(Nvidia) https://github.com/hackmod/ethminer/releases/tag/v0.9.2-opencl-win
아마도 어떤 분은 "ESN에서 아직 ProgPoW로 전환하는 것도 결정되지 않았는데 뭐 하는 것일까??" 라고 의아해 할 수 있을 것입니다.
현재 progpow 관련 개발 이슈는 go-ethereum 이더리움 노드 코어 소스코드 개발자들이 많은 디스코드 대화방에서도 이루어지고 있는데요.
어제 있었던 토론이 바로 OpenCL 지원에 관련된 이슈였습니다. https://discord.gg/y9Gsw4G (go-ethereum 디스코드 참고. 가입시간 지나면 초대 코드가 자동으로 해지됩니다. 혹 궁금하신 분은 찾아오세요~)
최근에 ethminer에 많은 기여를 하고 계시는 개발자 분도 현재 ProgPoW 관련 작업을 하고 계시는데,
저는 레퍼런스 코드를 바탕으로 기존의 문제를 수정하고, 레퍼런스 코드를 관리하는 입장에게 개발을 하여,
비교 테스트하기에 수월하게 하고 안정적인 마이너를 재빠르게 내놓는다는 관점에서 개발을 하였고,
그분은 ethminer에 ProgPoW + ethash 동시 지원코드를 수정하고 계시는데, 작업이 한창 진행되었지만 바쁘신지 좀 더딥니다. (현재 이 코드 는 CUDA만 지원됨)
ProgPoW라는 같은 목표로 느슨한 연대와 경쟁아닌 개발 경쟁을 하며, 각자 개발을 하고 있지만,
조만간 ethminer 소스코드가 ProgPoW + ethash 동시 지원을 하게 되면 제가 추가했던 cuda-8지원, CUDA코드 일부 최적화 등등 아직 공개하지 않은 작업도 제가 직접 넣을 생각입니다~
또한 이런식으로 이더리움 개발자에게 Ethersocial Network도 간접 홍보하고 있기도 합니다~
"한국의 땡글 마이닝 커뮤니티에서 기부받은 AMD카드로 OpenCL 개발을 하려 한다"고 얘기하기도 하였고요,
제 작업물을 다운로드 받아서 테스트하려 링크를 타고 들어가보면 "이 작업은 Ethersocial Network의 지원을 받았습니다"라고 써놓았고,
디스코드의 제 아바타가 ESN 변형 로고이기도 하죠.
스크린샷 하나 투척합니다~