[Java] 현재 경로 출력

코딩/Java 2015. 3. 24. 15:12
System.out.println(System.getProperty("user.dir");

[CUDA] NVCC -gencode

코딩/CUDA 2014. 10. 8. 10:14

nvcc 사용시 -gencode 옵션은 -arch 옵션과 -code 옵셥을 합친 것이다.

 

-arch 옵션: '-arch=compute_20'과 같이 사용

생성될 PTX 코드의 버전을 지정        -> 'compute_XX'는 virtual architecture를 의미함

PTX 코드는 GPU 드라이버에서 JIT (Just-In-Time) 컴파일을 통해 실행이 가능함

(SDK가 필요 없다는 장점이 있음)

-code 옵션: '-code=sm_20'과 같이 사용

생성될 binary 코드(SASS)의 버전을 지정     -> 'sm_XX'는 real architecture를 의미함

binary 코드는 별도의 JIT 컴파일 과정 없이 지정된 architecture에서 곧바로 실행이 가능

(컴파일 시간이 짧다는 이점이 있음) 

-gencode 옵션: '-gencode arch=compute_20,code=sm_20'과 같이 사용

 

그렇다면 다음과 같이 한번에 여러 -gencode 옵션을 줄 때의 이점이 무엇인가.....하면....

-gencode arch=compute_20,code=sm_20
-gencode arch=compute_20,code=sm_21
-gencode arch=compute_21,code=sm_21

 

여러 버전의 PTX, binary 코드를 미리 생성해두어 상위 아키텍쳐에 대한 '호환성'을 높일 수 있다는 것임.

대신 옵션 수에 비례하여 실행 코드의 크기가 커진다는 단점도 있음.

 

(참고: http://stackoverflow.com/questions/17599189/what-is-the-purpose-of-using-multiple-arch-flags-in-nvidias-nvcc-compiler)

[Python] Matplotlib을 이용한 histogram 그리기

코딩/Python 2014. 8. 4. 11:07

[Matplotlib 설치]

1. Numpy 설치

- 설치된 Python 버전에 맞는 numpy 설치

2. Matplotlib 설치

- 구글링해서 1.3.1 버전을 받아서 설치했더니 'matplotlib requires dateutil'이라는 에러 발생

- 그냥 아래 링크 설명대로 github에서 다시 받아서 설치했더니 문제 없었음
(http://matplotlib.org/users/installing.html)

 

[Histogram 그리기]

1. 예제 코드

- TP_list와 FP_list에 들어있는 값들에 대한 histogram을 겹쳐서 그림

- 'alpha=0.5'를 통해 투명도 조절

import matplotlib.pyplot as plt
...
plt.hist(TP_list, bins=100, color='b', label='TP')
plt.hist(FP_list, bins=100, color='r', alpha=0.5, label='FP')
plt.title('Score Histogram')
plt.xlabel('Scores')
plt.ylabel('Frequency')
plt.legend()
plt.show()

 

2. 그 외

- 자세한 설명은 생략한다 아래 링크 참조

(http://bespokeblog.wordpress.com/2011/07/11/basic-data-plotting-with-matplotlib-part-3-histograms/)

 

'코딩 > Python' 카테고리의 다른 글

[Python] 파일 라인 수정  (0) 2014.04.28

[CUDA] Visual Studio 2010에서 C++ 프로젝트를 CUDA 프로젝트로 변환

코딩/CUDA 2014. 7. 31. 10:50

참조: http://stackoverflow.com/questions/3778799/how-do-i-start-a-cuda-app-in-visual-studio-2010

(여기서 Tom의 답글 참조)

 

0. CUDA SDK 설치

  - Visual Studio에 CUDA 코드 컴파일을 위한 '빌드 사용자 지정 파일'이 자동으로 추가됨

 

1. 솔루션 탐색기에서 기존 C++ 프로젝트 선택 후 우클릭 -> "사용자 지정 빌드" 선택

 

2. CUDA X.X 체크 후 확인

 

3. 다시, 솔루션 탐색기에서 기존 C++ 프로젝트 선택 후 우클릭 -> 속성 -> 링커 -> 입력 선택

 

4. 추가 종속성에 'cudart.lib' 추가

 

(선택: 기존 .cpp 파일을 NVCC로 컴파일하는 방법)

5. 솔루션 탐색기에서 기존 .cpp 파일을 선택 후 우클릭 -> 구성 속성 -> 일반에서 항목 형식을 'CUDA C/C++'로 변환

  - 파일명도 .cu로 변환하는 것이 좋음

 

 

+ 추가: CUDA와 다른 외부라이브러리 (ex: OpenCV, STL 등) 같이 사용 시 주의점

(참조: http://stackoverflow.com/questions/1847599/why-wont-opencv-compile-in-nvcc)

- NVCC가 STL, OpenCV 등 기타 라이브러리 코드를 제대로 인식하지 못하는 문제가 있음

- kernel 정의하는 파일은 .cu로 분류해서 NVCC를 통해 별도로 컴파일

- 기타 외부라이브러리 기능을 사용하는 코드는 따로 .cpp 파일에 작성 후 C++ 컴파일러로 컴파일 후 사용

 

'코딩 > CUDA' 카테고리의 다른 글

[CUDA] NVCC -gencode  (0) 2014.10.08

[Python] 파일 라인 수정

코딩/Python 2014. 4. 28. 09:39

예제> 'test.txt'에서 'old_term: ... '으로 시작하는 라인을 'new_term: ...'으로 수정


 

with open('test.txt', 'r+') as f:              # file을 열고 알아서 닫아 줌
    lines = []
    new_line = 'new_term: this is test\n'
    for line in f:
        if(line.startswith('old_term:')):      # 'old_term:'으로 시작하는 line을 찾음
            lines = lines + [new_line]
        else:
            lines = lines + [line]
f.seek(0)                                      # file pointer 위치를 처음으로 돌림
f.writelines(lines)                            # 수정한 lines를 파일에 다시 씀
f.truncate()                                   # 현재 file pointer 위치까지만 남기고 나머지는 정리 

'코딩 > Python' 카테고리의 다른 글

[Python] Matplotlib을 이용한 histogram 그리기  (0) 2014.08.04

[C/C++] 현재 폴더 위치 출력

코딩/C/C++ 2012. 4. 6. 11:17
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
#define MAX_PATH 260

void main(void)
{
    char currentPath[_MAX_PATH];
    printf("현재 디렉토리: %s\n", _getcwd(currentPath, _MAX_PATH));
}