pyopencl(数组)任意操作

阅读 60

2022-02-09


https://www.osgeo.cn/pyopencl/algorithm.html


import numpy as np
import pyopencl as cl
from pyopencl import clmath
from pyopencl import clrandom
from pyopencl import array
# print(cl.get_platforms())
# print(cl.platform_info())
platforms = cl.get_platforms()
a_np = np.random.rand(500).astype(np.float32)
b_np = np.random.rand(500).astype(np.float32)
ctx = cl.Context(dev_type=cl.device_type.ALL,
properties=[(cl.context_properties.PLATFORM, platforms[0])])
# ctx = cl.create_some_context()
for i in range(1000000):
with cl.CommandQueue(ctx) as queue:


# 放入显存
# 直接构造数组实例后边可省略
# array.to_device(queue, b_np) == array.to_device(queue, a_np)
res_np=array.to_device(queue,a_np)+1
res_np_=array.to_device(queue,b_np)+1
# res_np_ * res_np
# res_np + res_np_
res_np=res_np.reshape([1, 500])
res_np_=res_np_.reshape([500,1])
clmath.sin(res_np)
array.dot(res_np_, res_np)
# 变np
# res_np.get()

print(res_np.get() - (a_np - b_np))

print(np.linalg.norm(res_np.get() - (a_np - b_np)))
# assert np.allclose(res_np.get(), a_np - b_np)
if __name__ == '__main__':
pass



精彩评论(0)

0 0 举报