Monthly Archives: September 2018

[Algorithm] Traveling Salesman Problem 1 (Algospot – TSP1)

출처 https://algospot.com/judge/problem/read/TSP1 프로그래밍 대회에서 배우는 알고리즘 문제해결 전략 (구종만) 난이도  (하) – 중 – 상 – 최상 – 풀지 못함 문제  Input으로 최대 8개 도시간의 거리가 주어진다. Salesman이 모든 도시를 한 번씩 다 방문하는데 가장 짧은 거리를 계산하는 문제이다. 후기  문제를 읽고 Priority Queue로 문제를 풀려고 먼저 생각해보았다. 하지만, 도시의 개수가 8개 정도로 제한이 되어… Read More »

[GPGPU Series 2] General Purpose on GPUs

시작이 중요하다고 Index 다음으로 첫 글을 작성하였다. CUDA가 GPU에서 동작하는 순서를 알기 전에 General Purpose on GPU (GPGPU) 개념을 먼저 설명할 필요가 있다. GPGPU라는 개념이 생긴 이유는 개인적인 견해가 많이 들어간 부분이다. 2010년도 초반부터 공부했기 때문에 GPU 또는 GPGPU의 많은 과거사를 정확하게 알고 있지는 않다. 우선 가장 먼저 GPU의 긴 역사 중 중요한 몇 가지… Read More »

[GPGPU Series 1] Index of Articles

대학원을 다니면서 GPGPU-Sim을 사용하여 GPU에 대한 공부와 연구를 진행하였다. 그래서 GPU에 실행되도록 작성된 General Purpose on GPU (GPGPU) Application이 GPU에 어떻게 동작하는지 조금은 이해하고 있다. 항상 영어 사이트의 내용을 번역하는 수준으로 블로그 글을 쓰다가 우연히 OpenGL/Vulkan 등의 API로 작성된 Application이 GPU에서 실행되는 방법을 정리한 Article을 찾을 수 있었다. Article을 읽은 후 나도 한번은 아는 지식으로… Read More »

[Algorithm] 문자열 합치기 (Algospot – STRJOIN)

출처 https://algospot.com/judge/problem/read/STRJOIN 프로그래밍 대회에서 배우는 알고리즘 문제해결 전략 (구종만) 난이도 하 – (중) – 상 – 최상 – 풀지 못함 문제 100개 이하의 String의 길이가 Input으로 주어진다. 주어진 String을 모두 합치고 싶다. String을 합치기 위해서는 두 개의 String 길이 만큼 For Loop을 돌아야 한다. 예를 들어 “st”, “ri”, “ng”가 Input으로 주어지면, 먼저 “stri”를 만들기 위해 총… Read More »

[GPU] The Bifrost Shader Core (Mobile GPU)

중요: 항상 그렇지만 이번 글을 특히 이해하지 못하는 부분이 많았다. Bifrost GPUs 그림 1: Bifrost GPU 구조 (출처 2) 글을 쓰는 현시점에 사용되고 있는 GPU Architecture이다. 2016년 Exynos 7872를 시작으로 최근 Kirin 980에도 사용되었다 (출처1). Mali-G30, Mali-G50, Mali-G70이 Bifrost를 사용한 GPU이다. 위 그림1은 Bifrost GPU Architecture이다. 기본적인 구조는 앞서 작성한 Midgard GPU와 거의 같다. 변경된… Read More »

[Python] Bash/Powershell Command 실행 (Bash/Powershell CMD)

목적: Linux Bash CMD나 Window PowerShell CMD를 Python에서 실행하는 방법 환경: Widow 10 + Python 3.6

설명 os.system()의 경우 실행된 결과가 창으로 출력됨. 위 예제의 경우 출력되는 결과가 없어서 출력되는 내용이 없음 os.popen().read()의 경우 실행된 결과를 반환하여 Variable에 저장함. 저장된 값은 다음에 String으로 읽어서 변경할 수 있음

[C/C++/Algorithm] Size of Data Type

2주 정도 전에 Programming 시험을 쳤다. 다행히 문제를 풀기는 했는데, Data Type들의 사이즈를 헷갈려서 printf 함수를 사용해서 가능 범위를 확인하고 문제를 풀 수 있었다. 그래서 간단하게 Data Type들의 출력 가능 범위를 짧게 정리해보았다. 위 내용은 당연히 알아야 하는 정도의 기본인지도 모르겠다 (어쩌면 기본도 없이 Programming 시험을 보러 다녔는지도 모르겠다). 출처 https://intellipaat.com/tutorial/c-tutorial/c-data-types/ https://www.tutorialspoint.com/cprogramming/c_data_types.htm

[GPU] The Midgard Shader Core (ARM Mobile GPU)

Midgard GPUs ARM에서 최근에 만든 Bifrost GPU 이전 모델인 Midgard에 대해서 짧게 정리해보았다. Exynos 5250 (2012년 추정)에서 첫 세대 Midgard를 사용하였고, 마지막으로 3세대 Midgard가 Exynos 8890 (2016년 추정)에 생산되었다 (출처 1, 2). Midgard GPU는 Mali-T600, Mali-T700, Mali-T800 시리즈가 있다. Midgard GPU는 요즘 GPU의 기본인 Unified Shader Core를 사용한다. Unified Shader Core란 Vertex Shader 연산, Fragment Shader… Read More »

[GPU] FlexRendering (Hybrid Deferred and Direct Rendering Mode)

며칠 전에 작성한 Tile-based Rendering을 공부하다가 Qualcomm Developer Guide에서 찾은 내용인데 Tile-based와 Immediate Mode Rendering을 자동으로 선택해주는 방법이 있는 것 같다. 해당 부분은 ARM Mali GPU에서는 지원하는지 모르겠다. Qualcomm (QTI) 의 경우 자동으로 Tile-based Rendering 또는 Immediate Mode Rendering을 선택하는 것 같다. 출처 1에 따르면 Tile-based Rendering을 Binned Rendering이라 표현하였고, Immediate Mode Rendering의 경우 Direct… Read More »

[Android] ADB “input” Command 사용법 (adb shell input)

안드로이드 단말에서 Developer 옵션을 켜면 ADB를 사용해서 많은 것을 할 수 있다. 나의 경우 게임에서 특정 플레이를 반복적으로 해야 하는 부분을 자동으로 해보려고 찾다가 “adb shell input” Command로 구현 할 수 있어서 관련 Command를 정리하였다. Input Text Command: adb shell input text “insert%syour%stext” (%s 는 space를 의미) 설명: “insert text” Command 언제 사용해야 하는지 아직 잘… Read More »