Sorry you have no rights to view this post!
gtx 1060 6gb+tensorflow gpu 버전 세팅 후기
Tensorflow, CUDA toolkit, cuDNN 버전.
이것 설치한다고 이틀을 날렸다. 메뉴얼을 제대로 안 읽은 내탓도 있지만, Nvidia가 별다를 설명없이 기존 버전을 숨겨버린 탓도 있다. 멀쩡한 OS도 한번 날리고.
Tensorflow 인스톨 사이트에 아래와 같이 써있다.
NVIDIA requirements to run TensorFlow with GPU support
If you are installing TensorFlow with GPU support using one of the mechanisms described in this guide, then the following NVIDIA software must be installed on your system:
- CUDA® Toolkit 8.0. For details, see NVIDIA’s documentation. Ensure that you append the relevant Cuda pathnames to the LD_LIBRARY_PATH environment variable as described in the NVIDIA documentation.
- The NVIDIA drivers associated with CUDA Toolkit 8.0.
- cuDNN v6. For details, see NVIDIA’s documentation. Ensure that you create the CUDA_HOME environment variable as described in the NVIDIA documentation.
CUDA toolkit : 필히 8.0!! Nvidia 다운로드 사이트에 가면 9.0이 딱 있다. 8.0을 찾을수가 없다. 8.0은 여기에..
cuDNN도 CUDA toolkit 8.0에 맞는 버전을 설치한다.
나는 그래픽 드라이버를 384.81 버전을 설치했다. Nvidia 사이트에 최신 드라이버가 있는데, 그 버전 사용하려다 OS를 다시 설치했다. 저장소를 추가하고, sudo apt-get install 이렇게 쉽게 드라이버를 인스톨하면 된다. CUDA toolkit이 드라이버를 업데이트 한다.
비교!
CPU 버전으로 5,000[초/횟수]에 걸쳐하는 작업이, GPU를 사용하면 500[초/횟수]로 0이 하나 줄었다!!
GPU 선정.
싼 GTX 1060 6gb를 사기로 했다. 3gb 메모리 제품이 더 싼데, 사용하는데 문제 된다고 한다. 초심자에겐 값싼 gtx 1060이 최고다.
게다가 PC 케이스가 작아, 1070 이후 제품을 넣으려면 케이스를 뜯어내야 한다. 1060 길이가 260mm인데, 자로 한번 케이스를 재어 보니 좀 여유있게 들어 갈 수 있어 보인다.

겨우 넣었다. 간섭으로 대각선 삽입!!.

메인보드
description: Motherboard
product: GA-MA785GT-UD3H
vendor: Gigabyte Technology Co., Ltd.
pciE 2.0 * 16 지원
메인보드를 한 8년 사용하는데, pciE 2.0과 3.0 차이가 없다고 보고, 그냥 사용하기로 했다.
GTX 1060 6gb와 호환 가능
후기.
8년전 PC 살 때, 리누스가 Nvidia에 뽀큐를 날렸다는 말을 듣고, AMD 그래픽 카드를 샀는데….AMD 병신 카드였다. 제품을 만들었으면 드라이버도 좀 신경을 써야 하는데, 영 신경을 안쓴다. 윈도우에서도 그닥이고..내 인생에 다시 AMD 제품을 구매할 일이 없다. Gtx 7이나 8시리즈만 되었어도 그냥 썼을텐데..쩝..
CUDA 9.0 + tensorflow 1.5 + ubuntu 16.04 + kernel 4.13
망할..tensorflow 1.5로 업그레이드 하고, cuda 9.0을 쓰려니 망했다. cuda 9.0을 설치하니 화면이 나갔다.
- cuda 9.0은 드라이버 387부터 지원.
- 커널 4.13에 cuda 9.0을 사용하려면 드라이버 390 이상 필요.
이 두 개가 문제였다. 4시간의 삽질 끝에, cuda를 network 버전으로 설치해야 한다고 알아냈다. 업그레이드 할 때마다 난리를 쳐야되니. 역시 최신 버전만 지원하는 nvidia..9.1만 보인다고 설치하면 9.0으로 다시 설치해야 한다.
Lego MindStorm EV3 제어기
조종기 다음으로 Lego 마인드스톰으로 모터 제어기를 만들었다.
기본개념이 아래 그림에 표시되어 있다.

조종기의 역할
- 서버.
- 휴대폰 기울기를 확인하여, 공을 기울기 방향으로 이동.
- 공이 화면 구석으로 이동하면, 기울기가 공 위치를 변경하지 않음
- 공 위치를 135도 회전 후, 수평 이동시켜
“Left;…, Right:…” 형식으로 소켓으로 전송
Lego Mindstorm의 역할
(전에 만들었던 부분을 재활용 하여, 지저분함.)
- 클라이언트.
- 링 버퍼를 만든 후, Left, Right 이동 위치를 버퍼에 저장.
- Thread가 Socket으로 안드로이드 폰에 connect, receive, close.
- 이 과정을 반복
- 수신 데이터(“Left:….,Right:….”)에서
“Left:”, “,Right:”의 위치를 찾음. - 숫자를 추출, trim 후 integer로 변경.
- 변경된 integer만큼, Left, Right 모터를 이동.
EV3를 lejos 베타 버전을 사용해서인지, socket의 utf-8로 데이터가 전송되지 않았다. ascii로 변경, 전송하여 시간 좀 걸렸다.
중요한 사실이
- 내가 생각한 만큼 잘 움직이지 않는다.
차량 바퀴를 4개로 만들다 보니, Left 모터를 -방향, Right 모터를 +방향으로 돌리면, 확 돌아야 되는데, 지 몸체에 걸려 안돈다!!!
또한 제품이 무거워서인지, 바퀴가 헛도는 경우가 많다. - 실행 순서에 따라, NullPointException이 너무 많다.
try, throw로 도배를 해야 할 듯한데, 시간이 또 한없이 갈 듯하다. - 안드로이드 폰의 좌표 설정 문제.
화면의 공이 디스플레이 중앙에 있는데, EV3이 후진한다.
보정을 해야 하는데, 귀찮다. - 안드로이드 폰 화면이 꺼지면, 동작이 멈춰야 하는데 그렇지 않다. 링 버퍼에서 다 사용하면, 0으로 이동이 맞아 보이는데..계속 움직인다.
더 중요한 사실이,
- 애가 별로 재미없어 한다!!
차가 빨랑 빨랑 움직여야 하는데, 지정 위치로 가다 보니, 너무 느리다. 파워로 수정하려니 귀찮고.
누가 소켓을 잘 정리하여 인터넷에 올렸다.
여기와 여기.
DataInputStream을 그냥 사용했는데, 별 목적이 없으면 사용하지 않는게 맞아 보인다.
DataInputStream으로 안드로이드 폰과 EV3이 통신이 되지 않는다.
누가 이미 작성한 코드를 쓰다 보니, socket을 어떻게 쓰는지 정리되지 않아는데, 위 사이트가 정리하는데 도움을 줬다.
원격 조종기 만들기
집에서 놀고 있는 안드로이드 폰으로, LEGO EV3을 조종하는 리모콘을 만들어 보려고 한다.
갤럭시 노트1 조종기 개념
화면에 포켓 몬스터 볼을 표시한다. 사용자가 휴대폰을 기울이면, 공이 그 방향으로 이동한다.
이 공의 좌표가 레고를 전진/후진, 좌회전/우회전 등으로 움직인다.
좌표 설정의 문제점
처음에는 아래와 같이 그리면, 멋지게 움직인다고 생각했다!!
그림의 x,y 좌표가 휴대폰 디스플레이의 시스템이다.

- 1번: 레고가 전진한다. 끝에 있을 수록 세게 간다.
- 5번: 후진
- 2번: 약한 우회전. 왼쪽 바퀴가 오른쪽 바퀴보다 더 돈다.
- 3번: 강한 우회전. 왼쪽이 2번보다 더 많이 돈다.
- 4번: ??그림의 (0,0) 기준으로 3번->4번으로 가면, 두 바퀴가 모두 거꾸로 돌아야 된다.후진으로 강한 우회전을 한다.
L/R 값이 (4,1) -> (-4,-1)로 변경되고, 변화되는 값이 크다. 그림이 어느 영역을 넘어가면 바퀴가 급격히 변하게 되면 좀 이상할 듯 하다.

위 표를 그려는데, L/R 바퀴가 방향이 항상 같다. 단순한 움직임만 구현될 듯 하다.
좌표 설정 제안
디스플레이 좌표(X,Y)를 135도 반시계 방향으로 돌려, L/R 축으로 표시했다. 아래 그림과 같이 표시 가능하다.

직진->적은 우회전->많은 우회전->적은 우회전->후진 이렇게 된다.
값으로 표시하면..(R,L).
- 직진: (+10,+10)
- 적은 우회전: L값이 0선을 닿으면 (0,MaxL)
- 많은 우회전: L값이 0선을 넘어가면 (-1,MaxL), R이 거꾸로 돌면서 더 회전
- 적은 우회전: L이 줄면서 R이 – 방향으로 증가(-5,MeanL)
원점을 수정하여 rotation 하려면, 여기를 참조한다.
여기를 참조하여 새로운 좌표계를 아래와 같이 설정했다.


디스플레이의 X, Y 좌표가 오른손 좌표가 아니기 때문에, 임의로 Y,X로 변경한 다음, L/R을 설정했다.
아래 동영상이 기울기에 따른 L,R 값이다.
이제, 레고에서 받는 부분을 만들기로 하고, 이건 접어야겠다.
슬럼개 직장인!
구글 플레이가 “이 영화가 많이 유명하다!!” 하길래, 저렴하게 샀다. 1,800원!! 감독이 영국인이라, 인도 영화로 쳐주는지 모르겠으나, 인도를 배경으로 내가 본 세번째 영화이다. 나머지 2개는 “라이프 오프 파이”, “세 얼간이” 이다.
원작 소설이 따로 있고, 주인공 자말이 퀴즈쇼에서, 자신의 인생을 힌트로 문제를 맞추는 내용이다. 어쩜 그럴수가..문제가 아무리봐도 병맛이야. 원작 소설이 “Q&A”라고 한다. 왜 콜센터가 생각나는지..
영화를 보고, 생각나는 부분을 찾아 보았다.
1. 1루피는 한화로 얼마인가?
1루피(INR)가 17원(KRW)정도 한다. 2017.8.25 기준. 제목의 “백만장자”뒤에 USD, INR가 붙어있는지 확실하지 않으나, 퀴즈쇼가 백만단위인 것으로 보아, 인도 화폐기준인 듯 하다. 1*10^6 IND = 17*10^6 KRW, 약 이천만원 좀 안되는 돈이다!! 인도 월 평균 소득이 약 616 USD 정도인데(한화로 약 7*10^5원), 년 소득 약 9*10^6원 정도이다.
영화가 퀴즈쇼 우승을 엄청난 부의 수단으로 설정 했는데, 중간에 멈춰 1*10^6IND(17*10^6원)정도를 받았으면, 그냥 평타의 2배 수준이다. 사람 찾을 이유도 있지만, 왜 끝까지 했는지 이해된다. 최종 상금을 계삲하면 약 170*10^6원 정도, 2억이 좀 안된다. 이 돈으로 신분 상승을 할 수 있는지…
2. 종교 분쟁
영화에 나오는 종교 분쟁이 아요디아 사태인 듯 하다. 위 링크에 따르면 정치+종교 콤비로 약 2,000명 정도의 대량 학살이 있었다. 영화에서 경찰이 방화, 살인을 방관하던데, 2,000명이 죽을 정도에 경찰이 구경만 하고 있지 않았을 듯 하다.
3. 인도 뭄바이 빈부 격차
여기에 소개된 책이 뭄바이 빈민의 삶을 (아마도)잘 설명한다. 여기가 뭄바이 6%의 면적에 60%의 인원이 살고 있다고 말한다. 살림(?, 자말 형)이 판자촌이었던 공간에 건설중인 고층 건물에 서 있는데, 부유층을 위한 건설 붐을 표현했다. 과거 우리가 판자촌 부시고 뉴타운을 지었듯이.. 다라비(Dharavi) 투어도 인터넷에 팔고 있다. 왜 이런데 돈주고 가는지…생존 여행인가?
4. 인도 콜센터 아웃소싱
자말 직업이 콜센터 차 서비스원이다. 실재 이런 직업이 있는지 모르겠다. 인간이 남아나는 동네라 다른지도..왜 그들이 영어를 하고, 영국 문화에 대한 학습을 할까? 영국 통신사 BT가 과거 인도에 콜센터를 아웃 소싱으로 운영하고 있었다. 조만간, 이미 했을지도, 인도 콜 센터를 다시 영국으로 옮겨 온다고 한다. 영국과 인도의 시차가 약 4.5시간이다.
5. 통신사 이름 검색이 4억 중 9명을 필터링 할 수 있다!!
이름인지 성인지 모르겟으나, 어떻게 한 단어로 9명만 거를 수 있는지. 휴대전화 사용율이 30%만 되어도, 약 4억명. 한 단어로 구글 검색하면, 몇 천 페이지는 나올 텐데. 여기 관련하여 인도인들이 서로 이름을 잘 안물어 본다고 한다. 쩝..
6. 슬럼독, 언더독, 탑독..
개판..slumdog이 있던 단어가 아니라 최근에 만들어 졌다. 그것도 영화가!. slum + underdog 이라나..
underdog이 스포츠에서 사용되는 루저 정도이고, 반대말이 topdog, front-runner..등이 있다.
윗개가 입에 쏙 달라 붙는고만..
몇 가지 궁금증으로 찾아 썼는데, 인도는 알수록 신기한 나라다.
