728x90
반응형

분류 전체보기 115

[OpenCL] OpenCL 정의와 동작방식(feat. Host program 작성순서)

OpenCL이란?? Open Coumputing Language의 약자로 개방형 병렬컴퓨팅 프레임워크이다. 다시말해, 이종플랫폼에서 동작하는 프로그램을 작성하기 위한 프레임워크이다. 여기서 이종플랫폼이란 CPU, GPU, FPGA 등과 같은 프로세서를 의미한다. OpenCL은 범용 프로세서들에 대해서 쓴다면 CUDA는 GPU에 특화된 프레임 워크라고 할수있다. OpenCL을 잘 배우면 CUDA도 쉽게 배울 수 있다. OpenCL 프로그램 개발 먼저 OpenCL 프레임워크를 사용하기 위해서는 OpenCL을 다운받고 헤더파일을 include 하여 사용할 수 있다. OpenCL로 프로그램을 작성할 때는 디바이스(GPU,CPU 등의 프로세서)에서 동작하는 커널 프로그램과 호스트 프로그램을 따로 작성한다. 커널 ..

인턴 2021.08.17

[Git] GitHub fork한 repository 해제하기 (feat. fork란?)

Fork란?linux system call로 사용되는 fork() 함수는 새로운 자식 프로세스를 만들어내는데 사용한다. GitHub에서 사용되는 fork는 이와 유사하다.GitHub에서 사용되는 fork는 다른 사람의 github repository(원격저장소)에서 내가 어떤 부분을 수정하거나 추가 기능을 넣고 싶을 때 내 Github repository로 그대로 복제하는 기능이다. fork한 저장소는 원본(다른 사람의 github repository)과 연결되어 있다. 즉, fork가 수행된 다음, original(원본) github repository에 어떤 변화가 생기면(ex 새로운 commit) 이는 내 github repository로 반영할 수 있다. 이 때 변화를 적용하려면 fetch나 re..

카테고리 없음 2021.08.13

[CSS] 티스토리 Odyssey 스킨, 블로그 제목 크기 조정하기

현재 Tistory에서 기본적으로 제공하는 스킨인 Odyssey를 사용하고 있지만 추가적인 부분은 내가 꾸며야 한다. 오늘은 블로그 이름이 길어서 컴퓨터에서 축약되어 보이는 현상을 해결해 보려고 한다. 다음은 컴퓨터에서 보는 내 블로그 이름이다. Whatever floats your boat는 "너가 하고싶은대로 해"라는 의미인데 boat 단어가 잘려서 나오게 된다. 먼저 블로그 이름이 어떤 CSS 속성으로 적용되는지 찾아보려고 한다. 먼저 수정하려는 자신의 블로그에 들어가 마우스 오른쪽 버튼을 클릭한다. 맨 마지막 행을 보면 "검사"라는 버튼이 나오며 그것을 클릭한다. (아래 그림의 빨간색 표시) 검사를 누르면 오른쪽에 복잡한 코드를 포함하는 창이 나오게 될것이다. 그럼 새롭게 생성된 창에서 왼쪽 위의..

HTML 2021.08.12

[운영체제(OS)] 7-1. 프로세스 동기화 (Process Synchronization)

여러개의 process가 동시에 동작할 때, 공유된 데이터에 대해 안전하게 동작하기 위해서 프로세스 동기화가 필요하다. 프로세스가 shared data(공유 데이터)에 concurrent access(동시접근)하면 data가 일치하지 않을 수 있다. 그 예는 밑에 작성하도록 하겠다. 따라서 데이터 일관성(data consistency)을 유지하려면 프로세스가 차례대로 데이터에 접근해 실행을 할 수 있도록 해야한다. Race Condition : 여러 프로세스가 동시에 공유 데이터에 접근하고 데이터를 수정하고 있는 상황을 말한다. 이렇게 Race Condition이 발생하면 공유 데이터의 최종 값은 마지막으로 공유 데이터에 쓰여지는 값이 된다. Race Condition을 방지하려면 프로세스를 동기화해 한..

운영체제 2021.08.11

[운영체제(OS)] 6-2. CPU 스케줄링 (CPU scheduling)

CPU스케줄링에서 SJF알고리즘을 사용한 스케줄링을 하려면 process들의 cpu 사용시간을 알아야했다. 하지만 process들의 미래 cpu사용시간을 아는 것은 불가능하고 SJF 알고리즘을 사용하는데 문제가 생기게되었다. 따라서 SJF 알고리즘을 사용하기 위해서 사람들은 process들의 CPU 사용시간을 예측하는 수학적 모델을 만들었다. Exponential Averaging 수학적 모델 Exponential Averaging 모델 : 이전에 프로세스가 쓴 CPU 사용시간을 가지고, 미래 프로세스가 사용할 CPU 사용시간을 예측한다. 다음은 후에 나올 수식에서 사용되는 용어들을 정의한 것으로 밑의 그림과 같이 연관되어 보면 이해할 수 있다. n번째에 CPU를 사용한 실제 시간 n+1 번째의 CPU ..

운영체제 2021.08.10

[Visual Studio Code] 마크다운파일을 인코딩해서 작성하기(feat. 마크다운이란?)

여러분들은 GitLab과 GitHub에 들어가서 보면 마크다운 형식으로 자신의 오픈소스를 소개해 놓은 것을 본 적이 있을 것입니다. 저는 처음 github에서 여러가지 오픈소스를 보면서 Readme.md 파일이 무엇인지 궁금하였고 어떻게 이 파일을 하나만 자신의 오픈소스를 설명할 수 있는지 너무 신기하였습니다. 마크다운(Markdown)이란? 마크다운이란 쉽게 말하면 텍스트를 편집할 수 있는 문법이라고 생각하시면 편합니다. 태그를 이용하여 글자에 속성을 주거나, 이미지를 삽입하고 조작하는 일이 가능합니다. 마크다운은 HTML을 몰라도 마크다운 형식으로 글을 작성하면 HTML형식으로 변환시킬 수 있습니다. 마크다운은 쉽게 글을 쓸 수 있도록 해 주고, 읽는 사람에게도 쉽게 읽힐 수 있도록 해 주는 간소한 ..

카테고리 없음 2021.08.09

[운영체제(OS)] 6-1. CPU 스케줄링 (CPU scheduling)

Short-Term schduling이라고 불리는 CPU scheduling은 현재 CPU 자원을 어떤 process에게 할당할 것인가를 결정하는 것이다. Process는 CPU사용시간에 따라 두가지 종류로 나뉠수 있다. I/O bound job : CPU를 사용하는 빈도는 많지만(CPU를 process가 잡는 빈도) 실제 사용하는 시간은 적은 process를 가르킨다. CPU bound job : CPU를 사용하는 빈도는 적지만 실제 사용하는 시간은 긴 process를 가르킨다. 계산 위주의 일을 많이하며 사용자랑 상호작용을 많이한다. CPU scheduling은 이 두가지를 고려해서 만들어야 한다. 사용자가 실행시키는 프로그램의 반응이 느리면 사용자는 답답해 할 것이다. 그러므로 CPU bound j..

운영체제 2021.08.06

[Linux] SSH를 이용해 원격서버 접속 후 폴더 복사하기(feat. SCP 이용하기, local -> remote 파일이동)

이번글은 ssh 프로토콜을 이용해 원격서버에 접속하고 scp 명령어를 이용해 local에서 remote 서버로 폴더(파일도 가능)를 복사하도록 하겠다. SSH(Secure Shell)란? SSH는 원격 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜이다. 기존의 텔넷도 원격 접속하기 위해 사용되었는데 이는 암호화가 이루어지지 않아 사용자의 개인 정보가 노출될 위험이 존재한다. 따라서 SSH는 기존 텔넷에 암호화 기능을 추가하여 나온 프로토콜이다.(SSH 통신이 다른 이에게 노출된다고 하더라도 암호화된 문자로 보이기 때문에 텔넷보다 안전하다) Shell을 이용해서 원격으로 접속하므로 CLI(Command Line Interface) 상에서 작업을 하게 된다. ssh 연결시에 옵션을 주지 않으면 기본..

카테고리 없음 2021.08.05

[Doubango/ultimateALPR/Docs] C++ API header 번역

C++ API 다른 모든 언어의 API는 SWIG를 사용하여 C++ 코드에서 생성됩니다 .이 문서를 기반으로 다른 언어의 API를 사용하는 것은 간단합니다. 유용한 기능이 3개뿐이기 때문입니다. Java를 사용하는 Android용 샘플 코드는 여기에서 찾을 수 있습니다. 설명하는 헤더 파일은 https://github.com/DoubangoTelecom/ultimateALPR-SDK/blob/master/c++/ultimateALPR-SDK-API-PUBLIC.h에 정의되어 있습니다. enum ultimateAlprSdk::ULTALPR_SDK_IMAGE_TYPE​ enum ultimateAlprSdk::ULTALPR_SDK_IMAGE_TYPE​ 이미지 유형을 정의합니다. 값: ULTALPR_SDK_IM..

[컴파일러] 5. LLVM을 이용해 Instruction 위치 이동(feat 메모리 명령어 종속성)

이번 글에선 IR 파일에서 Store 명령어를 BasicBlock 가장 마지막 부분으로 위치를 옮기도록 해보겠다. 일반적인 산술 연산(ex add, sub) 명령어와 다르게, 메모리 명령어 (load/store)의 종속 관계는 컴파일러 입장에서 대부분 알기 어렵다. 예를 들면 주소 X에서 값을 읽은 명령어와(load) 주소 Y에 값을 저장하는 명령어(store)가 있다고 할 때, 주소 X와 주소 Y가 같거나, 다르다는 보장이 없는 이상 종속 관계가 없다고 하더라도 순서가 쉽게 바뀔 수 없다. 따라서 Store 명령어의 위치 이동으로 이루어지는 종속성 문제는 컴파일러 레벨에서 특별한 오류를 발생시키지 않는다. 프로그램 작성 Basic Block 마지막 store 명령에 모든 store명령을 이동시키는 프로..

컴파일러 2021.08.02
728x90
반응형