Python使用pyopencl在GPU上并行处理批量判断素数
扩展库pyopencl使得可以在Python中调用OpenCL的并行计算API。OpenCL(Open Computing Language)是跨平台的并行编程标准,可以运行在个人电脑、服务器、移动终端以及嵌入式系统等多种平台,既可以运行在CPU上又可以运行于GPU上,大幅度提高了各类应用中的数据处理速度,包括游戏、娱乐、医学软件以及科学计算等等。
import numpy as np
import pyopencl as cl
import pyopencl.array
from pyopencl.elementwise import ElementwiseKernel
#判断素数的C语言版GPU代码
isPrime = ElementwiseKernel(ctx,
'long *a_g, long *b_g, long *res_g',
'''
int j;
for(j=2; j<b_g[i]; j++)
{
if(a_g[i]%j == 0)
{
break;
}
}
if(j >= b_g[i])
{
res_g[i] = a_g[i];
}''',
'isPrime'
)
#定义待测数值范围,和每次处理的数字数量
end = 100000000
start_end = range(2, end)
size = 1000
result = 0
ctx = cl.create_some_context()
queue = cl.CommandQueue(ctx)
#对指定范围内的数字进行分批处理
for i in range(end//size + 1):
startN = i * size
#本次要处理的数字范围
a_np = np.array(start_end[startN: startN+size]).astype(np.int64)
#b_np里的数字是a_np中数字的平方根取整后加1
b_np = np.array(list(map(lambda x: int(x**0.5)+1, a_np))).astype(np.int64)
#把数据写入GPU
a_g = cl.array.to_device(queue, a_np)
b_g = cl.array.to_device(queue, b_np)
res_g = cl.array.zeros_like(a_g)
#批量判断
isPrime(a_g, b_g, res_g)
t = set(filter(None, res_g.get()))
#记录本批数字中素数的个数
result += len(t)
print(result)
Python使用pyopencl在GPU上并行处理批量判断素数相关推荐
- Python使用pycuda在GPU上并行处理批量判断素数
借助于扩展库pycuda,可以在Python中访问NVIDIA显卡提供的CUDA并行计算API,使用非常方便.安装pycuda时要求已正确安装合适版本的CUDA和Visual Studio(注意,并不 ...
- 微课|中学生可以这样学Python(例4.1):快速判断素数
适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第4章 循环结构 4.3 精彩例题分析与解答--例4.1 快速判断素数 京东购买链接:htt ...
- Python利用Spark并行处理框架批量判断素数
方法一: from pyspark import SparkConf, SparkContext conf = SparkConf().setAppName("isPrime") ...
- Python使用多进程批量判断素数
代码功能:使用进程池判断素数,统计100000000以内的素数个数. from multiprocessing import Pool def isPrime(n): if n<2: #非素数返 ...
- Python使用多线程搜索指定范围内的所有素数
问题描述: 使用多线程技术搜索并输出指定范围内的所有素数. 思考一下: 1)如何创建和启动线程? 2)如何让多个线程协同工作? 尝试着想一想,试一试,然后到文末阅读参考代码. ----------相关 ...
- 在GPU上运行,性能是NumPy的11倍,这个Python库你值得拥有
导读:NumPy是数据计算的基础,更是深度学习框架的基石.但如果直接使用NumPy计算大数据,其性能已成为一个瓶颈. 随着数据爆炸式增长,尤其是图像数据.音频数据等数据的快速增长,迫切需要突破NumP ...
- windows怎么用gpu跑python程序_在GPU(windows)上运行Theano的命令
我使用的代码from theano import function, config, shared, sandbox import theano.tensor as T import numpy im ...
- Nvidia GPU 入门教程之 03 在 GPU 上运行 Python 脚本,对比cpu与gpu性能,检测a100性能(教程含源码)
GPU 的内核比 CPU 多,因此在数据的并行计算方面,GPU 的性能比 CPU 好得多,尽管 GPU 的时钟速度较低,并且与 CPU 相比缺乏几个内核管理功能. 因此,在 GPU 上运行 pytho ...
- 如何在 GPU 上加速数据科学
数据科学家需要算力.无论您是用 pandas 处理一个大数据集,还是用 Numpy 在一个大矩阵上运行一些计算,您都需要一台强大的机器,以便在合理的时间内完成这项工作. 在过去的几年中,数据科学家常用 ...
最新文章
- 接口自动化(四)--数据依赖的处理
- 合并两个有序的单链表
- bash不识别命令 ssh_关于Python脚本在后台运行的几种方式!(linux,bash,tmux,等)...
- 【Qt】数据库实战(三)
- 百度地图API : 修改marker图标(icon)
- Tensorflow中查看gpu是否可用
- 口腔取模过程及注意事项_取模变形?教你三种方法,轻松防止取模变形!
- Qt工作笔记-代理及自定义委托,实现开关功能
- day4.编程语言简介
- Windows下安装NPM
- CUBRID学习笔记 46 PREPARED set Do
- 数据库服务器操作系统升级方案,PostgreSQL 数据库跨版本升级常用方案解析
- python输出奇数个数_Python实践|输出0-7组成八位奇数总数
- 【存储知识】文件系统与硬盘存储(分区、格式化、挂载、inode、软链接与硬链接)
- 领域驱动(DDD)设计
- POWER BI filter函数的筛选条件可以使用度量值作为筛选条件
- 抽奖滚动效果 python_Python使用Tkinter实现滚动抽奖器效果
- 项目从Spring转到SpringBoot Migrating from Spring to Spring Boot
- 基于深度学习的FAQ检索式问答系统
- 【C++】虚函数指针和虚函数列表
热门文章
- quickselect java,实现快速选择
- mysql case 2个返回值_MySQL函数简介 2
- 小明利用计算机软件绘制函数,2019年人大附中初二下期末模拟数学试题
- Java实现hsql_java – 从类创建HSQL创建表查询
- c combobox绑定mysql数据库_C# ComboBox:组合框控件数据绑定
- K8S 部署rabbitmq集群
- 500套xmind经典模板_构建可视化思维 一个原创作者三年XMind经验总结
- linux mediainfo,Ubuntu安装MediaInfo
- linux 内核 锐龙,AMDGPU内核驱动程序在Linux 5.0上运行良好
- android通讯录备份恢复代码逻辑