ARM NEON을 활용한 안드로이드 SIMD 병렬 프로그래밍
도서+교보Only(교보배송)을 함께 15,000원 이상 구매 시 무료배송
15,000원 미만 시 2,500원 배송비 부과
20,000원 미만 시 2,500원 배송비 부과
15,000원 미만 시 2,500원 배송비 부과
1Box 기준 : 도서 10권
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
작가정보
저자 정영훈은 병렬 컴퓨팅의 전문가이며 최규달의 친구이다. 최근에는 스마트폰 병렬 컴퓨팅을 이용한 애플리케이션 최적화에 관심을 가지고 연구하고 있다. 저서로는 『SIMD 병렬 프로그래밍』과 『OpenMP 병렬 프로그래밍』, 『CUDA 병렬 프로그래밍』 등이 있다.
저자(글) 최규달
저자 최규달은 피처폰 시절부터 프로그램을 개발했고, 병렬 컴퓨팅을 활용하여 영상 처리를 가속하는 업무를 담당하고 있으며, 최근에는 스마트폰 병렬 프로그램 최적화를 진행하고 있다. 저서로는 『Cilk Plus 병렬 프로그래밍』과 『키넥트 프로그램 개발 입문서』 등이 있다.
목차
- 01장 안드로이드와 병렬 처리
1. 모바일 기기와 병렬 프로그램
1.1 모바일 기기의 요구 사항
1.2 병렬 프로그램을 활용한 요구 사항 충족
1.3 안드로이드 병렬 프로그램의 종류
1.4 SIMD 모델을 선택하는 이유
1.5 안드로이드 병렬 프로그램의 활용 분야
2. 안드로이드 SIMD 병렬 모델 NEON
2.1 NEON의 기본 개념
2.2 NEON 애플리케이션의 동작 구조
2.3 NEON의 특징과 장점
2.4 NEON의 활용 분야
2.5 NEON을 사용하는 이유: NEON과 일반 애플리케이션의 성능 비교
2.6 NEON 적용 과정
2.7 NEON 사용 방법
2.8 NEON 프로그램의 어려운 점
2.9 ARM NEON 병렬 프로그램의 역사
3. 모바일 기기의 전망
02장 안드로이드 SDK의 이해와 환경구축
1. 안드로이드
1.1 안드로이드의 역사
1.2 안드로이드의 버전
1.3 안드로이드의 성공 요인과 특징
2. 안드로이드 SDK
2.1 안드로이드 SDK의 구성
2.2 안드로이드 SDK의 최소 사양
2.3 안드로이드 개발에 필요한 도구들
3. SDK 설치하기
3.1 JDK 설치하기
3.2 이클립스와 안드로이드 SDK 설치하기
4. 안드로이드 애플리케이션 실행하기
4.1 AVD(에뮬레이터) 설정하기
4.2 Hello World 애플리케이션 실행하기
03장 안드로이드 NDK의 이해와 환경구축
1. 안드로이드 NDK
1.1 안드로이드 NDK란
1.2 안드로이드 NDK의 기능
1.3 NDK의 장단점
1.4 안드로이드의 내부 구조
1.5 Java와 NDK 애플리케이션의 실행 차이
1.6 NDK의 구성
1.7 NDK의 최소 사양
2. NDK 설치하기
3. 이클립스에 설정하기
04장 JNI의 이해
1. JNI란
2. JNI 문법
3. 자바에서 JNI(네이티브 코드) 호출
4. JNI 자료형 선언
5. JNI 배열
6. JNI에서 자바 클래스와 함수
7. 대용량 메모리 전달
8. Android.mk 파일
9. Application.mk 파일
10. JNI를 마치며
05장 스마트폰으로 애플리케이션 업로드
1. USB 업데이트
2. 이클립스를 통한 애플리케이션 업로드
06장 NEON의 기본 개념
1. NEON의 자료형
2. NEON 벡터의 크기
3. NEON 레지스터
4. ARM과 NEON 명령어
5. NEON 벡터 자료형
6. NEON의 레인
7. NEON의 연산
8. NEON의 플래그
9. NEON 함수 형식: 내장 함수
10. NEON 연산의 제한
11. NEON 함수 사용하기
11.1 헤더 파일 설정
11.2 Application.mk 파일 설정
11.3 Android.mk 파일 설정
11.4 CPU에서 NEON 함수의 사용 가능 여부 확인
12. 이클립스에서 NEON 실행하기
13. NEON의 기본 개념을 마치며
07장 NEON 로드와 저장 함수
1. NEON 로드 함수
1.1 단일 로드 함수
1.2 복수 로드 함수
2. NEON 저장 함수
2.1 단일 저장 함수
2.2 복수 저장 함수
3. 이 장을 마치며
08장 NEON 산술 연산과 확장
1. NEON의 기본 산술 연산
1.1 더하기 함수
1.2 빼기 함수
1.3 곱하기 함수
1.4 나눗셈
1.5 인접 레인 더하기 함수
1.6 최댓값 함수
1.7 최솟값 함수
1.8 NEON의 산술 연산 정리
2. NEON의 산술 연산 확장
2.1 Long 더하기 함수
2.2 Wide 더하기 함수
2.3 포화 더하기 함수
2.4 Narrow 더하기 함수
2.5 벡터 2개의 평균 구하기 함수
2.6 Long 빼기 함수
2.7 Wide 빼기 함수
2.8 포화 빼기 함수
2.9 Narrow 빼기 함수
2.9 빼기 후 평균 함수
2.11 Long 곱하기 함수
2.12 곱한 후 가감 함수
2.13 Long 인접 레인 더하기 함수
2.14 Long 인접 레인 누계 함수
2.15 인접 레인 최댓값과 최솟값 함수
2.16 산술 연산 확장에 대하여
3. 연습 예제: GetSum( ) 함수
09장 NEON 레인 설정과 조회
1. NEON 레인 설정
1.1 레인 추출 함수
1.2 레인 설정 함수
1.3 비트 패턴을 이용한 레인 초기화 함수
1.4 특정 레인으로 벡터 초기화 함수
1.5 레인 브로드캐스트 함수
1.6 레인 설정 함수를 마치며
2. NEON 레인 조회
2.1 레인 조회 함수
2.2 레인 조회 확장 함수
2.3 레인 조합 함수
2.4 레인 교환 함수
2.5 레인 조회 함수를 마치며
10장 NEON 비트와 시프트 연산
1. 비트 연산
1.1 NEON 논리 연산 함수
1.2 비트 단위 선택 함수
1.3 부호 비트 변환 함수
1.4 그 외 비트 관련 함수
2. NEON 시프트 연산
2.1 NEON Shift 함수
2.2 오른쪽 Shift 함수
2.3 왼쪽 Shift 함수
2.4 Shift 후 삽입 함수
2.5 나눗셈 구현
3. 비트와 시프트 연산을 마치며
11장 NEON 비교 연산과 절댓값
1. 비교 연산
1.1 같음(==) 비교 함수
1.2 크거나 같음(>=) 비교 함수
1.3 작거나 같음(<=) 비교 함수
1.4 큼(>) 비교 함수
1.5 작음(<) 비교 함수
1.6 테스트 비트 함수
1.7 비교 연산을 마치며
2. 연습 예제: NeonSelect( ) 함수
3. 절댓값
3.1 절댓값 함수
3.2 절대 차이 함수
3.3 절대 차이 누계 함수
3.4 절댓값 비교
3.5 절댓값 연산을 마치며
4. 연습 예제: NeonABS( ) 함수
5. 연습 예제: 최댓값 함수
12장 NEON 변환 연산
1. NEON 변환 연산
1.1 벡터 결합 함수
1.2 벡터 분할 함수
1.3 벡터 레인 축소 함수
1.4 벡터 레인 확대 함수
1.4 실수 형변환 함수
1.5 NEON 변환 연산을 마치며
2. NEON 재해석 함수
3. 연습 예제: 표준편차 함수
13장 NEON 수학, 이항, 스칼라 연산
1. 수학 연산
1.1 역수 함수
1.2 역수 제곱근 함수
1.3 역수 확장 함수
1.4 역수 제곱근 확장 함수
1.5 역수를 이용한 나누기 연산
2. NEON 이항 연산
2.1 벡터 교환 함수
2.2 인터리브와 디인터리브
3. NEON 스칼라 연산
3.1 스칼라 곱하기
3.2 스칼라 벡터 Long 곱하기
3.3 스칼라 곱하기 누계
3.4 스칼라 벡터 곱하기 누계
4. 연습 예제: 4×4 행렬 연산
5. 연습 예제: 4×4 행렬의 연산 속도 개선
14장 NEON 활용
1. 흑백 이미지 변환
2. Fade In, Fade Out
3. Sharpen 필터
4. Sharpen 필터 성능 개선
5. Sharpen 필터 + OpenMP
15장 ARM 아키텍처
1. ARM 아키텍처
2. ARM 명령어
3. ARM 파이프라인
4. 분기 예측
5. Cortex-A9
6. ARM 아키텍처의 중요성
16장 애플리케이션 최적화
1. 최적화란
2. 최적화 과정
3. 최적화 적용
3.1 최적화 옵션 사용
3.2 ARM 프로세서와 아키텍처 지정을 통한 최적화
3.3 자동 벡터화를 이용한 최적화
3.4 OpenMP와 NEON의 조합
3.5 파이프라인 명령어 제어
3.6 루프 구문 최적화
4. 최적화를 마치며
부록
1. NEON 어셈블리 명령어
2. 인라인 어셈블리어
출판사 서평
애플리케이션의 성능 향상을 책임지는 솔루션
안드로이드 애플리케이션은 게임과 영상, 기상, 보안 등 우리 생활 모든 곳곳에서 다양한 분야에 활용된다. 이러한 상황 속에서 모바일 환경은 스마트폰에서부터 웨어러블(Wearable) 기기까지 모든 사물로 진화하며 높은 성능을 요구하고 있다. 이렇게 모바일 환경이 고성능을 요구하게 되면서 이제 병렬 프로그래밍은 선택이 아니라 필수가 되었다. 병렬 프로그램은 한 번의 연산으로 여러 데이터를 처리하므로 대용량의 데이터를 연산하는 분야 즉, 그래픽과 동영상 처리, 음성 인식, 게임 등에서 높은 성능을 발휘할 수 있다.
이러한 모바일 병렬 프로그래밍 언어로 ARM NEON이 있다. NEON은 안드로이드 SIMD 병렬 프로그램 모델로, 하나의 명령어로 여러 데이터를 처리하는 데이터 병렬 프로그램이다.
이 책은 SIMD 병렬 프로그래밍을 이용하여 애플리케이션의 성능을 향상시키는 방법을 다룬다. 또한, 안드로이드 프로그래밍 초보자를 위해서 SDK와 NDK를 설치하고 실행하는 과정을 자세하게 설명한다. 더불어 NEON 병렬 함수를 그림과 예제로 하나하나 설명하므로 병렬 프로그램 초보자라도 SIMD 병렬 프로그램을 쉽게 이해할 수 있도록 하였다. 그리고 실습과 활용 예제를 통해 NEON 병렬 함수를 실무에 쉽게 적용할 수 있고, ARM 아키텍처의 특성을 이용한 최적화 방법도 설명하여 애플리케이션의 성능을 향상할 수 있는 모든 방법을 다룬다.
안드로이드 SIMD 병렬 모델 NEON
ARM SIMD는 명령어 수준의 병렬 프로그램 모델로, 일반적으로 SIMD(Single Instruction Multiple Data)로 불린다. SIMD는 가장 작은 수준의 병렬 프로그래밍으로 하나의 명령어로 여러 데이터를 처리하는 데이터 병렬 프로그램이며 ARM의 NEON이 여기에 속한다.
NEON은 안드로이드 운영체제를 탑재한 스마트폰에 사용되는 병렬 프로그래밍 언어이다. NEON의 병렬 처리는 스마트폰의 멀티미디어 데이터를 효율적으로 처리하고, 더 빠른 성능을 보장한다. 따라서 현재 다양한 스마트폰과 태블릿 PC에 적용되고 있다.
기본정보
ISBN | 9788965400707 |
---|---|
발행(출시)일자 | 2014년 06월 26일 |
쪽수 | 496쪽 |
크기 |
189 * 256
mm
|
총권수 | 1권 |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립