Image 파일을 사용하다가 보면 벡터(Vector)와 비트맵(Bitmap) 방식이라는 용어를 많이 접할 수 있습니다. 벡터와 비트맵 방식에 대한 차이를 자세히 알려면 PPI와 DPI에 대한 차이를 먼저 알고 확인을 하면 이해가 쉬울 것입니다. 하지만 여기서는 단순히 표현 방식과 차이에 대해서만 설명을 하도록 하겠습니다.
- 벡터(Vector) 방식
벡터방식은 점과 점을 연결해서 이미지를 표현하며 선과 면을 만들어 내는 것입니다.
비트맵의 픽셀과 다르게 크기 조절이나 변형으로도 해상도가 깨지지 않습니다. 아래 비교 사진을 보면 쉽게 이해가 될 수 있습니다. 따라서, 로고, 서체 등에 다양하게 이용되고 있으며 비트맵 방식에 비해 상당히 적은 용량이 사용되는 장점이 있습니다. 대표적 프로그램으로 Adobe Illustrator를 생각하시면 됩니다. 무료프로그램으로는 Inkscape가 있습니다. UI나 기능상에서 Adobe Illustrator 보다 떨어지고 있지만 무료로 간단한 작업에서는 유용하다고 생각합니다.
- 비트맵(Bitmap) 방식
비트맵은 픽셀(Pixel)에 있는 비트의 집합체로 보면 됩니다. 픽셀에 대한 자세한 설명은 따로 하기로 하고 픽셀은 하나 하나가 각기 다른 생상정보를 가지고 있다고 생각하시면 됩니다. 서로 다른 픽셀이 조합되어 하나의 이미지가 되는 것입니다. 비트맵 방식은 이미지에 대한 정교하고 화려한 표현이 가능한 장점을 가지며 픽셀 수가 많아지면 질수록 화질이 좋아질 수 있습니다. 하지만, 용량이 커지고 확대/축소로 인한 화질 문제를 유발할 수 있다는 단점이 있습니다. 대표적 프로그램으로 Adobe Photoshop을 생각하시면 되고 그 밖의 대부분의 Image 편집툴은 비트맵 방식이라고 생각하시면 됩니다.
비메모리 반도체의 종류에 대해서 의미는 알지만 글이나 설명으로 정의를 내리기 힘든 부분이 있어서 정리를 하려고 합니다. 메모리 반도체는 우리가 잘알고 있는 삼성, SK하이닉스에서 생산하는 DRAM, NAND 등으로 생각하시면 됩니다. 비메모리 반도체에서도 광, 센서 등을 다루는 쪽에 대한 설명은 생략하고 시스템 반도체라고도 하는 ASIC, ASSP, FPGA, SoC에 대해서 다루도록 하겠습니다.
시스템 반도체에서는 ASIC, ASSP, FPGA 3가지로 크게 구성되며 각각에 구성에서 SoC or Non-SoC로 구분되는 것이 정확한 표현인 것 같습니다.
특정 용도로 사용되는 주문형 반도체입니다. 한개의 회사에서 제품을 개발해서 특정한 application에 사용되도록 고안된 제품이라고 생각하시면 됩니다. 예) 100G Ethernet Switch Chip, 24x10G Ethernet Chips
- ASSP ( Application-Specific Standard Parts )
특정 용도로 표준화한 반도체입니다. ASIC에 비해 표준화된 기술을 기반으로 여러 업체가 사용하여 생산하는 제품으로 생각하면 됩니다. 예) USB Interface Chip, PCIE Controller 등
- SoC ( System-on-Chip )
Microprocessors (MPUs), Microcontrollers (MCUs), Digital signal processors (DSPs) 등의 on-chip memory 와 함께 연산이나 주변 장치 등을 사용/제어하는 Processor가 포함된 반도체를 SoC라고 생각하시면 됩니다.
따라서, 아래 그림과 같이 ASIC, ASSP에서도 SoC와 Non-SoC가 Processor의 존재 유무에 따라서 나눌 수 있습니다.
- FPGA ( Field-Programmable Gate Arrays )
하드웨어 프로그래밍이 가능한 반도체로 우리가 원하는 디지털 기능의 조합을 구현할 수있는 프로그래머블 패브릭 구성이 가능한 장점을 가지고 있습니다. 간단히 말해서 ASIC, ASSP는 한번 만들어진 기능을 변경할 수 없지만 FPGA는 원하는 기능을 만들고 변경 또한 가능하다고 생각하시면 됩니다. Xilinx와 Intel(ex-Altera)이라는 유명한 회사가 있습니다. 또한, FPGA에서도 ASIC, ASSP와 마찬가지고 Processor를 포함한 SoC 버전이 있습니다.
Account를 만들때 작성된 E-mail로 download 받을 수 있는 Link를 보내주고 그걸 사용해서 설치하면 됩니다. 최초 한번 download시 작성된 account를 통해서 activatation을 실행하면 무료로 계속 사용할 수 있습습니다.
2019-07-22에 download 받아서 설치한 버전은 아래 HitFilm Express 12 버전입니다.
설치가 완료된 후 시작을 하면 아래와 같은 화면을 볼 수 있습니다.
첫 페이지에서 부터 설명을 하도록 하겠습니다.
우선 상단 메뉴에는 File, Edit, View, Help 항목이 있습니다.
메뉴 항목들은 Media 패널, View 패널 등과 함께 설명에서 추가적으로 다루도록 하겠습니다.
아래 각 항목들에 어떤 것이 있는지 정도 한번쯤 확인 하시기 바랍니다.
1) File
2) Edit
3) View
4) Help
그리고, 시작화면 상단 좌측에 보시면 New, Open 버튼이 있습니다. 최초 사용을 위해서는 New 버튼으로 Project를 만드셔야 합니다. 아래에 있는 New 버튼을 누리면 New Projet Settings 라면 Popup 창이 나옵니다.
새로 열린 New Project Settings에서 보시면 Editor, Rendering Tab이 있습니다. Template에서 원하시는 setting 항목을 불러오던가 아니면 custom을 video/audio에 대한 모든 항목을 선택해서 만들 수 있습니다. 초기에는 원하는 목적에 맞는 Template을 사용해서 해보시는 것을 추천합니다.
New, Open 버튼 아래 보시면 User Guide와 ADD-ON PACKS라는 부분이 있습니다. User Guide 버튼을 클릭하시면 아래 FXhome에서 제공하는 User Guide 페이지로 브라우저를 통해서 이동합니다. 영문으로만 되어 있어서 우선 프로그램을 사용해본 후 필요하면 한글로 번역 작업을 할 까 생각하고 있습니다. 그리고, 그 아래로 ADD-ON PACKS는 유료 아이템으로 보시면 됩니다. FXhome Store로 연결되며 각각에 대한 Pack들을 유료로 판매하고 있습니다.
** 2편에서는 프로젝트 생성과 생성 후 화면의 각 항목들에 대해서 설명을 하도록 하겠습니다.
Xfce는 UNIX 계열 운영체제를 위해서 개발된 가벼운 데스크톱 환경입니다. 시각적인 매력과 사용자에게 친숙하면서 빠른 속도와 작은 시스템 리소스를 사용하는 것으로 목표로 하고 있습니다. Xfce는 GNOME 2.x과 같이 GTK+ 2 Toolkit을 기반으로 하고 있습니다.
Xfce는 모듈화와 재사용성의 전통 UNIX 철학을 간직하고 있으며 최신 데스크톱 환경의 기대작이 될 수 있는 완벽한 기능성을 갖춘 수많은 구성요소로 이루어져 있습니다. 각 부분으로 패키징했으며, 최적의 개인 작업 환경을 만들려고 사용할 수 있는 각각의 패키지를 고를 수 있습니다. Xfwm 창 관리자를 사용하고 Xfce 설정은 마우스를 사용해 설정 할 수 있습니다. 설정 파일들은 일반 사용자가 알아 보기 어렵게 숨겨져 있습니다.
Xfce는 수많은 UNIX 플랫폼에 설치할 수 있으며, X86에서는 Linux, NetBSD, FreeBSD, OpenBSD, Solaris, Cygwin, MacOS X , 그리고 PPC, Sparc, Alpha 등에서 컴파일 가능한 것으로 알려져 있습니다.
올리비어 포던(Olivier Fourdan)이 1996년에 이 프로젝트를 시작하였다. "Xfce"라는 이름은 원래 XForms Common Environment을 말하던 것이었지만, 더 이상 XFCE라고 쓰지 않고 Xfce라고 사용하고 있습니다.
초기 Xfce는 CDE의 자유 리눅스 복제품이 되도록 XForms로 만든 단순한 프로젝트였다. 간단한 도구 모음인 이 프로그램은 포던이 ibiblio(당시 SunSITE)에 공개했습니다. 포던은 이 프로젝트의 개발을 꾸준히 해 나가다가, 1998년에 Xfce의 창 관리자 Xfwm의 첫 버전을 포함하는 Xfce 2.x를 공개하였습니다. 그는 이 프로젝트를 레드햇 리눅스에 추가할 것을 요청하였지만 프로젝트가 XForms 기반이라는 까닭으로 거절 당하였습니다. 레드햇은 자유, 오픈 소스인 소프트웨어만 받아들였는데, XForms는 클로즈드 소스로 개인 사용자들에게만 자유 라이선스였습니다.
이전에 Xfce가 기반으로 하였던 클로즈드 소스 라이브러리인 XForms는 프로젝트의 발전을 제한하고 있었습니다. GTK+ 툴킷이 인기를 끌자, 포던은 이를 알맞은 대체안으로 생각하였습니다. 1999년 3월에 그는 오래된 XFce를 버리고 GTK+를 기반으로 하는 완전하게 새로운 프로젝트를 완성해 나가기 시작하였고 그 결과는 Xfce 3.0로 이어졌으며, GNU GPL 아래에서 라이선스되었습니다. 완전히 오픈 소스 소프트웨어를 기반으로 하는 이 프로젝트는 GTK+ 라이브러리를 사용함으로써 드래그 앤 드롭 지원, 네이티브 언어 지원, 개선된 기능 구성과 같은 많은 이점을 얻을 수 있었습니다. Xfce는 2001년 2월에 3.8.1 버전을 시작으로 소스포지에 업로드되었다.
Xfce는 버전 4.0.0에서 GTK+ 2 라이브러리를 사용하여 갱신되었으며 그 뒤로 다른 수많은 변경 사항들이 적용되었습니다. 4.2.0에서는 Xfwm을 위한 컴포지트 관리자를 포함하였으며, 그림자와 투명도를 자체 내장하였을 뿐 아니라 새로운 기본 SVG 아이콘들도 추가하였습니다. 2007년 1월에 Xfce 4.4.0가 공개되었고 이 버전에서 눈에 띄는 기능으로는 오래된 Xffm을 대체하는 Thunar 파일 관리자입니다. 또한, 데스크톱 아이콘 지원 기능이 추가되었고 Xfwm은 강화된 합성 기술을 사용하였습니다. 또, 패널에 대한 다양한 개선들이 추가되어, 버그 투성이던 플러그인들이 패널에서 충돌되던 것을 막았습니다.
특징
Xfce는 데스크톱 환경에서 기대할 수 있는 많은 핵심 구성요소를 포함하고 있습니다:
창 관리자 : 화면의 창의 위치를 관리하고 창 장식을 제공하며 작업공간이나 가상 데스크톱을 관리합니다.
데스크톱 관리자 : 배경 그림을 설정하고 루트 창 메뉴, 데스크톱 아이콘 또는 최소화한 아이콘 그리고 창 목록을 제공합니다.
패널 : 열린 창 들을 전환하고, 프로그램을 실행하며, 작업공간, 그리고 프로그램이나 디렉터리를 탐색하는 메뉴 플러그인을 전환합니다.
세션 관리자 : 로그인과 데스크톱의 전원 관리를 제어하며 다중 로그인 세션을 저장할 수 있게 해줍니다.
프로그램 탐색기 : 분류에 따라 여러분의 시스템에 설치한 프로그램을 보여주어, 여러분이 빠르게 찾고 실행할 수 있습니다.
파일 관리자 : 기본 파일 관리 기능과 일괄 이름 바꾸기 같은 독특한 유틸리티를 제공합니다.
설정 관리자 : 키보드 바로 가기, 모양새, 디스플레이 설정 등과 같은 데스크톱의 다양한 설정을 제어하기 위한 도구입니다.
전체적으로 작은 리소르를 사용하면서 빠른 데스크탑 환경을 필요로 한다면 한번쯤 고려해 볼 매력을 가지고 있습니다. 다만 사용자 수가 GNOME이나 KDE보다 적어 Web상에서 Tip을 찾기가 상대적으로 어려운 편이지만 최근 MX Linux에서도 사용되고 있으므로 점점 더 많은 사용자가 생겨날 것으로 생각됩니다.
OpenCL이라는 용어를 많이 접하게 되어서 궁금함을 해소하고자 정리를 시작하였습니다. 아래 내용들은 설치 및 사용방법에 대한 내용은 아닙니다. OpenCL이 어떤것인지에 대한 내용을 정리한 것이니 참고하시기 바랍니다.
The open standard for parallel programming of heterogeneous systems ( 이 기종 시스템의 병렬 프로그래밍을 위한 개방형 표준 )
OpenCL ™ (Open Computing Language)은 개방형으로 서버, 모바일 장치 및 임베디드 플랫폼에서 사용되는 다양한 프로세서의 병렬 프로그래밍을 위해 사용되는 교차 플랫폼을 위한 로열티 없는 표준입니다.
OpenCL은 게임 및 엔터테인먼트 타이틀, 과학 및 의료 소프트웨어, 전문creative도구, 시각 처리 및 신경 네트워크 교육(neural network training) 과 inferencing을 비롯한 다양한 범주에서 광범위하게 사용되는 응용 프로그램의 속도와 응답성을 크게 향상시키고 있습니다.
OpenCL 2.2는 크게 개선된 병렬 프로그래밍 생산성을 위한 core specification안에서 OpenCL C++ 커널 언어를 제공합니다.
1. OpenCL C++ 커널 언어는 C++ 14 standard의 정적 하위 집합이며 클래스, 템플릿, 람다식, 함수 오버로드 및 일반 및 메타 프로그래밍을 위한 여러 가지 구조를 포함하고 있습니다.
2. OpenCL C++커널 언어를 완전히 지원하는 새로운Khronos SPIR-V ™ 1.2 중급 언어를 사용하고 있습니다.
3. OpenCL 라이브러리 함수는 atomics, iterators, images, samplers, pipes및 내장형 타입의 디바이스큐와 address 공간과 같은 기능이 액세스하는 동안 정의되지 않은 행위를 줄이고 안정성 향상을 제공하므로서 C++ 언어의 장점을 가질 수 있습니다.
4. Pipe storage는OpenCL 2.2에서 새로운device-side type으로 컴파일시간에 커넥티비티 크기와 타입을 만들고, 커널간의 효율적인 장치간 통신을 가능하게 함으로써 FPGA 개발에 유용합니다.
5. OpenCL 2.2에는 생성된 코드에 대한 향상된 최적화기능을 포함하고 있습니다. 응용 프로그램은 SPIR-V 컴파일에서 특수화된 상수값을 제공 할 수 있으며 새 쿼리는 프로그램 범위 전역 객체에서 중요하지 않은 생성자 및 소멸자를 검출할 수 있으며 사용자콜백은 프로그램 릴리스시 설정할 수 있습니다 OpenCL 2.2에서 Khronos는 처음으로 OpenCL 2.2 사양의 전체 소스와 GitHub에서 OpenCL 2.2의 적합성 테스트를 발표하여 개발자들이 구현을 테스트하고 버그 수정을 직접 제안하며 자신의 용도에 맞게 사양 및 참조 자료를 재사용 할 수 있도록 하였습니다. OpenCL 버전 1.2, 2.0 및 2.1에 대한 적합성 테스트도 GitHub에서 발표되었습니다.
OpenCL Ecosystem (생태계)
OpenCL 2.2
C ++ 커널 언어 정의 - 단일 소스 C ++ 프로그래밍을 위한 SYCL 2.2와 함께
SPIR-V 1.2에 OpenCL C ++ 지원 추가 - Initializer and finalizer function execution modes for constructors and destructors - Named barriers, subgroup execution, and program scope pipes…
Runs on any OpenCL 2.0-capable hardware
OpenCL 2.0 지원되는 어떤 하드웨어에서도 실행 - 단지 Driver Update만 필요합니다.
Provisional release - 최종 단계 전에 업계에 피드백을 요청 - SIGGRAPH 또는 SC16에서의최종화목표한다 - 피드백에따라다름
OpenCL C++
OpenCL C ++ 커널 언어는 C ++의 정적 하위 집합입니다. - 성능을 저하시키지 않으면서 개발자는 low-level 수준의 자세한 코딩을 사용할 수 있습니다. 병렬 프로그래밍을 위해 OpenCL C++에서 제거된 C++ 14 기능 - Exceptions, Allocate/Release memory, Virtual functions 그리고 abstract classes Function pointers, Recursion 그리고 goto Classes, lambda functions, templates, operator overloading etc… - 빠르고 세련된 코드 공유 - 재사용 가능한 디바이스 라이브러리 및 컨테이너들 - 템플릿을 통해 적응력이 뛰어난 소프트웨어를 위한 메타 프로그래밍이 가능합니다. - Lambda는 중첩/동적 병렬 처리를 구현하는데 사용되었습니다. 데이터 병렬 프로그래밍에 최적화된 C++ 11 기반 표준 라이브러리 - Atomics, 메타 프로그래밍 및 유형 특성, 수학 함수 ... - 추가된 새로운 라이브러리 기능 : 작업 항목 및 작업 그룹 기능, 동적 병렬 처리, 이미지 및 파이프 기능 ...
아마도 간단하게 이해를 원하시는 분들이 있을거라고 생각합니다. 그런 분들은 Parallel Computing, Parallel programming에 대해서 확인을 해보시기 바랍니다.
Serial Computing vs Parallel Computing과Serial programming vs Parallel programming에 대한 차이를 보면 OpenCL이 왜 생겨났는지에 대한 궁금증이 해결 되셨을 것입니다.
많은 Data를 고속으로 처리해야되는 요구가 시장에서 발생했고 그것을 지원하고 프로세서들 개발되었습니다. 즉 CPU, GPU, FPGA 등에서 시장 요구 사항을 충족 시키고자 제조사별로 다양한 방법으로 Programming Language/Library가 지원이 되었을 것입니다. 하지만, 시장은 좀더 쉽고 편한 방법에 대한 욕구가 발생했고 그것을 다시 충족시키기 위해서 OpenCL 같은 범용 표준이 탄생된 것으로 생각합니다.