| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | 
							- /*
 
-  * Copyright 1993-2009 NVIDIA Corporation.  All rights reserved.
 
-  *
 
-  * NVIDIA Corporation and its licensors retain all intellectual property and
 
-  * proprietary rights in and to this software and related documentation.
 
-  * Any use, reproduction, disclosure, or distribution of this software
 
-  * and related documentation without an express license agreement from
 
-  * NVIDIA Corporation is strictly prohibited.
 
-  *
 
-  * Please refer to the applicable NVIDIA end user license agreement (EULA)
 
-  * associated with this source code for terms and conditions that govern
 
-  * your use of this NVIDIA software.
 
-  *
 
-  */
 
- /* Matrix-vector multiplication: W = M * V.
 
-  * Device code.
 
-  *
 
-  * This sample implements matrix-vector multiplication.
 
-  * It has been written for clarity of exposition to illustrate various OpenCL
 
-  * programming principles and optimizatoins, not with the goal of providing
 
-  * the most performant generic kernel for matrix-vector multiplication.
 
-  *
 
-  * CUBLAS provides high-performance matrix-vector multiplication on GPU.
 
-  */
 
- __kernel void matVecMult(
 
-                          __global float* M,
 
-                          __global float* V,
 
-                          int width, int height,
 
-                          __global float* W
 
-                          )
 
- {
 
-         // Row index
 
-         uint y = get_global_id(0);
 
-         if (y < height) {
 
-                 // Row pointer
 
-                 const __global float* row = M + y * width;
 
-                 // Compute dot product
 
-                 float dotProduct = 0;
 
-                 for (int x = 0; x < width; ++x)
 
-                         dotProduct += row[x] * V[x];
 
-                 // Write result to global memory
 
-                 W[y] = dotProduct;
 
-         }
 
- }
 
 
  |