장바구니 담기 close

장바구니에 상품을 담았습니다.

안드로이드 SIMD 병렬 프로그래밍

안드로이드 SIMD 병렬 프로그래밍

  • 정영훈
  • |
  • 프리렉
  • |
  • 2014-06-26 출간
  • |
  • 496페이지
  • |
  • 189 X 256 mm
  • |
  • ISBN 9788965400707
판매가

32,000원

즉시할인가

28,800

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
28,800

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

애플리케이션의 성능 향상을 책임지는 솔루션
안드로이드 애플리케이션은 게임과 영상, 기상, 보안 등 우리 생활 모든 곳곳에서 다양한 분야에 활용된다. 이러한 상황 속에서 모바일 환경은 스마트폰에서부터 웨어러블(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에 적용되고 있다.

목차

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

저자소개

저자 정영훈은 병렬 컴퓨팅의 전문가이며 최규달의 친구이다. 최근에는 스마트폰 병렬 컴퓨팅을 이용한 애플리케이션 최적화에 관심을 가지고 연구하고 있다. 저서로는 『SIMD 병렬 프로그래밍』과 『OpenMP 병렬 프로그래밍』, 『CUDA 병렬 프로그래밍』 등이 있다.

도서소개

『안드로이드 SIMD 병렬 프로그래밍』은 SIMD 병렬 프로그래밍을 이용하여 애플리케이션의 성능을 향상시키는 방법을 다룬다. 또한, 안드로이드 프로그래밍 초보자를 위해서 SDK와 NDK를 설치하고 실행하는 과정을 자세하게 설명한다. 더불어 NEON 병렬 함수를 그림과 예제로 하나하나 설명하므로 병렬 프로그램 초보자라도 SIMD 병렬 프로그램을 쉽게 이해할 수 있도록 하였다. 그리고 실습과 활용 예제를 통해 NEON 병렬 함수를 실무에 쉽게 적용할 수 있고, ARM 아키텍처의 특성을 이용한 최적화 방법도 설명하여 애플리케이션의 성능을 향상할 수 있는 모든 방법을 다룬다.

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.