扩展库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上并行处理批量判断素数相关推荐

  1. Python使用pycuda在GPU上并行处理批量判断素数

    借助于扩展库pycuda,可以在Python中访问NVIDIA显卡提供的CUDA并行计算API,使用非常方便.安装pycuda时要求已正确安装合适版本的CUDA和Visual Studio(注意,并不 ...

  2. 微课|中学生可以这样学Python(例4.1):快速判断素数

    适用教材: 董付国,应根球.<中学生可以这样学Python>.清华大学出版社,2017. 第4章  循环结构 4.3  精彩例题分析与解答--例4.1  快速判断素数 京东购买链接:htt ...

  3. Python利用Spark并行处理框架批量判断素数

    方法一: from pyspark import SparkConf, SparkContext conf = SparkConf().setAppName("isPrime") ...

  4. Python使用多进程批量判断素数

    代码功能:使用进程池判断素数,统计100000000以内的素数个数. from multiprocessing import Pool def isPrime(n): if n<2: #非素数返 ...

  5. Python使用多线程搜索指定范围内的所有素数

    问题描述: 使用多线程技术搜索并输出指定范围内的所有素数. 思考一下: 1)如何创建和启动线程? 2)如何让多个线程协同工作? 尝试着想一想,试一试,然后到文末阅读参考代码. ----------相关 ...

  6. 在GPU上运行,性能是NumPy的11倍,这个Python库你值得拥有

    导读:NumPy是数据计算的基础,更是深度学习框架的基石.但如果直接使用NumPy计算大数据,其性能已成为一个瓶颈. 随着数据爆炸式增长,尤其是图像数据.音频数据等数据的快速增长,迫切需要突破NumP ...

  7. windows怎么用gpu跑python程序_在GPU(windows)上运行Theano的命令

    我使用的代码from theano import function, config, shared, sandbox import theano.tensor as T import numpy im ...

  8. Nvidia GPU 入门教程之 03 在 GPU 上运行 Python 脚本,对比cpu与gpu性能,检测a100性能(教程含源码)

    GPU 的内核比 CPU 多,因此在数据的并行计算方面,GPU 的性能比 CPU 好得多,尽管 GPU 的时钟速度较低,并且与 CPU 相比缺乏几个内核管理功能. 因此,在 GPU 上运行 pytho ...

  9. 如何在 GPU 上加速数据科学

    数据科学家需要算力.无论您是用 pandas 处理一个大数据集,还是用 Numpy 在一个大矩阵上运行一些计算,您都需要一台强大的机器,以便在合理的时间内完成这项工作. 在过去的几年中,数据科学家常用 ...

最新文章

  1. 接口自动化(四)--数据依赖的处理
  2. 合并两个有序的单链表
  3. bash不识别命令 ssh_关于Python脚本在后台运行的几种方式!(linux,bash,tmux,等)...
  4. 【Qt】数据库实战(三)
  5. 百度地图API : 修改marker图标(icon)
  6. Tensorflow中查看gpu是否可用
  7. 口腔取模过程及注意事项_取模变形?教你三种方法,轻松防止取模变形!
  8. Qt工作笔记-代理及自定义委托,实现开关功能
  9. day4.编程语言简介
  10. Windows下安装NPM
  11. CUBRID学习笔记 46 PREPARED set Do
  12. 数据库服务器操作系统升级方案,PostgreSQL 数据库跨版本升级常用方案解析
  13. python输出奇数个数_Python实践|输出0-7组成八位奇数总数
  14. 【存储知识】文件系统与硬盘存储(分区、格式化、挂载、inode、软链接与硬链接)
  15. 领域驱动(DDD)设计
  16. POWER BI filter函数的筛选条件可以使用度量值作为筛选条件
  17. 抽奖滚动效果 python_Python使用Tkinter实现滚动抽奖器效果
  18. 项目从Spring转到SpringBoot Migrating from Spring to Spring Boot
  19. 基于深度学习的FAQ检索式问答系统
  20. 【C++】虚函数指针和虚函数列表

热门文章

  1. quickselect java,实现快速选择
  2. mysql case 2个返回值_MySQL函数简介 2
  3. 小明利用计算机软件绘制函数,2019年人大附中初二下期末模拟数学试题
  4. Java实现hsql_java – 从类创建HSQL创建表查询
  5. c combobox绑定mysql数据库_C# ComboBox:组合框控件数据绑定
  6. K8S 部署rabbitmq集群
  7. 500套xmind经典模板_构建可视化思维 一个原创作者三年XMind经验总结
  8. linux mediainfo,Ubuntu安装MediaInfo
  9. linux 内核 锐龙,AMDGPU内核驱动程序在Linux 5.0上运行良好
  10. android通讯录备份恢复代码逻辑