미리보기
인텔 제온 파이 프로세서 고성능 프로그래밍 (나이츠랜딩 판)
매니코어와 최신 병렬 컴퓨팅 시스템 프로그래밍으로 고성능 컴퓨팅 시대를 리드!
ISBN 978-89-315-5516-5
저자 짐 제퍼스, 제임스 레인더스, 아비나쉬 소다니
발행일 2018-01-17
분량 720쪽
편집 1도
판형 188x257
개정판정보 2018년 1월 17일
정가 39,000원↓
판매가 35,100
(10% off)
적립금 1,950원(5%)
  소득공제
도서소개

책 소개


매니코어와 최신 병렬 컴퓨팅 시스템 프로그래밍으로 고성능 컴퓨팅 시대를 리드!


인텔 제온 파이TM 프로세서


고성능 프로그래밍 나이츠랜딩 판

 

4차 산업혁명 시대, 빅데이터와 인공지능(AI) 시대를 맞아 고성능 컴퓨팅(High Performance Computing, HPC) 시대가 활짝 열렸다. 이 책은 과학자나 연구원들이 주로 사용하는 슈퍼컴퓨터의 프로그래머들, 인텔의 매니코어(many-core) 아키텍처와 프로그래밍에 어느 정도 익숙한 독자를 대상으로 집필된 고성능 병렬화 프로그래밍에 대한 책이다.

 

인텔은 단일 코어 프로세서 기반 시스템을 멀티코어(multi-core)에서 다시 매니코어(many-core) 프로세서 시스템으로 발전시켰는데, 인텔 블로그에 따르면 싱글 매니코어인 인텔 제온파이 7250 프로세서는 2개의 백열전구가 소비하는 전력량으로 초당 6조의 부동소수점 계산을 수행할 수 있어 현재 사용하는 가장 성능 좋은 컴퓨터보다 500배에서 1,000배 더 빠른 속도로 문제를 해결할 수 있는 컴퓨터를 만드는 것도 가능해질 것으로 전망된다


이 책은 총 세 개의 섹션으로 구분되어 있다. 섹션 1 나이츠랜딩(Knights Landing(KNL), 인텔 제온 파이 프로세서(코드명 해스웰)의 판(edition) ), 섹션 2 병렬 프로그래밍, 섹션 3 Pearls이다. 섹션 1에서는 나이츠랜딩 아키텍처와 고대역폭 메모리, 클러스터 모드, 통합 패브릭 등을 다룬다. 또한 매니코어가 등장하게 된 배경과 매니코어 프로그래밍 개요를 살펴 본다. 섹션 2에서는 매니코어의 확장성을 고려한 프로그래밍을 중점 설명한다. 섹션 3에서는 실제 애플리케이션에서의 병렬 프로그래밍, 즉 분자 동역학, 고성능 지진 시뮬레이션, WRF(날씨 연구 및 예측), 다체 시뮬레이션, 머신러닝, 트리니티 계산 과제들, 양자 색역학 등 다양한 실제 사례와 애플리케이션에서의 프로그래밍 예제와 성능 비교 분석을 살펴본다.

 

머신러닝, 인공지능, 지진이나 기타 다양한 분야를 연구하는 과학자나 슈퍼컴퓨팅 프로그래머들에게 일독을 권할 만하다.

 

  

저자 소개


짐 제퍼스(James L. Jeffers) 인텔 제너럴 엔지니어겸 시각화 책임자

짐은 HPC 플랫폼 그룹의 수석 엔지니어이자 엔지니어링 매니저이다. 그는 고성능 컴퓨팅, 비주얼 컴퓨팅, 디지털 TV 및 데이터 통신 분야에서 25년 이상 소프트웨어 설계 및 기술 리더십 경험을 갖고 있다. 그의 이전 연구에는 미식 축구의 전자 첫 다운 라인(Electronic First Down Line) ’ 뒤에 가상 이미지를 삽입하는 TV 기술 개발도 있다. 그는 제임스 레인더스(James Reinders) 와 인텔 제온 파이 프로그래밍에 대한 3권의 책을 공동 저술/편집했다. 그는 현재 HPC 시각화 팀을 이끌고 있다.

 

제임스 레인더스(James R. Reinders) 인텔 이사겸 프로그래밍 모델 아키텍트

제임스는 병렬 프로그래밍을 발전시키는데 기여하고 있다. 그의 프로젝트 중에는 세계 최초가 여러 개 있다. 최초의 Tflop/s 슈퍼컴퓨터(ASCI Red) , 최초의 Tflop/s 마이크로 프로세서(나이츠코너) , 최초의 3Tflop/s 컴퓨터(ASCI Red 업그레이드) , 최초의 3Tflop/s 마이크로 프로세서(나이츠랜딩) . 이 책은 그의 여덟 번째 프로그래밍 책이다. 인텔 제온 파이 프로그래밍에서 Jim Jeffers와 함께 다른 3권의 책을 공동 저술/편집했다. 그의 연구는 병렬 프로그래밍 모델, 특히 성능 이식성을 둘러싼 문제에 초점을 맞추고 있다.

 

아비나쉬 소다니(Avinash Sodani) 박사, 인텔 선임 수석 엔지니어겸 나이츠 랜딩 프로 세서의 수석 아키텍트

아비나쉬는 선임 수석 엔지니어이며 나이츠랜딩의 수석 설계자로서 전반적인 아키텍처를 담당한다. 나이츠랜딩을 초기 정의에서 구현 및 최종 제품에 이르는 설계 팀을 이끌었다. 이전에는 네할렘 및 웨스트미어(Westmere) 프로세서의 설계자였으며 해스웰 프로세서에 대한 초기 작업을 수행하였다. 아비나쉬는 멀티코어/매니코어 프로세서용 코어 마이크로 아키텍처에 대한 심층적인 기술 전문성을 갖춘 고성능 컴퓨팅(HPC) 을 전문으로 하고 있다.

 

감역자 소개


나승주 인텔코리아 상무

제어계측공학과에서 포트란 및 C를 배우고 이런저런 조그마한 장비들을 만들어 갖고 놀기 위해 프로그래밍을 한 것이 프로그래밍 경력의 전부이다. 삼성전자 컴퓨터사업부에서 노트북을 개발하였으며 인텔에 서버 개발 지원 엔지니어로 입사했다. 이후 아시아 태평양 및 일본 지역 고성능 컴퓨팅(HPC) 제품 마케팅 업무를 하고 있다. HPC에 관련된 인텔의 제품 및 기술을 전파하여 멀티코어 및 매니코어 프로세서에서 소프트웨어의 코드 최적화에 관심을 갖고 있다. 현재는 인텔 데이터센터 비지니스 총괄 업무를 하고 있다.

 

역자 소개(번역 chapter)


민병훈 대한컨설팅 상무이사 1, 2, 3, 20, 22, 23장 번역

서강대 수학과 졸업하였고, 현재는 대한컨설팅에서 교육 및 교재를 개발하고 있다. 리눅스OS, 인텔 병렬 프로그래밍과 최적화 워크샵, 파이썬 프로그래밍, 머신 러닝 등 다양한 분야의 교육을 담당하고 이다. 한국디지털에서 시스템 엔지니어 및 트레이닝 스페셜리스트였고, 에이펙스이십일에서 검색엔진 알타비스타를, 크래웍스에서는 TTS((Text-To-Speech), ()한국사이버테크에서는 HA/DR, 사이밴티지 사(Scivantage Inc.)에서는 윈도우, 유닉스, 리눅스 등 다양한 운영체제 기반의 시스템 컨설턴트로 활약한 바 있다.

 

이진필 RIKEN AICS에서 수퍼컴퓨팅 개발 연구 4, 5, 6, 16장 번역

역자 이진필은 일본 츠쿠바 대학에서 컴퓨터공학을 전공했으며 대학원 박사과정 재학 중에 병렬 프로그래밍 언어 XcalableMP(XcalableMP는 클러스터 컴퓨팅을 위한 PGAS 병렬 프로그래밍 언어이며, K Computer와 같은 대규모 병렬 시스템에서도 사용할 수 있다)의 사양 설계 및 컴파일러 개발을 수행하였다. 최근에는 제온 파이 등 같은 매니코어 아키텍처의 SIMD 명령 생성에 관한 연구 및 FPGA와 같은 reconfigurable 아키텍처의 컴파일러 구현 방법에 관하여 공부 중이다. 2013년부터 2015년 사이에 KISTI 사용자 지원실에 근무하면서 GPU 및 클러스터 컴퓨터를 대상으로 사용자 코드의 병렬화를 수행했으며, 현재 일본 RIKEN AICS에서 ARM 프로세서를 기반으로 한 차세대 슈퍼컴퓨터 개발에 관한 연구를 하고 있다.

 

류훈 한국과학기술정보연구원(KISTI) 슈퍼컴퓨팅 본부 책임연구원 7, 8, 9, 10장 번역

서울대학교 전기공학부를 졸업하고 미 스탠퍼드/퍼듀(Stanford/Purdue) 대학에서 전자공학을 전공으로 석/박사 학위를 취득했다. 삼성전자 DS 부문 System LSI 사업부에서 근무했고 현재 한국 과학기술정보연구원(KISTI) 슈퍼컴퓨팅본부의 책임연구원으로 재직중이다. 거대계산의 병렬처리를 이용해 반도체 소재/소자의 특성 계산 연구를 수행하고 있으며, 아태지역 최초로 한국에 인텔 초병렬 컴퓨팅 연구사업(Intel Parallel Computing Center)을 유치해 연구 책임을 맡고 있다. 광전자소자/범용원소 기반의 양자정보처리 시스템의 설계, 거대 행렬로 묘사된 편미분방정식 계산의 병렬처리 등 을 주제로 50여 편 이상의 연구논문을 게재하였으며, 최대 36,000 코어에서 계산의 확장성이 입증된 전자소자 모델링 소프트웨어 패키지 NEMO(NanoElectronics MOdeling tool)를 퍼듀 대학과 공동으로 개발하였다. 저서로 Multimillion Atom Simulation of Electronic Optical Properties of Nanoscale Devices Using NEMO 3-D등이 있다.


이창성 삼성전자, Analytics 랩장 11, 12, 13, 14장 번역

병렬 처리 기반 수치해석 분야로 공부하고 나서 회사에 입사한 이후에, 인텔 서버 클러스터 기반 SW 솔루션 개발업무를 수행했었고, 스마트폰에 들어가는 멀티코어 기반 AP(Application Processor)를 활용한 성능 최적화 업무도 담당한 바 있다. 이 책에 소개된 내용들이 인텔기반 서버에서만 적용되는 기술이 아니고, 우리가 매일 매일 쓰고 있는 스마트폰의 어플리케이션의 성능 개선에서도 널리 활용되고 있다는 점은 참 흥미로운 사실이라고 생각한다. 지금은 5G로 향해가는 네트워크 시스템의 상태분석 및 최적화 업무를 수행하고 있다. 이러한 경험을 기반으로 이 책의 내용들은 이론적인 내용보다는 현업 업무에도 적용될 수 있는 실제적인 내용들이라는 것을 독자들에게 꼭 강조하고 싶다.

 

남덕윤 한국과학기술정보연구원(KISTI) 슈퍼컴퓨터소프트웨어연구실장 15, 17, 18, 19장 번역

분산시스템 전공자로 2004년부터 한국과학기술정보연구원에 재직하고 있으며, 현재 슈퍼컴퓨터개발센터 내 슈퍼컴퓨터소프트웨어연구실 실장을 맡고 있다. 최근 관심 분야로는 시스템 분석을 위한 프로파일링 기술, 자체 시스템 개발을 위한 시스템 시뮬레이션 및 모델링에 관심을 갖고 있다.

 

김형진 삼성전자 21, 24, 25, 26장 번역

자연계에 존재하는 기본적인 힘 중 하나인 강력을 다루는 학문인 격자게이지 이론을 전공하여 박사학위 후, 2년 반의 박사후 과정을 마치고 현재는 기업의 슈퍼컴 센터에서 재직 중. 계산 과학 알고리즘, GPU 및 병렬 컴퓨팅, 최적화에 관심이 많으며 회사에서는 이와 관련된 업무를 수행중이다.

현재는 삼성전자에 재직 중이며 서울대학교 학사, 박사 학위를 받았고, 미국 뉴욕의 부룩헤이븐 국립연구소에서 연구원을 지낸 바 있다.

 

도종관 인텔코리아 부장 20, 22, 23장 번역

고등학교까지는 아무 생각 없이 공부만 했다가 대학에서는 아무 생각 없이 물리학과에 지원했다. 대학에서도 아무 생각 없이 지내다가 막상 취직을 해서는 컴퓨터와 관련된 일을 하게 되었다. 컴퓨터 조립, 전산실 바닥 공사, 네트워크 배선 공사에서부터 시스템 관리자, 네트워크 관리자 등을 전전하다가 윈도우 환경에서 MFC를 이용한 프로그램 개발을 하면서 하드웨어를 직접 만지는 일을 어느 정도 벗어나게 되었다. 그 후엔 제대로 배우지도 못한 포트란 언어와 C/C++ 언어로 프로그램 이식과 최적화를 하는 일로 살아가고 있다. 요즘은 어릴 때 가까이 하지도 않았던 인문학 서적을 읽고 있다. 물리도 컴퓨터도 인문학도 제대로 알지 못하지만 알려고 노력하며 살고 있다.

 

 

 

목차

 

목차


감사 인사 12

서문 18

머리말 24

역자 서문 30

역자 소개 31

 

SECTION나이츠랜딩

Chapter 1 / 매니코어 프로그램 소개 4

 

매니코어 프로그래밍 소개 5

추세: 더 많은 병렬성 5

인텔 제온 파이 프로세서가 필요한 이유 7

프로세서 대 코프로세서 9

고도의 병렬 실행을 위한 측정법 10

GPU는 어떤가? 11

필요한 포팅이 부족하면 즐겨라, 그렇지만 계속 조율하라! 11

성능을 위한 변환 12

하이퍼 - 스레딩 대 멀티스레딩 12

프로그래밍 모델 13

여기서 섹션 II로 건너 뛸 수 있다 13

추가 정보 14

 

Chapter 2 / 나이츠랜딩 개요 16

개요 16

명령어 세트 17

아키텍처 개요 18

만든 동기: 우리의 비전과 목적 22

요약 24

추가 정보 25

 

 

Chapter 3 / MCDRAM 및 클러스터 모드 프로그래밍 26

 

클러스터 모드 프로그래밍 27

메모리 모드 프로그래밍 29

메모리 모드 및 MCDRAM 사용 가능 확인 방법 47

할당과 스레딩의 SNC 성능 영향 48

NUMA 노드 번호를 하드코딩하지 않는 방법 50

MCDRAM에 무엇을 넣을 것인지 결정하는 접근 방법 51

모드를 변경하기 위해 재부팅해야 하는 이유 59

BIOS 59

요약 64

추가 정보 65

 

 

Chapter 4 / 타일 아키텍처 66

 

클러스터 모드 75

메모리 인터리빙 80

메모리 모드 82

클러스터 모드와 메모리 모드의 상호 작용 86

요약 87

추가 정보 87

 

Chapter 5 / 인텔 옴니패스 패브릭 88

 

개요 88

성능과 병렬 확장성 91

전송층 API 93

서비스 품질(QoS) 95

가상 패브릭 99

유니캐스트 어드레스 해결 104

멀티캐스트 어드레스 해결 106

요약 108

추가 정보 108

 

Chapter 6 / 마이크로아키텍처 최적화 어드바이스 110

 

코어당 1, 2 혹은 4스레드(가끔 3스레드) 로 얻을 수 있는 최적 성능 111

메모리 서브시스템 112

마이크로아키텍처 뉘앙스(타일) 113

Direct-mapped MCDRAM 캐시 124

조언 AVX-512 명령을 사용하라 125

요약 152

추가 정보 153

 

 

SECTION병렬 프로그래밍

Chapter 7 / 나이츠랜딩을 이용한 프로그래밍 개요 156

 

리팩터링을 해야 하는가, 하지 말아야 하는가, 그것이 문제다 157

응용 코드의 진화적 최적화 158

응용 코드의 혁명적 최적화 160

선택할 때와 버릴 때를 알아야 한다 160

추가 정보 161

 

Chapter 8 / 태스크와 스레드 기반의 병렬 처리 162

 

OpenMP 166

포트란 2008 170

인텔 TBB 173

hStreams 180

요약 181

추가 정보 181

 

Chapter 9 / 벡터화 183

 

벡터화는 왜 중요한가? 184

벡터화는 어떻게 하는가? 184

벡터화를 위한 세 가지 접근 방법 185

벡터화 방법론 6단계 186

캐시를 통한 스트리밍: 데이터 레이아웃, 정렬, 프리페칭 등 189

컴파일러 팁 199

컴파일러 옵션 203

컴파일러 지시문 205

벡터화를 촉진하기 위한 배열 섹션을 사용하자 223

컴파일러가 생성한 것들을 활용하자: 어셈블리 코드 검사 226

벡터화에 따른 수치 결과의 변화 228

요약 228

추가 정보 229

 

 

Chapter 10 / 백터화 어드바이저 230

 

나이츠랜딩에서 인텔 어드바이저 사용하기 231

서베이 리포트(Survey Report) 를 이용한 AVX-512 코드 개발 및 성능 개선 233

메모리 액세스 패턴(MAP) 리포트 251

AVX-512 GATHER/SCATTER 프로파일러 252

Mask Utilization(마스크 유효성 검사) 프로파일러와 FLOPS 프로파일러 256

어드바이저 루프라인 리포트 258

AVX-512 지원 하드웨어 없이 AVX-512 코드의 특성 탐색 260

어드바이저 활용 예시 계산 화학 코드의 분석 261

요약 270

추가 정보 271

 

 

Chapter 11 / SDLT를 활용한 벡터화 272

 

SDLT 소개 272

시작하기 274

SDLT 기본 276

SIMD 기법을 적용한 3차원 점 좌표 값의 평준화 예제 278

AOS 메모리 구조 기반 SIMD 수행의 문제점 281

SIMDUnit-Stride 메모리 접근 선호 282

알파 블렌딩 참조 코드 283

SDLT를 이용한 알파 블렌딩 286

추가 특징 290

요약 290

추가 정보 291

 

Chapter 12 / AVX-512 인트린직을 이용한 벡터화 292

 

인트린직이란? 292

AVX-512 미리 보기 299

나이츠코너로 마이그레이션 302

AVX-512 지원 여부 검색 303

AVX-512 명령어 집합 학습하기 307

AVX-512 인트린직 학습하기 307

AVX-512 인트린직 사용을 위한 단계별 예시 309

인트린직 코드를 활용한 코드의 결과 323

추가 정보 324

 

 

Chapter 13 / 성능 최적화 라이브러리들 326

 

인텔 최적화 라이브러리 개요 326

인텔 Math Kernel Library 개요 328

인텔 DAAL 개요 330

MKLDAAL 함께 쓰기 332

인텔 IPP 라이브러리 개요 333

인텔 최적화 라이브러리들과 인텔 컴파일러 335

다이렉트 호출 방식의 라이브러리 활용 336

최적화 라이브러리 사용 시, 나이츠랜딩으로 오프로딩 338

계산 정확도의 선택과 정확도 차이 343

동적 라이브러리 성능을 위한 팁 344

추가 정보 345

 

 

Chapter 14 / 프로파일링 및 시간 분석 346

나이츠랜딩 최적화 개요 346

이벤트 모니터링 레지스터들 348

효율화 지표들 349

잠재적인 성능 이슈들 355

인텔 VTUNE AMPLIFIER XE 제품 366

PAPI 367

MPI 분석: ITAC 367

HPC 툴킷 368

TAU 368

시간 측정 369

요약 370

추가 정보 371

 

 

Chapter 15 / MPI 372

 

노드간 병렬화 372

나이츠랜딩에서의 MPI 372

MPI 개요 373

MPI 애플리케이션을 수행하는 방법 375

MPI 애플리케이션 실행 분석하기 381

MPI 애플리케이션 최적화 388

이기종 클러스터 391

MPI 코딩의 최신 동향 393

모든 것을 함께 활용하기 399

요약 401

추가 정보 401

 

Chapter 16 / 공유할 것인가 말 것인가(그것이 문제로다) 404

 

왜 나이츠랜딩에서 PGAS를 이용해야 하는가? 407

PGAS 모델을 이용한 프로그래밍 408

성능 평가 416

PGAS를 넘어서 418

요약 418

추가 정보 419

 

Chapter 17 /소프트웨어 정의 가시화 420

 

소프트웨어 정의 가시화의 동기 421

소프트웨어 정의 가시화 아키텍처 423

OpenSWR: OpenGL 래스터-그래픽스 소프트웨어 렌더링 425

Embree: 고성능 레이 트레이싱 커널 라이브러리 427

OSPRay: 확장성 있는 레이 트레이싱 프레임워크 429

요약 436

이미지 권한 437

추가 정보 438

 

Chapter 18 / KNL로 오프로드 439

 

KNL을 이용하는 오프로드 프로그래밍 모델 439

프로세서 vs 코프로세서 440

오프로드 모델 고려사항 441

OpenMP 타깃 지시문 442

호스트와 대상에서 동시 실행 445

패브릭을 통한 오프로드 447

요약 448

추가 정보 448

 

Chapter 19 /전력 분석 449

 

전력 수요는 엑사급으로 이어진다 449

POWER 101 451

하드웨어 기반 전력 분석 기술들 452

소프트웨어 기반 KNL 전력 분석기 455

매니코어 플랫폼 소프트웨어 패키지 전력 도구들 466

RAPL 468

KNL 성능 프로파일링 471

인텔 원격 관리 모듈 475

요약 477

추가 정보 478

 

 

SECTIONPearls

 

Chapter 20 / LAMMPS에서 고전 분자 동역학 계산의 최적화 작업 482

 

분자 동역학 482

LAMMPS 485

나이츠랜딩 프로세서 486

LAMMPS 최적화 488

데이터 정렬 488

데이터 유형 및 구조 489

벡터화 491

이웃 목록 499

장거리 정전기학 503

MPIOpenMP 병렬화 503

성능 결과 505

시스템, 실행파일 생성과 수행환경 506

작업 부하들 507

유기 광전지 분자 507

탄화수소 혼합물 508

용매화된 지질 이중층에서의 로돕신 단백질 508

굵은 입자(coarse-grain) 액정 시뮬레이션 508

굵은 입자 물 시뮬레이션 509

요약 510

감사의 글(Acknowledgement) 510

추가 정보 510

 

 

Chapter 21 / 고성능 지진 시뮬레이션 512

 

고차원 지진 시뮬레이션 513

수학적 배경 513

애플리케이션 특성 517

계산 중추로서의 인텔 아키텍처 527

고효율의 작은 행렬 커널 527

희소행렬 커널의 생성과 희소/조밀 커널의 선택 528

조밀 행렬 커널의 생성: AVX2 528

조밀 행렬 커널의 생성: AVX-512 530

커널 성능 벤치마킹 532

나이츠랜딩의 색다른 메모리 하부 체계 통합 533

성능 평가 537

머라피 산의 화산 시뮬레이션 537

1992년의 랜더스 지진 539

요약 그리고 기억할 것들 541

추가 정보 542

 

 

Chapter 22 / WRF 개요 543

 

병목이 없는 비교적 평평한 WRF 성능 특성 544

인텔 매니코어(인텔 제온 파이 제품군) 에서 WRF의 역사 544

나이츠랜딩에서 WRF 초기 성능 결과 545

인텔 제온 및 인텔 제온 파이 시스템용 WRF 컴파일 547

WRF CONUS 12km 벤치마크 성능 548

MCDRAM 대역폭 549

벡터화: AVX-2 대비 AVX-512의 성능 향상 551

코어 스케일링 553

요약 554

추가 정보 554

 

Chapter 23 / 다체 (N-body) 시뮬레이션 555

 

비전산 전공 과학자를 위한 병렬 프로그래밍 555

단계별 개선 556

다체 시뮬레이션 557

최적화 559

초기 구현(최적화 단계 0) 559

스레드 병렬 처리(최적화 단계 1) 561

스칼라 성능 최적화(최적화 단계 2) 563

SOA를 사용한 벡터화(최적화 단계 3) 565

메모리 통행량(최적화 단계 4) 567

MCDRAM이 성능에 미치는 영향 569

요약 570

추가 정보 570

 

 

Chapter 24 / 머신러닝 572

 

컨볼루션 신경망(CNN) 573

벡터화와 레지스터 블록킹 580

OverFeat-FAST 결과 585

추가 정보 595

 

 

Chapter 25 / 트리니티 계산과제들 596

 

원본 코드 성능(Out of the box performance) 596

MiniGhostOpenMP 성능 최적화 615

요약 624

추가 정보 624

 

 

Chapter 26 / 양자 색역학(Quantum Chromodynamics) 626

LQCD 626

QPhiX 라이브러리와 코드 생성기 627

Wilson-Dslash 연산자 628

QPhiX 코드 생성기 설정 631

실험 환경 설정 634

결과 635

결론 642

추가 정보 643

 

기여자 644

용어 사전 658

색인 671

 

 

저자
부록/예제소스
정오표
    최근 본 상품 1