annotate src/gpu/ptx/vm/gpu_ptx.hpp @ 13212:eb03a7335eb0

Use fixed instead of virtual register for target in far foreign call, since the register allocator does not support virtual registers to be used at call sites.
author Christian Wimmer <christian.wimmer@oracle.com>
date Mon, 02 Dec 2013 14:20:32 -0800
parents 1a7e7011a341
children 220ed109bf77
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
1 /*
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
4 *
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
7 * published by the Free Software Foundation.
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
8 *
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
13 * accompanied this code).
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
14 *
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
18 *
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
21 * questions.
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
22 *
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
23 */
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
24
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
25 #ifndef GPU_PTX_HPP
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
26 #define GPU_PTX_HPP
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
27
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
28 /*
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
29 * Some useful macro definitions from publicly available cuda.h.
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
30 * These definitions are for convenience.
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
31 */
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
32 #define GRAAL_CUDA_SUCCESS 0
11283
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
33 /**< Device shares a unified address space with the host */
11894
c7abc8411011 Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents: 11842
diff changeset
34 #define GRAAL_CU_DEVICE_ATTRIBUTE_MAX_THREADS_PER_BLOCK 1
11283
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
35 #define GRAAL_CU_DEVICE_ATTRIBUTE_UNIFIED_ADDRESSING 41
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
36 #define GRAAL_CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MAJOR 75
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
37 #define GRAAL_CU_DEVICE_ATTRIBUTE_COMPUTE_CAPABILITY_MINOR 76
11842
8d8f63069f58 PTX warp limiter to available GPU processors
Morris Meyer <morris.meyer@oracle.com>
parents: 11822
diff changeset
38 #define GRAAL_CU_DEVICE_ATTRIBUTE_MULTIPROCESSOR_COUNT 16
11894
c7abc8411011 Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents: 11842
diff changeset
39 #define GRAAL_CU_DEVICE_ATTRIBUTE_WARP_SIZE 10
c7abc8411011 Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents: 11842
diff changeset
40 #define GRAAL_CU_DEVICE_ATTRIBUTE_CAN_MAP_HOST_MEMORY 19
c7abc8411011 Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents: 11842
diff changeset
41 #define GRAAL_CU_DEVICE_ATTRIBUTE_CONCURRENT_KERNELS 31
c7abc8411011 Fixed BasicPTXTest and IntegerPTXTest
Morris Meyer <morris.meyer@oracle.com>
parents: 11842
diff changeset
42 #define GRAAL_CU_DEVICE_ATTRIBUTE_ASYNC_ENGINE_COUNT 40
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
43 #define GRAAL_CU_JIT_MAX_REGISTERS 0
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
44 #define GRAAL_CU_JIT_THREADS_PER_BLOCK 1
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
45 #define GRAAL_CU_JIT_INFO_LOG_BUFFER 3
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
46 #define GRAAL_CU_JIT_INFO_LOG_BUFFER_SIZE_BYTES 4
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
47 #define GRAAL_CUDA_ERROR_NO_BINARY_FOR_GPU 209
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
48
12653
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
49 /*
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
50 * Flags for cuMemHostRegister
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
51 */
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
52
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
53 #define GRAAL_CU_MEMHOSTREGISTER_PORTABLE 1
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
54 #define GRAAL_CU_MEMHOSTREGISTER_DEVICEMAP 2
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
55
11283
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
56 /**
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
57 * End of array terminator for the extra parameter to
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
58 * ::cuLaunchKernel
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
59 */
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
60 #define GRAAL_CU_LAUNCH_PARAM_END ((void*) 0x00)
11283
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
61
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
62 /**
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
63 * Indicator that the next value in the extra parameter to
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
64 * ::cuLaunchKernel will be a pointer to a buffer containing all kernel
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
65 * parameters used for launching kernel f. This buffer needs to
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
66 * honor all alignment/padding requirements of the individual parameters.
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
67 * If ::GRAAL_CU_LAUNCH_PARAM_BUFFER_SIZE is not also specified in the
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
68 * extra array, then ::GRAAL_CU_LAUNCH_PARAM_BUFFER_POINTER will have no
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
69 * effect.
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
70 */
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
71 #define GRAAL_CU_LAUNCH_PARAM_BUFFER_POINTER ((void*) 0x01)
11283
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
72
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
73 /**
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
74 * Indicator that the next value in the extra parameter to
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
75 * ::cuLaunchKernel will be a pointer to a size_t which contains the
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
76 * size of the buffer specified with ::GRAAL_CU_LAUNCH_PARAM_BUFFER_POINTER.
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
77 * It is required that ::GRAAL_CU_LAUNCH_PARAM_BUFFER_POINTER also be specified
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
78 * in the extra array if the value associated with
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
79 * ::GRAAL_CU_LAUNCH_PARAM_BUFFER_SIZE is not zero.
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
80 */
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
81 #define GRAAL_CU_LAUNCH_PARAM_BUFFER_SIZE ((void*) 0x02)
11283
1cd1f8ff70a1 CR-20: PTX kernel invocation with arguments - from Bharadwaj
Morris Meyer <morris.meyer@oracle.com>
parents: 10879
diff changeset
82
12653
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
83 /*
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
84 * Context creation flags
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
85 */
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
86
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
87 #define GRAAL_CU_CTX_MAP_HOST 0x08
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
88
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
89 class Ptx {
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
90 friend class gpu;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
91
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
92 protected:
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
93 static bool probe_linkage();
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
94 static bool initialize_gpu();
11842
8d8f63069f58 PTX warp limiter to available GPU processors
Morris Meyer <morris.meyer@oracle.com>
parents: 11822
diff changeset
95 static unsigned int total_cores();
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
96 static void * generate_kernel(unsigned char *code, int code_len, const char *name);
11822
365d8f385fb5 PTX: one-dimensional parallel warp invocation, ParallelOver annotation
Morris Meyer <morris.meyer@oracle.com>
parents: 11527
diff changeset
97 static bool execute_warp(int dimX, int dimY, int dimZ, address kernel, PTXKernelArguments & ka, JavaValue &ret);
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
98 static bool execute_kernel(address kernel, PTXKernelArguments & ka, JavaValue &ret);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
99 public:
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
100 #if defined(__x86_64) || defined(AMD64) || defined(_M_AMD64)
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
101 typedef unsigned long long CUdeviceptr;
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
102 #else
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
103 typedef unsigned int CUdeviceptr;
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
104 #endif
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
105
12653
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
106 typedef int CUdevice; /**< CUDA device */
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
107
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
108 private:
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
109 typedef int (*cuda_cu_init_func_t)(unsigned int);
12653
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
110 typedef int (*cuda_cu_ctx_create_func_t)(void*, unsigned int, CUdevice);
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
111 typedef int (*cuda_cu_ctx_destroy_func_t)(void*);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
112 typedef int (*cuda_cu_ctx_synchronize_func_t)(void);
11527
c99e65785936 Improvements to PTX codegen; allows more PTX tests that run on the device to pass.
bharadwaj
parents: 11485
diff changeset
113 typedef int (*cuda_cu_ctx_set_current_func_t)(void*);
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
114 typedef int (*cuda_cu_device_get_count_func_t)(int*);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
115 typedef int (*cuda_cu_device_get_name_func_t)(char*, int, int);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
116 typedef int (*cuda_cu_device_get_func_t)(int*, int);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
117 typedef int (*cuda_cu_device_compute_capability_func_t)(int*, int*, int);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
118 typedef int (*cuda_cu_device_get_attribute_func_t)(int*, int, int);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
119 typedef int (*cuda_cu_launch_kernel_func_t)(struct CUfunc_st*,
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
120 unsigned int, unsigned int, unsigned int,
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
121 unsigned int, unsigned int, unsigned int,
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
122 unsigned int, void*, void**, void**);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
123 typedef int (*cuda_cu_module_get_function_func_t)(void*, void*, const char*);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
124 typedef int (*cuda_cu_module_load_data_ex_func_t)(void*, void*, unsigned int, void*, void**);
12653
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
125 typedef int (*cuda_cu_memalloc_func_t)(gpu::Ptx::CUdeviceptr*, size_t);
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
126 typedef int (*cuda_cu_memfree_func_t)(gpu::Ptx::CUdeviceptr);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
127 typedef int (*cuda_cu_memcpy_htod_func_t)(gpu::Ptx::CUdeviceptr, const void*, unsigned int);
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
128 typedef int (*cuda_cu_memcpy_dtoh_func_t)(const void*, gpu::Ptx::CUdeviceptr, unsigned int);
12653
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
129 typedef int (*cuda_cu_mem_host_register_func_t)(void*, size_t, unsigned int);
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
130 typedef int (*cuda_cu_mem_host_get_device_pointer_func_t)(gpu::Ptx::CUdeviceptr*, void*, unsigned int);
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
131 typedef int (*cuda_cu_mem_host_unregister_func_t)(void*);
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
132
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
133 public:
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
134 static cuda_cu_init_func_t _cuda_cu_init;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
135 static cuda_cu_ctx_create_func_t _cuda_cu_ctx_create;
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
136 static cuda_cu_ctx_destroy_func_t _cuda_cu_ctx_destroy;
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
137 static cuda_cu_ctx_synchronize_func_t _cuda_cu_ctx_synchronize;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
138 static cuda_cu_device_get_count_func_t _cuda_cu_device_get_count;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
139 static cuda_cu_device_get_name_func_t _cuda_cu_device_get_name;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
140 static cuda_cu_device_get_func_t _cuda_cu_device_get;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
141 static cuda_cu_device_compute_capability_func_t _cuda_cu_device_compute_capability; /* Deprecated as of CUDA 5.0 */
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
142 static cuda_cu_device_get_attribute_func_t _cuda_cu_device_get_attribute;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
143 static cuda_cu_launch_kernel_func_t _cuda_cu_launch_kernel;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
144 static cuda_cu_module_get_function_func_t _cuda_cu_module_get_function;
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
145 static cuda_cu_module_load_data_ex_func_t _cuda_cu_module_load_data_ex;
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
146 static cuda_cu_memalloc_func_t _cuda_cu_memalloc;
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
147 static cuda_cu_memfree_func_t _cuda_cu_memfree;
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
148 static cuda_cu_memcpy_htod_func_t _cuda_cu_memcpy_htod;
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
149 static cuda_cu_memcpy_dtoh_func_t _cuda_cu_memcpy_dtoh;
11527
c99e65785936 Improvements to PTX codegen; allows more PTX tests that run on the device to pass.
bharadwaj
parents: 11485
diff changeset
150 static cuda_cu_ctx_set_current_func_t _cuda_cu_ctx_set_current;
12653
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
151 static cuda_cu_mem_host_register_func_t _cuda_cu_mem_host_register;
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
152 static cuda_cu_mem_host_get_device_pointer_func_t _cuda_cu_mem_host_get_device_pointer;
1a7e7011a341 * PTX kernel argument buffer now has naturally aligned arguments as required by PTX JIT compiler.
S.Bharadwaj Yadavalli <bharadwaj.yadavalli@oracle.com>
parents: 11894
diff changeset
153 static cuda_cu_mem_host_unregister_func_t _cuda_cu_mem_host_unregister;
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
154
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
155 protected:
11485
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
156 static void* _device_context;
49bb1bc983c6 Implement several missing PTX codegen features; return value capture and method args passing of java method executed on GPU.
bharadwaj
parents: 11291
diff changeset
157 static int _cu_device;
10879
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
158 };
d55f24eac4b1 PTX support for Linux
Morris Meyer <morris.meyer@oracle.com>
parents:
diff changeset
159 #endif // GPU_PTX_HPP