프로그래밍 14

파이썬 넘파이를 이용한 두 배열 동시에 섞기 (Use python numpy to shuffle 2 arrays at same time)

파이썬을 numpy 라이브러리를 이용하여 배열을 섞는 방법에 대해 알아보겠다.(뭐, 다른 사람이 해놓은 것을 번역한 거라 보면 된다.) 이 방법을 사용한 이유는 머신러닝에서 데이터를 학습시킬 때 편향되지 않은 학습을 시키기 위함이다. 단순히 한 개의 배열을 섞을 때는 아래와 같은 방법을 사용한다.import numpy as np x = np.arange(10) print ("x: ", x) np.random.shuffle(x) print ("x: ", x) 출력의 경우 매번 다르겠지만 이런 형태로 나온다.x: [0 1 2 3 4 5 6 7 8 9]x: [7 5 8 6 3 1 4 9 0 2] 두 개의 배열을 같은 순서로 섞고 싶다면 어떻게 해야할까? 아래 코드와 같이 그냥 섞으면 결과는 참담하다.impor..

네이피어 계산봉

Napier's bones(https://en.wikipedia.org/wiki/Napier%27s_bones) 컴퓨터의 발전과정에 대해 알아보는 중 17세기 네이피어가 고안한 Napier's bones 에 대해 조사하였다.1980년 컴퓨터가 일반화되기 전 중국에서 개발된 수판, 그리고 네이피어가 고안한 Napier's bones 가 사용되었다. (파스칼, 라이프니쯔의 계산기 등도 많이 사용되었다.)이의 사용법은 아래 와 같다. Napier's bones 405 (1->4) 405 를 곱할 때 아래의 방법으로 한다. 405 를 1번 곱하면 당연히 405이다.그렇다면 2를 곱하면 어떻게 될까? 각 자리수에 다음과 같이 더하면 된다. 처음에 0을 넣고 두 번째에 8+0을 넣고 그 다음에 0+1을 넣고 마지막..

가상머신에서 우분투 설치 (Install Ubuntu in Virtual Machine)

이번 글에서는 가상머신(Virtual Machine)에서의 우분투(Ubuntu)설치 방법을 알아보겠다. (우분투는 리눅스 운영체제 중 하나이다.) 우분투 설치면 우분투 설치지 왜 가상머신을 이용하는지 궁금해 하는 분들이 있을 것 같아 가상머신에 대해 먼저 설명하겠다. 가상머신은 컴퓨터에서 '가상으로' 한 개 혹은 그 이상의 운영체제를 더 실행시키는 것이다. 현재 나는 '윈도우 10 Pro' 버전을 사용하고 있는데 필요에 의해 우분투를 컴퓨터에 같이 사용하고 싶다면 어떤 방법을 써야할까 생각해보자. 간단하게 생각할 수 있는 방법으로 '윈도우를 지우고 우분투를 설치하면 될 것이다.' 하지만 이럴 경우 '윈도우를 지운다'는 부담이 있기 때문에 가상머신을 사용하여 우분투를 설치하고 사용할 것이다. 이 글에서 사..

GPU Programming (왜 GPU를 사용하는가)

이번 글에서는 '왜' GPU 를 이용하여 프로그래밍을 하는 것이 좋은가에 대해 알아보겠다. (GPU : Graphic Processing Unit)공을 줍는 예를 들어 GPU 의 개념을 설명하겠다. 운동장에서 공을 줍는 법 은 운동장에 있는 공을 사람(A)이 줍는 것을 보여준다. A가 공을 한번에 최대 1개 옮길 수 있고 공을 한번 옮기는데 걸리는 시간이 1초라고 할 때 이 사람은 총 9초를 소모하게 된다. 만약 A가 공을 줍는데 걸리는 시간을 단축하고자 한다면 어떤 방식을 써야할까?쉽게 생각할 수 있는 방법이 '더 빨리' 공을 가져오는 것이다. 공을 옮기는데 0.5초가 걸린다면 총 4.5초를 소모하게 된다. 그리고 0.3초가 걸린다면 총 2.7초를 소모하게 된다. 하지만 이런 경우 쉽게 생각할 수 있는..

Lua 를 이용한 가위바위보 게임 만들기

코드에 대한 설명은 파란색으로 되어있다. 자료형, 구문 등에 대해 나눠서 설명하려고 했는데 그런 방식보다는 프로그램 하나를 만들면서 그 안에 필요한 기능들에 대해 수행하는 것이 더 좋다고 본다. 이번 글에서는 Lua 를 이요해서 (컴퓨터와 대결하는) 가위바위보 게임을 만들어 볼 것이다. 코드는 앞의 글에서 소개한 Visual Studio Code 를 이용하여 작성할 것이다. 글의 순서는 1. 가위바위보 게임에 대한 간단한 소개2. 게임의 시작과 변수 설정3. 가위바위보 승무패 알고리즘 1. 가위바위보 게임은 가위바위보 파란색 화살표 방향으로 이기고 빨간색 화살표 방향으로 지는 것이다.(보는 바위한테 이긴다.) 2. 게임의 시작과 변수 설정 Lua 프로그램은 cmd 창에서 실행한다. 그렇기 때문에 실행을 ..

Lua - 프로그램 실행

Lua 는 c++ 처럼 visual studio 를 사용하여 실행하지 않는다. (c++도 디버그 이외에는 딱히 VS를 사용하지 않아도 되긴 하지만) Lua 를 사용할 때는 '환경변수' 를 등록한 뒤에 cmd 창에서 Lua 프로그램을 실행한다. 환경변수 설정 방법 먼저 win + pausebreak 키를 누르자아래 - 를 따라가면서 Lua 환경변수 설정 - 1 Lua 환경변수 설정 - 2 Lua 환경변수 설정 - 3 Lua 환경변수 설정 - 4 다른 과정에 대한 설명은 필요가 없을 것 같고 에서 환경변수 편집에서 Lua 폴더를 그대로 넣으면 된다. 이 과정을 하는 이유는 Lua 폴더 외에 다른 곳에있는 Lua 파일을 실행하기 위함이다. 환경변수에 대한 설정이 끝났으면 이제 Lua 파일을 실행하기 위해 코드..

Lua 소개 및 설치

Lua 는 Visual Studio 를 통해 사용하는 C 나 C++, C# 에 비해 가벼운 프로그래밍 언어이다. 블로그에서는 love2d 라는 프로그램을 사용하기 위해서 Lua 라는 언어를 배우게 될 것이다. 다운받을 수 있는 사이트는 링크를 따라가면 된다. 설치는 exe 파일이 아닌 압축파일을 푸는 형태가 될 것이다. 그리고 Lua 프로그래밍을 할 때는 메모장에 할 수 있지만 VS code라는 프로그램을 깔아서 더 쉽게 프로그래밍을 할 수 있다. VS 코드는 링크를 따라가면 설치할 수 있다. 대부분의 블로그에서 소개하게 될 모든 Lua 언어에 대한 설명은 링크 를 참조하였다. (사실 구글에서 검색해보아도 거의다 해당 링크를 따라가더라.) Lua 는 절차적/객체지향적/함수형/Data-driven형 프로그..

시스템 복원, 복구지점 생성

** 윈도우 10에 대해서 정리해서 글을 수정할 예정이다.(-> 윈도우 10도 같은 방법으로 진행한다.) 프로그램 설치 시 설치 후 문제가 생길 경우 '아 깔지말껄... 돌아가고싶다...' 라고 생각하게 된다. 이를 위해 보통 복구지점을 설정해두고 설치를 하게 되는데 윈도우 7의 경우 아래와 같다. (윈도우 10 동일) 복구지점 생성 - 1 복구지점 생성 - 2 복구지점 생성 - 3 이 부분에서 '만들기' 가 활성화되지 않은 사람은 '구성' 을 클릭하여 복구지점에 대한 공간을 할당해야 한다. 복구지점 생성 - 4 위 과정을 거치면 복구지점을 생성할 수 있다. 다음은 생성된 복구지점으로 돌아가는 방법이다. 복구지점으로 복구 - 1 복구지점으로 복구 - 2 , 과 같은 과정을 거쳐 복구지점으로 복구할 수 있..

환경 변수

환경 변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다. ( 위키백과 한국어판) cmd 창을 열어서 환경 변수를 설정하는 방법도 있지만 이 글에서는 조금 더 쉬운 방법으로 환경 변수를 관리하는 방법을 알아보겠습니다. 먼저 Win key + Pause Break 를 누릅니다. 환경 변수 설정창 처음 위의 키를 누르면 '시스템' 창이 뜹니다. 거기서 맨 왼쪽의 '고급 시스템 설정' 을 누르면 중앙의 '시스템 속성' 의 창이 뜨고 그 아래에 '환경 변수' 버튼을 누르면 '환경 변수'에 대한 창이 뜹니다.( 의 왼쪽에서 오른쪽으로 진행됩니다.)여기서 추가/편집/삭제 를 할 수 있습니다. 외부에서 환경 변수를 사용할 때는 $(환경변수) 를 사용하면 됩니다.예를 들어 CUDA_PA..

CUDA 8.0 변경 사항

1. Pascal Architecture 지원1.1. Pascal Architecture GPU 에서 쉽게 성능 향상을 볼 수 있음1.2. 큰 데이터셋(datasets), 동시에 데이터에 접근하는 방법 등 통합된 메모리르 통한 프로그래밍 간소화1.3. 새로운 데이터 병합 API를 통해 메모리 통합 최적화1.4. NVLINK 를 통한 전체적인 속도 향상2. 개발자 도구2.1. Critical Path Analysis 를 통한 시스템 레벨에서의 잠재적인 병목현상(bottleneck) 탐지2.2. NVCC 컴파일 속도를 2배로 향상시켜 생산성 향상2.3. OpenACC 어플리케이션과 전체적인 host code 를 조절하여 새로운 자료 수집(profiling) 가능3. 라이브러리(Libraries)3.1. nv..