본문 바로가기

분류 전체보기465

C++ 라이브러리 개요 References The C++ Standard Library: Second Edition includes C++17 https://en.cppreference.com/w/ Contents C++ History C++ 라이브러리 개요 C++ History C++과 표준 라이브러리의 역사는 오래되었습니다. C++은 1980년대에 등장해서 2017년 버전, 현재는 2020년 버전까지 이어져오고 있습니다. 지난 30~40년간 C++이 얼마나 달라졌는지는 C++ 표준 라이브러리만 봐도 알 수 있는데, C++은 객체지향 언어(object-oriented language)로 시작했다가, STL을 이용한 제너릭 프로그래밍 개념이 추가되고 최근에는 함수형 프로그래밍 개념도 상당히 반영되고 있습니다. C++의 발전 과.. 2022. 2. 6.
[Swift] Protocols (2) References https://docs.swift.org/swift-book/LanguageGuide/Protocols.html Contents Adding Protocol Conformance with an Extension Adopting a Protocol Using a Synthesized Implementation Collections of Protocol Types Protocol Inheritance Class-Only Protocols Protocol Composition Checking for Protocol Conformance Optional Protocol Requirements Protocol Extensions 이전 포스팅에 이어서 계속해서 프로토콜에 대해 알아보도록 하겠습니.. 2022. 2. 5.
[Swift] Protocols (1) References https://docs.swift.org/swift-book/LanguageGuide/Protocols.html Contents Protocol Syntax Property Requirements Method Requirements Mutating Method Requirements Initializer Requirements Protocols as Types Delegation Protocols 프로토콜(protocol)은 메소드(methods)와 속성(properties), 그리고 특정 태스크나 일부 기능에 적합한 다른 요구사항들의 청사진(blueprint)를 정의합니다. 프로토콜은 요구사항들이 실제로 구현되는 클래스, 구조체, 또는 열거형에서 채택될 수 있습니다. 프로토콜의 요구.. 2022. 2. 5.
[Swift] Extensions Refences https://docs.swift.org/swift-book/LanguageGuide/Extensions.html Contents Extension Syntax Computed Properties Initializers Methods Subscripts Nested Types Extensions 익스텐션(extension)을 사용하면 이미 정의된 클래스(class), 구조체(structure), 열거형(enumeration), 또는 프로토콜(protocol) 타입에 새로운 기능을 추가할 수 있습니다. 이는 원본 코드를 건들이지 않고 타입을 확장할 수 있는 기능이며, retroactive modeling이라고 합니다. (익스텐션은 Objective-C의 카테고리와 유사하다고 합니다.) 익스.. 2022. 2. 3.
[Swift] Type Casting References https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html Contents Defining a Class Hierarchy for Type Casting Checking Type Downcasting Type Casting for Any and Any Object Type casting(타입 캐스팅)은 인스턴스의 타입을 체크하거나 해당 인스턴스를 인스턴스 자신의 클래스 계층에서 다른 수퍼클래스 또는 서브클래스로 처리하는 방법입니다. Swift에서 타입 캐스팅은 is와 as 오퍼레이터로 구현됩니다. 이 두 오퍼레이터는 값의 타입을 체크하거나 다른 타입으로 그 값을 캐스팅하는 간단하게 효과적인 방법을 제공합니다. Defining a.. 2022. 1. 29.
CUDA Instructions (2) - Instruction 최적화 References Professional CUDA C Programming Contents Single-Precision vs. Double-Precision Standard vs. Intrinsic Functions Understanding Atomic Instructions CUDA Instructions (1) 지난 포스팅을 통해서 CUDA의 Instruction들을 살펴보고, 그 특징들을 알아봤습니다. 이 Instruction들을 통해, CUDA 프로그램에서 명령어들을 최적화할 때 많은 선택 사항들이 있다는 것을 알 수 있습니다. Single-Precision or Double-Precision Standard or Intrinsic Functions Atomic function or Unsaf.. 2022. 1. 28.
CUDA Instructions (1) References Professional CUDA C Programming Contents Floating-Point Instructions Intrinsic and Standard Functions Atomic Instructions 이번 포스팅에서 Instruction을 명령어로 지칭하도록 하겠습니다. Instructions(명령어)은 프로세서에서 로직의 단일 단위를 나타냅니다. CUDA에서 작업하면서 직접적으로 명령어을 다루는 일은 드물지만, CUDA 커널 코드로부터 다른 명령어들이 언제 생성되고, 어떻게 고급 언어 기능들이 명령어로 변환되는지 이해하는 것은 중요합니다. 기능이 같은 두 명령어 중의 하나를 선택하는 것은 성능, 정확성을 포함한 다양한 프로그램의 특성에 영향을 미칠 수 있습니다. 이.. 2022. 1. 26.
Streams and Events (3) - Kernel and Data Transfer, Stream Callback References Professional CUDA C Programming Contents Overlapping Kernel Execution and Data Transfer Overlapping GPU and CPU Execution Stream Callbacks Overlapping Kernel Execution and Data Transfer Streams and Events (1) Streams and Events (2) - Concurrent Kernels 이전 포스팅에서 CUDA의 스트림과 이벤트에 대해서 살펴보고, 여러 스트림에서 커널들을 어떻게 동시에 실행시킬 수 있는지 살펴봤습니다. 이번 포스팅에서는 먼저 kernel과 data transfer를 어떻게 동시에 실행할 수 있는지에 대해 .. 2022. 1. 25.
Streams and Events (2) - Concurrent Kernels References Professional CUDA C Programming Contents Concurrent Kernel Execution False Dependencies on Fermi Device Adjusting Stream Behavior using Environment Variables Blocking Behavior of the Default Stream Overlapping Kernel Execution and Data Transfer 지난 포스팅에서 CUDA의 Stream과 Event에 대해서 알아봤습니다. Streams and Events (1) 이번에는 여러 예제를 통해서 실제로 어떻게 동작하는지 살펴보는 시간을 갖도록 하겠습니다. Concurrent Kernels in Non-N.. 2022. 1. 24.
Streams and Events (1) References Professional CUDA C Programming Contents CUDA Streams CUDA Events Stream Synchronization CUDA Dynamic Parallelism (동적 병렬) CUDA Dynamic Parallelism (동적 병렬) References https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html Programming Massively Parallel Processors Contents Dynamic Parallelism Overview Memory Data Visibility Execution Environme.. junstar92.tistory.com 동적 병렬에 대한.. 2022. 1. 23.