ARM MEON을 활용한 안드로이드 SIMD 병렬 프로그래밍
도서명:ARM MEON을 활용한 안드로이드 SIMD 병렬 프로그래밍
저자/출판사:정영훈,최규달/프리렉
쪽수:496쪽
출판일:2014-06-26
ISBN:9788965400707
목차
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. 인라인 어셈블리어