[VI, VIM] 짝 맞는 괄호 찾기


%키를 누르면 지금 커서가 위치하는 곳에 있는 괄호와 짝이 맞는 괄호를 찾아줍니다.

[VI, VIM] 마지막으로 사용한 명령 반복하기


. (마침표) 를 누르면 마지막으로 내렸던 명령이 반복됩니다.

[쿠다] CUDA, CUDNN 설치 여부 및 버전 확인

 

 

1. CUDA

 

nvcc --version

--

< 결과 >

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2016 NVIDIA Corporation

Built on Tue_Jan_10_13:22:03_CST_2017

Cuda compilation tools, release 8.0, V8.0.61

 

 

2. CUDNN

 

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

--

< 결과 >

#define CUDNN_MAJOR      5

#define CUDNN_MINOR      1

#define CUDNN_PATCHLEVEL 10

--

#define CUDNN_VERSION    (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

 

#include "driver_types.h"

 

 

참고한 사이트:

https://stackoverflow.com/questions/9727688/how-to-get-the-cuda-version

https://stackoverflow.com/questions/31326015/how-to-verify-cudnn-installation

코틀린의 문자열에서 부분 문자열을 뽑아내려면 아래와 같이 slice라는 함수를 사용하면 됩니다.

 

var 문자열 = "안녕하세요"

var 범위 = IntRange(0, 3) // 0, 1, 2, 3 포함

println(문자열.slice(범위))

---

<출력 결과>

안녕하세

 

선언해놓고 사용하지 않은 변수가 있으면 원래는 컴파일러가 경고를 합니다. 그런데 변수 앞에


__attribute__((unused))


를 써 놓으면 컴파일러가 경고를 하지 않습니다.

[자바] 코드 실행 시간 측정하기 (System.currentTimeMillis())


프로그래밍을 하다 보면 코드 특정 부분의 실행 시간을 측정해야 하는 경우가 생깁니다.

그럴 때에 아래와 같이 System.currentTimeMillis() 함수를 사용하면 밀리초 단위로 시간을 잴 수 있습니다.

System.currentTimeMillis() 의 반환 변수 형식은 long 입니다.


long 시작시간 = System.currentTimeMillis();

// 여기서 원하는 작업을 해 줍니다.

long 끝시간 = System.currentTimeMillis();

long 걸린시간 = 끝시간 - 시작시간;

System.out.println("걸린 시간: " + 걸린시간 + " 밀리초");


아래 명령어로 리눅스 종류와 버전을 확인할 수 있습니다.


grep . /etc/*-release


제가 사용하는 서버에서는 아래와 같은 결과가 나오네요.


/etc/centos-release:CentOS Linux release 7.4.1708 (Core) 

/etc/os-release:NAME="CentOS Linux"

/etc/os-release:VERSION="7 (Core)"

/etc/os-release:ID="centos"

/etc/os-release:ID_LIKE="rhel fedora"

/etc/os-release:VERSION_ID="7"

/etc/os-release:PRETTY_NAME="CentOS Linux 7 (Core)"

/etc/os-release:ANSI_COLOR="0;31"

/etc/os-release:CPE_NAME="cpe:/o:centos:centos:7"

/etc/os-release:HOME_URL="https://www.centos.org/"

/etc/os-release:BUG_REPORT_URL="https://bugs.centos.org/"

/etc/os-release:CENTOS_MANTISBT_PROJECT="CentOS-7"

/etc/os-release:CENTOS_MANTISBT_PROJECT_VERSION="7"

/etc/os-release:REDHAT_SUPPORT_PRODUCT="centos"

/etc/os-release:REDHAT_SUPPORT_PRODUCT_VERSION="7"

/etc/redhat-release:CentOS Linux release 7.4.1708 (Core) 

/etc/system-release:CentOS Linux release 7.4.1708 (Core)

그래들 파일에 다음 코드를 추가한 뒤 실행해주면 build/libs 에 opencv-android.jar 파일이 생성됩니다.


task jar(type: Jar) {

    from 'build/intermediates/classes/release/'

    archiveName 'opencv-android.jar'

}

[자바] 제곱 속도 - 직접 만든 제곱 함수가 Math.pow() 보다 빠를 때도 있어요


* 1.0의 제곱을 20억 번 할 경우 Math.pow()가 직접 만든 제곱 함수보다 세 배 느렸습니다.


* 제곱 횟수를 훨씬 늘리면 시간 차이가 줄어들던데, 아마 JIT 컴파일 때문이 아닐까 추측만 해 보았습니다.


* 실험 결과와 코드는 아래와 같습니다.





걸린 시간 (Math.pow 함수, 20억 회): 6 ms

걸린 시간 (직접 만든 제곱, 20억 회): 2 ms




public class 제곱속도측정 {


  public static double 직접만든제곱(double 숫자) {

    return 숫자*숫자;

  }


  public static void main(String[] args) {

    long 시작시간1 = System.currentTimeMillis();

    for(int i=0; i<2000000000; ++i) {

      Math.pow(1.0, 2);

    }

    long 끝시간1 = System.currentTimeMillis();

    System.out.println("걸린 시간 (Math.pow 함수, 20억 회): " + (끝시간1-시작시간1) + " ms");


    long 시작시간2 = System.currentTimeMillis();

    for(int i=0; i<2000000000; ++i) {

      직접만든제곱(1.0);

    }

    long 끝시간2 = System.currentTimeMillis();

    System.out.println("걸린 시간 (직접 만든 제곱, 20억 회): " + (끝시간2-시작시간2) + " ms");

  }


}







리눅스에서 프로그램을 돌려 놓고 한참 뒤에 보면 화면에 Killed 라는 글만 떠 있고 프로세스가 죽어 있는 경우가 가끔 있습니다.

그럴 때에는

dmesg | grep -E -i -B100 'killed process'

라고 치면 프로세스가 강제 종료될 때의 상황을 자세히 볼 수 있습니다.

제 경우에는 대부분 Out of memory가 원인이었습니다.


(참고한 자료: https://stackoverflow.com/questions/726690/who-killed-my-process-and-why)

+ Recent posts