가입하고 포인트 받기
안드로이드 SIMD 병렬 프로그래밍 (ARM NEON을 활용한)
정영훈 외 1명 지음
프리렉
 펴냄
32,000 원
28,800원 
앱에서 포인트받고 구매
496쪽 | 2014-06-26
분량 두꺼운책 | 난이도 보통인책
상세 정보
SIMD 병렬 프로그래밍을 이용하여 애플리케이션의 성능을 향상시키는 방법을 다루는 책. 또한, 안드로이드 프로그래밍 초보자를 위해서 SDK와 NDK를 설치하고 실행하는 과정을 자세하게 설명한다.<BR> <BR> 더불어 NEON 병렬 함수를 그림과 예제로 하나하나 설명하므로 병렬 프로그램 초보자라도 SIMD 병렬 프로그램을 쉽게 이해할 수 있도록 하였다. 그리고 실습과 활용 예제를 통해 NEON 병렬 함수를 실무에 쉽게 적용할 수 있고, ARM 아키텍처의 특성을 이용한 최적화 방법도 설명하여 애플리케이션의 성능을 향상할 수 있는 모든 방법을 다룬다.
더보기
목차

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. 인라인 어셈블리어

더보기
저자 정보
정영훈 외 1명
Mgame, NHNGames를 거쳐 지금은 Digital Imaging Technology에서 근무 중이며 연세대 컴퓨터공학석사이다. 저서로는 《안드로이드 SIMD 병렬 프로그래밍》, 《CUDA 병렬 프로그래밍》, 《OpenMP 병렬 프로그래밍》, 《키넥트 프로그래밍》 등이 있다.
더보기
남긴 글 0
앱에서 바로 보기