Mercurial > hg > graal-compiler
diff src/share/vm/runtime/gpu.hpp @ 13819:49db2c1e3bee
added support for co-existing GPU backends (JBS:GRAAL-1)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 30 Jan 2014 00:52:33 +0100 |
parents | f1a55428a8d7 |
children | b97e2515d392 |
line wrap: on
line diff
--- a/src/share/vm/runtime/gpu.hpp Thu Jan 30 00:48:41 2014 +0100 +++ b/src/share/vm/runtime/gpu.hpp Thu Jan 30 00:52:33 2014 +0100 @@ -27,85 +27,28 @@ #include "runtime/atomic.hpp" #include "oops/symbol.hpp" +#include "utilities/array.hpp" class PTXKernelArguments; -// gpu defines the interface to the graphics processor; this includes traditional -// GPU services such as graphics kernel load and execute. - - -class gpu: AllStatic { -public: - - enum TargetGPUIL { NONE = 0, PTX = 1, HSAIL = 2}; - static void init(void); - - static void probe_gpu(); - - static void initialize_gpu(); - - static int available_processors(); - - static void * generate_kernel(unsigned char *code, int code_len, const char *name); +// Defines the interface to the graphics processor(s). +class gpu : AllStatic { + private: + static int _initialized_gpus; - static bool execute_warp(int dimX, int dimY, int dimZ, - address kernel, PTXKernelArguments & ptxka, JavaValue & ret); - - static bool execute_kernel(address kernel, PTXKernelArguments & ptxka, JavaValue & ret); - - // No return value from HSAIL kernels - static bool execute_kernel_void_1d(address kernel, int dimX, jobject args, methodHandle& mh); - - static void set_available(bool value) { - _available = value; - } - - static bool is_available() { return _available; } - - static void set_initialized(bool value) { - _initialized = value; - } + // Notifies that a GPU device has been initialized. + static void initialized_gpu(const char* name); - static bool is_initialized() { return _initialized; } - - static void set_gpu_linkage(bool value) { - _gpu_linkage = value; - } - - static bool has_gpu_linkage() { return _gpu_linkage; } - - static void set_target_il_type(TargetGPUIL value) { - _targetIL = value; - } - - static enum gpu::TargetGPUIL get_target_il_type() { - return _targetIL; - } + public: -protected: - static bool _available; - static bool _gpu_linkage; - static bool _initialized; - static TargetGPUIL _targetIL; + // Gets a comma separated list of supported GPU architecture names. + static jobject probe_gpus(JNIEnv* env); + + static int initialized_gpus() { return _initialized_gpus; } - // Platform dependent stuff -#ifdef TARGET_OS_FAMILY_linux -# include "gpu_linux.hpp" -#endif -#ifdef TARGET_OS_FAMILY_solaris -#endif -#ifdef TARGET_OS_FAMILY_windows -# include "gpu_windows.hpp" -#endif -#ifdef TARGET_OS_FAMILY_bsd -# include "gpu_bsd.hpp" -#endif - -public: # include "ptx/vm/gpu_ptx.hpp" # include "hsail/vm/gpu_hsail.hpp" }; - #endif // SHARE_VM_RUNTIME_GPU_HPP