ecsimsw

Processing devices 본문

Processing devices

JinHwan Kim 2019. 3. 19. 11:54

Using GPU

- tensorflow는 CPU와 GPU를 사용하여 연산을 처리할 수 있다고 공부하였다. 이번에는 tensorflow에서 연산 장치를 결정하는 방법을 공부했다.
  • Supported device
    - tensorflow는 device type을 다음처럼 string으로 표시한다.
    "/cpu:0": The CPU of your machine. "/device:GPU:0": The GPU of your machine, if you have one. "/device:GPU:1": The second GPU of your machine, etc.
    - 현재 사용중인 디바이스를 확인하고자 할때는 log_device_placement를 True로 설정하고 세션 생성시 tf.ConfigProto 메소드에 인자로 넘기면 위처럼 string으로 사용 중인 디바이스 타입을 쉽게 확인 할 수 있다.
    sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
  • Example_
    "Check device type" # Creates a graph. a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') c = tf.matmul(a, b) # Creates a session with log_device_placement set to True. sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) # Runs the op. print(sess.run(c))
    - 아래는 위 코드를 실행시켰을 시, 출력되는 결과물이다.
    MatMul: (MatMul): /job:localhost/replica:0/task:0/device:CPU:0 2019-03-19 10:41:29.458276: I tensorflow/core/common_runtime/placer.cc:935] MatMul: (MatMul)/job:localhost/replica:0/task:0/device:CPU:0 a: (Const): /job:localhost/replica:0/task:0/device:CPU:0 2019-03-19 10:41:29.473407: I tensorflow/core/common_runtime/placer.cc:935] a: (Const)/job:localhost/replica:0/task:0/device:CPU:0 b: (Const): /job:localhost/replica:0/task:0/device:CPU:0 2019-03-19 10:41:29.488506: I tensorflow/core/common_runtime/placer.cc:935] b: (Const)/job:localhost/replica:0/task:0/device:CPU:0 [[ 22. 28.] [ 49. 64.]]
    - /device:CPU:0 을 보아, 연산을 CPU로 처리한 것을 확인할 수 있다.
  • Using particular device
    - 자동으로 선택되는 기기가 아닌 본인이 특정한 기기를 사용하고자 할때는 with 키워드를 사용하여 기기를 명시할 수 있다.
    "with tf.device" with tf.device('/cpu:0'): a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    - 위 코드처럼 with tf.device()에 사용하고자 하는 device type을 찾아넘기고 context를 주면 해당 context 안의 코드들은 원하는 기기에서 처리된다.
Comments