OpenCL運行時:平臺、設備和上下文?

Platform?

pyopencl.get_platforms()?

返回的列表 Platform 實例。

class pyopencl.Platform?
info?

的小寫版本 platform_info 常量可以用作此類實例上的屬性,以直接查詢信息屬性。

get_info(param)?

platform_info 對于價值 param .

get_devices(device_type=device_type.ALL)?

返回匹配的設備列表 device_type . 見 device_type 對于價值 device_type .

在 2013.2 版更改: 如果找不到匹配的設備,則會引發異?!,F在,它只返回一個空列表。

static from_int_ptr(int_ptr_value: int, retain: bool = True)pyopencl._cl.Platform?

(靜態方法)返回一個引用C級的新Python對象 cl_platform_id 對象指向的位置 int_ptr_value . 相關的 clRetain* 函數將被調用,如果 保持 是是的,如果對象的前所有者將 not 釋放引用, 保持 應設置為 ,有效地將所有權轉移給 pyopencl .

2013.2 新版功能.

在 2016.1 版更改: 保持 補充。

int_ptr?

返回與基礎 cl_platform_id . 使用 from_int_ptr() 返回到Python對象。

2013.2 新版功能.

Instances of this class are hashable, and two instances of this class may be compared using "==" and "!=". (Hashability was added in version 2011.2.) Two objects are considered the same if the underlying OpenCL object is the same, as established by C pointer equality.

裝置?

class pyopencl.Device?

此類的兩個實例可以使用 ==""!=" .

info?

的小寫版本 device_info 常量可以用作此類實例上的屬性,以直接查詢信息屬性。

get_info(param)?

device_info 對于價值 param .

static from_int_ptr(int_ptr_value: int, retain: bool = True)pyopencl._cl.Device?

(靜態方法)返回一個引用C級的新Python對象 cl_device_id 對象指向的位置 int_ptr_value . 相關的 clRetain* 函數將被調用,如果 保持 是是的,如果對象的前所有者將 not 釋放引用, 保持 應設置為 ,有效地將所有權轉移給 pyopencl .

2013.2 新版功能.

在 2016.1 版更改: 保持 補充。

int_ptr?

返回與基礎 cl_device_id . 使用 from_int_ptr() 返回到Python對象。

2013.2 新版功能.

hashable_model_and_version_identifier?

一種未指定的數據類型,可用于(盡可能精確地,給定OpenCL中可用的標識信息)標識計算設備的給定模型和軟件堆棧版本。請注意,此標識符不區分安裝在單個主機中的同一設備的不同實例。

返回的數據類型是可哈希的。

2020.1 新版功能.

create_sub_devices(properties)?

性質 是一個(或多個)形式的數組:

[ dpp.EQUALLY, 8]
[ dpp.BY_COUNTS, 5, 7, 9, dpp.PARTITION_BY_COUNTS_LIST_END]
[ dpp.BY_NAMES, 5, 7, 9, dpp.PARTITION_BY_NAMES_LIST_END]
[ dpp.BY_AFFINITY_DOMAIN, dad.L1_CACHE]

在哪里? dpp 代表 device_partition_propertydad 代表 device_affinity_domain .

PROPERTIES_LIST_END_EXT 自動添加。

僅適用于CL 1.2。

2011.2 新版功能.

device_and_host_timer()?
返回

元組 (device_timestamp, host_timestamp) .

僅適用于CL 2.0。

2020.3 新版功能.

host_timer()?

僅適用于CL 2.0。

2020.3 新版功能.

語境?

class pyopencl.Context(devices=None, properties=None, dev_type=None, cache_dir=None)?

創建新上下文。 性質 是鍵值元組的列表,其中每個鍵必須是 context_properties . 最多一個 設備dev_type 可能不是 None 在哪里 設備 是一個列表 Device 實例,以及 dev_type 是其中之一 device_type 常量。如果兩者都未指定,則使用 dev_type 屬于 device_type.DEFAULT 創建。

如果 cache_dir 不是 None -它將用作默認值 cache_dir 盡管如此 Program 實例生成(另請參見 Program.build()

注解

對于支持openclicd的最新CL驅動程序,調用沒有參數的構造函數將失敗。如果你想要類似的,只是給我一個上下文已經行為,我們建議 create_some_context() . 看,例如這個 explanation by AMD .

注解

由于OpenCL如何改變以支持opencl1.1中的可安裝客戶機驅動程序(icd),下面將 look 合理但通常不起作用:

import pyopencl as cl
ctx = cl.Context(dev_type=cl.device_type.ALL)

相反,在按類型選擇設備時,請確保選擇平臺:

import pyopencl as cl

platforms = cl.get_platforms()
ctx = cl.Context(
        dev_type=cl.device_type.ALL,
        properties=[(cl.context_properties.PLATFORM, platforms[0])])

注解

為了 context_properties.CL_GL_CONTEXT_KHR , context_properties.CL_EGL_DISPLAY_KHR , context_properties.CL_GLX_DISPLAY_KHR , context_properties.CL_WGL_HDC_KHRcontext_properties.CL_CGL_SHAREGROUP_KHR context_properties.CL_CGL_SHAREGROUP_APPLE 鍵值對中的值是PyOpenGL上下文或顯示實例。

在 0.91.2 版更改: 構造函數參數 dev_type 補充。

info?

的小寫版本 context_info 常量可以用作此類實例上的屬性,以直接查詢信息屬性。

get_info(param)?

context_info 對于價值 param .

static from_int_ptr(int_ptr_value: int, retain: bool = True)pyopencl._cl.Context?

(靜態方法)返回一個引用C級的新Python對象 cl_context 對象指向的位置 int_ptr_value . 相關的 clRetain* 函數將被調用,如果 保持 是是的,如果對象的前所有者將 not 釋放引用, 保持 應設置為 ,有效地將所有權轉移給 pyopencl .

2013.2 新版功能.

在 2016.1 版更改: 保持 補充。

int_ptr?

返回與基礎 cl_context . 使用 from_int_ptr() 返回到Python對象。

2013.2 新版功能.

set_default_device_command_queue(dev, queue)?

Instances of this class are hashable, and two instances of this class may be compared using "==" and "!=". (Hashability was added in version 2011.2.) Two objects are considered the same if the underlying OpenCL object is the same, as established by C pointer equality.

pyopencl.create_some_context(interactive=True, answers=None, cache_dir=None)?

創建一個 Context “不知怎么的”。

如果存在平臺和/或設備的多個選擇, 互動式 是真的,而且 系統標準isatty() 如果為True,則會詢問用戶應該選擇哪個設備。否則,以實現定義的方式選擇設備。