File: GPUQREngine_UberKernel.cu

package info (click to toggle)
suitesparse 1%3A5.8.1%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 152,716 kB
  • sloc: ansic: 774,385; cpp: 24,213; makefile: 6,310; fortran: 1,927; java: 1,826; csh: 1,686; ruby: 725; sh: 535; perl: 225; python: 209; sed: 164; awk: 60
file content (30 lines) | stat: -rw-r--r-- 1,240 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// =============================================================================
// === GPUQREngine/Source/GPUQREngine_UberKernel.cu ============================
// =============================================================================
// 
// This is the actual concrete kernel invocation, transfering control flow to
// the GPU accelerator briefly. We actually launch kernels using alternating
// streams to overlap communication with computation, so the launch is actually
// asynchronous in nature. We use the CUDA events and streams model througout
// the Scheduler to coordinate asynchronous launch behavior.
// 
// =============================================================================

#define CUDA_INCLUDE
#include "Kernel/uberKernel.cu"


void GPUQREngine_UberKernel
(
    cudaStream_t kernelStream,      // The stream on which to launch the kernel
    TaskDescriptor *gpuWorkQueue,   // The list of work items for the GPU
    int numTasks                    // The # of items in the work list
)
{
    /* Set the standard launch configuration. */
    dim3 threads(NUMTHREADS, 1);
    dim3 grid(numTasks, 1);

    /* Launch the kernel */
    qrKernel<<<grid, threads, 0, kernelStream>>>(gpuWorkQueue, numTasks);    
}