دسترسی نامحدود
برای کاربرانی که ثبت نام کرده اند
برای ارتباط با ما می توانید از طریق شماره موبایل زیر از طریق تماس و پیامک با ما در ارتباط باشید
در صورت عدم پاسخ گویی از طریق پیامک با پشتیبان در ارتباط باشید
برای کاربرانی که ثبت نام کرده اند
درصورت عدم همخوانی توضیحات با کتاب
از ساعت 7 صبح تا 10 شب
دسته بندی: برنامه نويسي ویرایش: نویسندگان: Matthew Scarpino سری: ISBN (شابک) : 1617290173, 9781617290176 ناشر: Manning Publications سال نشر: 2011 تعداد صفحات: 458 زبان: English فرمت فایل : PDF (درصورت درخواست کاربر به PDF، EPUB یا AZW3 تبدیل می شود) حجم فایل: 7 مگابایت
کلمات کلیدی مربوط به کتاب OpenCL در عمل: نحوه تسریع گرافیک و محاسبات: کتابخانه، ادبیات کامپیوتر، CUDA / OpenCL
در صورت تبدیل فایل کتاب OpenCL in Action: How to Accelerate Graphics and Computations به فرمت های PDF، EPUB، AZW3، MOBI و یا DJVU می توانید به پشتیبان اطلاع دهید تا فایل مورد نظر را تبدیل نمایند.
توجه داشته باشید کتاب OpenCL در عمل: نحوه تسریع گرافیک و محاسبات نسخه زبان اصلی می باشد و کتاب ترجمه شده به فارسی نمی باشد. وبسایت اینترنشنال لایبرری ارائه دهنده کتاب های زبان اصلی می باشد و هیچ گونه کتاب ترجمه شده یا نوشته شده به فارسی را ارائه نمی دهد.
SummaryOpenCL in Action یک ارائه کامل و عملی از OpenCL است که به توسعهدهندگان نشان میدهد چگونه برنامههای کاربردی با کارایی بالا را خودشان بسازند. با ارائه مفاهیم اصلی پشت OpenCL، از جمله محاسبات برداری، برنامه نویسی موازی، و عملیات چند رشته ای شروع می شود و سپس شما را گام به گام از ساختارهای داده ساده به توابع پیچیده راهنمایی می کند. درباره فناوری هر سیستمی که دارید، احتمالاً قدرت پردازش خام آن بیشتر از آنچه شما استفاده می کنید دارد. OpenCL یک زبان برنامه نویسی با کارایی بالا است که قدرت محاسباتی را با اجرا بر روی CPU ها، پردازنده های گرافیکی و سایر دستگاه های اعداد خردکننده به حداکثر می رساند. برای کارهای حساس به سرعت مانند محاسبات برداری، عملیات ماتریسی و شتاب گرافیکی عالی است. درباره این BookOpenCL in Action تئوری محاسبات موازی را با واقعیت عملی ساخت برنامه های کاربردی با کارایی بالا با استفاده از OpenCL ترکیب می کند. ابتدا شما را از طریق ساختارهای داده اساسی به روشی بصری راهنمایی می کند. سپس، تکنیک هایی را برای مرتب سازی با سرعت بالا، پردازش تصویر، عملیات ماتریس و تبدیل فوریه سریع توضیح می دهد. کتاب با نگاهی عمیق به موضوع بسیار مهم شتاب گرافیک به پایان می رسد. مثالهای چالشبرانگیز متعدد راههای مختلفی را برای آزمایش کدهای کاری به شما ارائه میدهند. پسزمینه در C یا C++ مفید است، اما نیازی به قرار گرفتن در معرض OpenCL قبلی نیست. چه چیزی InsideLearn OpenCL گام به گام هزاران کد حاشیه نویسی الگوریتم های آزمایش شده برای حداکثر کارایی ********** فهرست مطالب قسمت 1 مبانی برنامه نویسی OPENCL معرفی برنامه نویسی میزبان OpenCL: ساختارهای داده بنیادی برنامه نویسی میزبان: انتقال داده و پارتیشن بندی هسته برنامه نویسی: انواع داده ها و حافظه دستگاه برنامه نویسی هسته: اپراتورها و توابع پردازش تصویر رویدادها، پروفایل سازی و همگام سازی توسعه با C++ توسعه با جاوا و پایتون اصول عمومی کدگذاری قسمت 2 کدگذاری الگوریتم های عملی در OPENCL کاهش و مرتب سازی ماتریس ها و تجزیه QR پردازش پراکنده سیگنال و تبدیل فوریه سریع قسمت 3 شتاب دادن به OPENGL با OPENCL ترکیب بافت های OpenCL و OpenGL و رندربافرها
SummaryOpenCL in Action is a thorough, hands-on presentation of OpenCL, with an eye toward showing developers how to build high-performance applications of their own. It begins by presenting the core concepts behind OpenCL, including vector computing, parallel programming, and multi-threaded operations, and then guides you step-by-step from simple data structures to complex functions. About the TechnologyWhatever system you have, it probably has more raw processing power than you're using. OpenCL is a high-performance programming language that maximizes computational power by executing on CPUs, graphics processors, and other number-crunching devices. It's perfect for speed-sensitive tasks like vector computing, matrix operations, and graphics acceleration. About this BookOpenCL in Action blends the theory of parallel computing with the practical reality of building high-performance applications using OpenCL. It first guides you through the fundamental data structures in an intuitive manner. Then, it explains techniques for high-speed sorting, image processing, matrix operations, and fast Fourier transform. The book concludes with a deep look at the all-important subject of graphics acceleration. Numerous challenging examples give you different ways to experiment with working code.A background in C or C++ is helpful, but no prior exposure to OpenCL is needed. What's InsideLearn OpenCL step by step Tons of annotated code Tested algorithms for maximum performance*********** Table of ContentsPART 1 FOUNDATIONS OF OPENCL PROGRAMMING Introducing OpenCL Host programming: fundamental data structures Host programming: data transfer and partitioning Kernel programming: data types and device memory Kernel programming: operators and functions Image processing Events, profiling, and synchronization Development with C++ Development with Java and Python General coding principles PART 2 CODING PRACTICAL ALGORITHMS IN OPENCL Reduction and sorting Matrices and QR decomposition Sparse matrices Signal processing and the fast Fourier transform PART 3 ACCELERATING OPENGL WITH OPENCL Combining OpenCL and OpenGL Textures and renderbuffers
OpenCL in Action......Page 1
brief contents......Page 6
contents......Page 8
preface......Page 16
acknowledgments......Page 18
Audience......Page 20
Roadmap......Page 21
Code conventions......Page 22
About the cover illustration......Page 23
Foundations of OpenCL programming......Page 24
Introducing OpenCL......Page 26
1.1 The dawn of OpenCL......Page 27
1.2 Why OpenCL?......Page 28
1.2.2 Standardized vector processing......Page 29
1.2.3 Parallel programming......Page 30
1.3 Analogy: OpenCL processing and a game of cards......Page 31
1.4 A first look at an OpenCL application......Page 33
1.5 The OpenCL standard and extensions......Page 36
1.7 Summary......Page 37
Host programming: fundamental data structures......Page 39
2.1 Primitive data types......Page 40
2.2.1 Creating platform structures......Page 41
2.2.2 Obtaining platform information......Page 42
2.2.3 Code example: testing platform extensions......Page 43
2.3.1 Creating device structures......Page 45
2.3.2 Obtaining device information......Page 46
2.3.3 Code example: testing device extensions......Page 47
2.4 Managing devices with contexts......Page 48
2.4.1 Creating contexts......Page 49
2.4.3 Contexts and the reference count......Page 51
2.4.4 Code example: checking a context’s reference count......Page 52
2.5.1 Creating programs......Page 53
2.5.2 Building programs......Page 54
2.5.3 Obtaining program information......Page 56
2.5.4 Code example: building a program from multiple source files......Page 58
2.6.1 Creating kernels......Page 59
2.6.2 Obtaining kernel information......Page 60
2.6.3 Code example: obtaining kernel information......Page 61
2.7 Collecting kernels in a command queue......Page 62
2.7.2 Enqueuing kernel execution commands......Page 63
2.8 Summary......Page 64
Host programming: data transfer and partitioning......Page 66
3.1 Setting kernel arguments......Page 67
3.2.1 Allocating buffer objects......Page 68
3.2.2 Creating subbuffer objects......Page 70
3.3.1 Creating image objects......Page 71
3.3.2 Obtaining information about image objects......Page 74
3.4 Obtaining information about buffer objects......Page 75
3.5.1 Read/write data transfer......Page 77
3.5.2 Mapping memory objects......Page 81
3.5.3 Copying data between memory objects......Page 82
3.6 Data partitioning......Page 85
3.6.1 Loops and work-items......Page 86
3.6.2 Work sizes and offsets......Page 87
3.6.4 Work-groups and compute units......Page 88
3.7 Summary......Page 90
Kernel programming: data types and device memory......Page 91
4.1 Introducing kernel coding......Page 92
4.2 Scalar data types......Page 93
4.2.1 Accessing the double data type......Page 94
4.2.2 Byte order......Page 95
4.3.1 The float data type......Page 96
4.3.2 The double data type......Page 97
4.3.3 The half data type......Page 98
4.3.4 Checking IEEE-754 compliance......Page 99
4.4 Vector data types......Page 100
4.4.1 Preferred vector widths......Page 102
4.4.3 Reading and modifying vector components......Page 103
4.4.4 Endianness and memory access......Page 107
4.5.1 Device model analogy part 1: math students in school......Page 108
4.5.2 Device model analogy part 2: work-items in a device......Page 110
4.5.3 Address spaces in code......Page 111
4.6 Local and private kernel arguments......Page 113
4.6.2 Private arguments......Page 114
4.7 Summary......Page 116
Kernel programming: operators and functions......Page 117
5.1 Operators......Page 118
5.2 Work-item and work-group functions......Page 120
5.2.1 Dimensions and work-items......Page 121
5.2.2 Work-groups......Page 122
5.2.3 An example application......Page 123
5.3.2 Loading vectors from a scalar array......Page 124
5.3.3 Storing vectors to a scalar array......Page 125
5.4.1 Arithmetic and rounding functions......Page 126
5.4.2 Comparison functions......Page 128
5.4.4 Trigonometric functions......Page 129
5.4.5 Miscellaneous floating-point functions......Page 131
5.5 Integer functions......Page 132
5.5.1 Adding and subtracting integers......Page 133
5.5.2 Multiplication......Page 134
5.5.3 Miscellaneous integer functions......Page 135
5.6.1 Shuffle functions......Page 137
5.6.2 Select functions......Page 139
5.7 Vector test functions......Page 141
5.8 Geometric functions......Page 143
5.9 Summary......Page 145
Image processing......Page 146
6.1.1 Image objects on the host: cl_mem......Page 147
6.1.2 Samplers on the host: cl_sampler......Page 148
6.1.3 Image objects on the device: image2d_t and image3d_t......Page 151
6.1.4 Samplers on the device: sampler_t......Page 152
6.2.1 Image read functions......Page 153
6.2.2 Image write functions......Page 155
6.2.4 A simple example......Page 156
6.3.1 Nearest-neighbor interpolation......Page 158
6.3.2 Bilinear interpolation......Page 159
6.3.3 Image enlargement in OpenCL......Page 161
6.4 Summary......Page 162
Events, profiling, and synchronization......Page 163
7.1.1 Associating an event with a command......Page 164
7.1.2 Associating an event with a callback function......Page 165
7.1.3 A host notification example......Page 166
7.2.1 Wait lists and command events......Page 168
7.2.2 Wait lists and user events......Page 169
7.2.3 Additional command synchronization functions......Page 171
7.2.4 Obtaining data associated with events......Page 173
7.3.1 Configuring command profiling......Page 176
7.3.2 Profiling data transfer......Page 178
7.3.3 Profiling data partitioning......Page 180
7.4 Work-item synchronization......Page 181
7.4.1 Barriers and fences......Page 182
7.4.2 Atomic operations......Page 183
7.4.3 Atomic commands and mutexes......Page 186
7.4.4 Asynchronous data transfer......Page 187
7.5 Summary......Page 189
Development with C++......Page 190
8.1.1 Vectors and strings......Page 191
8.1.2 Exceptions......Page 192
8.2.1 Platforms, devices, and contexts......Page 193
8.2.2 Programs and kernels......Page 196
8.3 Kernel arguments and memory objects......Page 199
8.3.1 Memory objects......Page 200
8.3.2 General data arguments......Page 204
8.3.3 Local space arguments......Page 205
8.4.2 Enqueuing kernel-execution commands......Page 206
8.4.3 Read/write commands......Page 208
8.4.4 Memory mapping and copy commands......Page 210
8.5.1 Host notification......Page 212
8.5.2 Command synchronization......Page 214
8.5.3 Profiling events......Page 215
8.5.4 Additional event functions......Page 216
8.6 Summary......Page 217
Development with Java and Python......Page 219
9.1 Aparapi......Page 220
9.1.2 The Kernel class......Page 221
9.1.3 Work-items and work-groups......Page 223
9.2 JavaCL......Page 224
9.2.2 Overview of JavaCL development......Page 225
9.2.3 Creating kernels with JavaCL......Page 226
9.2.4 Setting arguments and enqueuing commands......Page 229
9.3.1 PyOpenCL installation and licensing......Page 233
9.3.2 Overview of PyOpenCL development......Page 234
9.3.3 Creating kernels with PyOpenCL......Page 235
9.3.4 Setting arguments and executing kernels......Page 238
9.4 Summary......Page 242
General coding principles......Page 244
10.1 Global size and local size......Page 245
10.1.1 Finding the maximum work-group size......Page 246
10.1.2 Testing kernels and devices......Page 247
10.2 Numerical reduction......Page 248
10.2.1 OpenCL reduction......Page 249
10.2.2 Improving reduction speed with vectors......Page 251
10.3 Synchronizing work-groups......Page 253
10.4 Ten tips for high-performance kernels......Page 254
10.5 Summary......Page 256
Coding practical algorithms in OpenCL......Page 258
Reduction and sorting......Page 260
11.1.1 Introduction to MapReduce......Page 261
11.1.2 MapReduce and OpenCL......Page 263
11.1.3 MapReduce example: searching for text......Page 265
11.2.1 Understanding the bitonic sort......Page 267
11.2.2 Implementing the bitonic sort in OpenCL......Page 270
11.3.2 Implementing the radix sort with vectors......Page 277
11.4 Summary......Page 279
Matrices and QR decomposition......Page 281
12.1.1 Introduction to matrices......Page 282
12.1.2 Theory and implementation of matrix transposition......Page 283
12.2.1 The theory of matrix multiplication......Page 285
12.2.2 Implementing matrix multiplication in OpenCL......Page 286
12.3.1 Vector projection......Page 288
12.3.2 Vector reflection......Page 289
12.3.3 Outer products and Householder matrices......Page 290
12.4 The QR decomposition......Page 292
12.4.1 Finding the Householder vectors and R......Page 293
12.4.2 Finding the Householder matrices and Q......Page 295
12.4.3 Implementing QR decomposition in OpenCL......Page 296
12.5 Summary......Page 299
Sparse matrices......Page 301
13.1 Differential equations and sparse matrices......Page 302
13.2 Sparse matrix storage and the Harwell-Boeing collection......Page 303
13.2.2 Accessing data in Matrix Market files......Page 304
13.3.1 Positive-definite matrices......Page 308
13.3.2 Theory of the method of steepest descent......Page 309
13.3.3 Implementing SD in OpenCL......Page 311
13.4.1 Orthogonalization and conjugacy......Page 312
13.4.2 The conjugate gradient method......Page 314
13.5 Summary......Page 316
Signal processing and the fast Fourier transform......Page 318
14.1 Introducing frequency analysis......Page 319
14.2.1 Theory behind the DFT......Page 321
14.2.2 OpenCL and the DFT......Page 328
14.3.1 Three properties of the DFT......Page 329
14.3.2 Constructing the fast Fourier transform......Page 332
14.3.3 Implementing the FFT with OpenCL......Page 335
14.4 Summary......Page 340
Accelerating OpenGL with OpenCL......Page 342
Combining OpenCL and OpenGL......Page 344
15.1 Sharing data between OpenGL and OpenCL......Page 345
15.1.1 Creating the OpenCL context......Page 346
15.1.2 Sharing data between OpenGL and OpenCL......Page 348
15.1.3 Synchronizing access to shared data......Page 351
15.2.1 Obtaining OpenGL object and texture information......Page 352
15.2.2 Obtaining information about the OpenGL context......Page 353
15.3.2 Initializing OpenCL operation......Page 354
15.3.3 Creating data objects......Page 355
15.3.4 Executing the kernel......Page 356
15.4 Interoperability and animation......Page 357
15.4.1 Specifying vertex data......Page 358
15.4.2 Animation and display......Page 359
15.4.3 Executing the kernel......Page 360
15.5 Summary......Page 361
Textures and renderbuffers......Page 363
16.1 Image filtering......Page 364
16.1.1 The Gaussian blur......Page 366
16.1.3 Image embossing......Page 367
16.2.2 The init_cl function......Page 368
16.2.3 The configure_shared_data function......Page 369
16.2.4 The execute_kernel function......Page 370
16.2.5 The display function......Page 371
16.3 Summary......Page 372
A.1.1 Checking device compliance......Page 373
A.1.2 OpenCL header files and libraries......Page 374
A.2.1 Windows installation with an AMD graphics card......Page 376
A.2.3 Windows installation with an Nvidia graphics card......Page 378
A.2.4 Building Windows applications with an Nvidia graphics card......Page 379
A.3.1 Linux installation with an AMD graphics card......Page 380
A.3.2 Linux installation with an Nvidia graphics card......Page 381
A.3.3 Building OpenCL applications for Linux......Page 382
A.4 OpenCL on Mac OS......Page 383
A.5 Summary......Page 384
appendix B: Real-time rendering with OpenGL......Page 386
B.1.2 OpenGL installation on Linux......Page 388
B.2 OpenGL development on the host......Page 389
B.2.1 Placing data in vertex buffer objects (VBOs)......Page 390
B.2.2 Configuring vertex attributes......Page 392
B.2.3 Compiling and deploying shaders......Page 394
B.2.4 Launching the rendering process......Page 397
B.3.1 Introduction to shader coding......Page 399
B.3.2 Vertex shaders......Page 402
B.3.3 Fragment shaders......Page 404
B.4.1 Configuring and creating a window......Page 405
B.4.2 Event handling......Page 406
B.4.3 Displaying a window......Page 407
B.5.1 GLUT/OpenGL initialization......Page 409
B.5.3 Rendering the model......Page 411
B.6 Adding texture......Page 412
B.6.1 Creating textures in the host application......Page 413
B.6.2 Texture mapping in the vertex shader......Page 416
B.6.3 Applying textures in the fragment shader......Page 417
B.7 Summary......Page 418
C.1 Installing MinGW on Windows......Page 420
C.1.1 Obtaining and running the graphical installer......Page 421
C.1.2 Installing new tools in MinGW......Page 423
C.2.2 The GNU compiler......Page 424
C.3.1 Structure of a GNU makefile......Page 426
C.3.2 Targets and phony targets......Page 429
C.3.3 Simple example makefile......Page 431
C.4 Building OpenCL applications......Page 432
C.5 Summary......Page 433
D.1 Numerical processing......Page 434
D.2 Image processing......Page 435
D.3 Summary......Page 436
A......Page 437
C......Page 438
D......Page 442
E......Page 443
F......Page 444
G......Page 445
I......Page 446
L......Page 448
M......Page 449
O......Page 451
P......Page 452
R......Page 453
S......Page 454
U......Page 455
V......Page 456
Z......Page 457