comparison src/share/vm/graal/graalCompilerToGPU.cpp @ 11842:8d8f63069f58

PTX warp limiter to available GPU processors
author Morris Meyer <morris.meyer@oracle.com>
date Mon, 30 Sep 2013 13:03:47 -0400
parents 365d8f385fb5
children 67a1e27a8dbb
comparison
equal deleted inserted replaced
11841:6157a71e0a36 11842:8d8f63069f58
109 jobject args, jobject hotspotInstalledCode)) 109 jobject args, jobject hotspotInstalledCode))
110 ResourceMark rm; 110 ResourceMark rm;
111 HandleMark hm; 111 HandleMark hm;
112 112
113 if (gpu::is_available() == false || gpu::has_gpu_linkage() == false && gpu::is_initialized()) { 113 if (gpu::is_available() == false || gpu::has_gpu_linkage() == false && gpu::is_initialized()) {
114 tty->print_cr("executeExternalMethodVarargs - not available / no linkage / not initialized"); 114 tty->print_cr("executeParallelMethodVarargs - not available / no linkage / not initialized");
115 return NULL; 115 return NULL;
116 } 116 }
117 jlong nmethodValue = HotSpotInstalledCode::codeBlob(hotspotInstalledCode); 117 jlong nmethodValue = HotSpotInstalledCode::codeBlob(hotspotInstalledCode);
118 nmethod* nm = (nmethod*) (address) nmethodValue; 118 nmethod* nm = (nmethod*) (address) nmethodValue;
119 methodHandle mh = nm->method(); 119 methodHandle mh = nm->method();
151 tty->print_cr("deviceInit - already initialized"); 151 tty->print_cr("deviceInit - already initialized");
152 return true; 152 return true;
153 } 153 }
154 gpu::initialize_gpu(); 154 gpu::initialize_gpu();
155 return gpu::is_initialized(); 155 return gpu::is_initialized();
156 C2V_END
157
158 C2V_VMENTRY(jint, availableProcessors, (JNIEnv *env, jobject))
159 if (gpu::is_available() == false || gpu::has_gpu_linkage() == false) {
160 tty->print_cr("deviceInit - not available / no linkage");
161 return false;
162 }
163 return gpu::available_processors();
156 C2V_END 164 C2V_END
157 165
158 C2V_VMENTRY(jboolean, deviceDetach, (JNIEnv *env, jobject)) 166 C2V_VMENTRY(jboolean, deviceDetach, (JNIEnv *env, jobject))
159 return true; 167 return true;
160 C2V_END 168 C2V_END
197 205
198 JNINativeMethod CompilerToGPU_methods[] = { 206 JNINativeMethod CompilerToGPU_methods[] = {
199 {CC"generateKernel", CC"([B" STRING ")"GPUSPACE_METHOD, FN_PTR(generateKernel)}, 207 {CC"generateKernel", CC"([B" STRING ")"GPUSPACE_METHOD, FN_PTR(generateKernel)},
200 {CC"deviceInit", CC"()Z", FN_PTR(deviceInit)}, 208 {CC"deviceInit", CC"()Z", FN_PTR(deviceInit)},
201 {CC"deviceDetach", CC"()Z", FN_PTR(deviceDetach)}, 209 {CC"deviceDetach", CC"()Z", FN_PTR(deviceDetach)},
210 {CC"availableProcessors", CC"()I", FN_PTR(availableProcessors)},
202 {CC"executeExternalMethodVarargs", CC"(["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeExternalMethodVarargs)}, 211 {CC"executeExternalMethodVarargs", CC"(["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeExternalMethodVarargs)},
203 {CC"executeParallelMethodVarargs", CC"(III["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeParallelMethodVarargs)}, 212 {CC"executeParallelMethodVarargs", CC"(III["OBJECT HS_INSTALLED_CODE")"OBJECT, FN_PTR(executeParallelMethodVarargs)},
204 }; 213 };
205 214
206 int CompilerToGPU_methods_count() { 215 int CompilerToGPU_methods_count() {