pytcuda学习笔记(一)_pycuda_pogevip111的博客-程序员秘密

技术标签: cuda  

1.为什么不直接使用pycuda.autoinit?

import pycuda.autoinit

答:自动初始化很多时候不好使,比如多线程等。

2.能正常运行,退出时候报错,什么原因?


PyCUDA ERROR: The context stack was not empty upon module cleanup.

A context was still active when the context stack was being
cleaned up. At this point in our execution, CUDA may already
have been deinitialized, so there is no way we can finish
cleanly. The program will be aborted now.
Use Context.pop() to avoid this problem.

Aborted (core dumped)
在这里插入图片描述

答:没有正常退出,需要先删除上下文

ctx  = cuda.Device(0).make_context()
...
ctx.pop()

完整代码如下

# import pycuda.autoinit
import pycuda.driver as cuda
import numpy


from pycuda.compiler import SourceModule
# export PATH=/usr/local/cuda/bin:$PATH


cuda.init()     


def dott(array_a, array_b):
    #ctx.push()
    mod = SourceModule("""
    __global__ void dot(float *dest, float *a, float *b)
    {
    const int i = threadIdx.x;
    dest[i] = a[i] * b[i];
    }
    """)
    dot = mod.get_function("dot")

    dest = numpy.zeros_like(array_a)
    dot(cuda.Out(dest), cuda.In(array_a), cuda.In(array_b),block=(len(a),1,1), grid=(1,1))
    # 
    return dest



if __name__ == "__main__":
    a = numpy.random.normal(size=40).astype(numpy.float32)
    b = numpy.random.normal(size=40).astype(numpy.float32)
    ctx  = cuda.Device(0).make_context()
    print(dott(a, b))
    ctx.pop()
    # del ctx


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Andrew_megemeta/article/details/115712499

智能推荐

js检测数据类型的四种方法_nvnv_yezi的博客-程序员秘密

typeof只能检测出undefined,string, number, boolean, symbol, function,object返回值基本类型,除 null 以外,均可以返回正确的结果。引用类型,除 function 以外,一律返回 object 类型。null ,返回 object 类型。function 返回 function 类型。原理js 在底层存储变量的时候...

DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC宏_dll declare_dynamic 只有头文件_zhjf14的博客-程序员秘密

转自:http://blog.csdn.net/aofengdaxia/article/details/6926699PLEMENT_DYNAMIC是实现“运行时类型识别”宏,与之相对应的是DECLARE_DYNAMIC(声明“运行时类型识别”宏)。也就是说你在.CPP文件中如果看见有IMPLEMENT_DYNAMIC,则在.H文件中必定有DECLARE_DYNAMIC的声明。DECL

java线程Thread和Runnable区别和联系_大数据之夏的博客-程序员秘密

我们都晓得java实现线程2种方式,一个是继承Thread,另一个是实现Runnable。模拟窗口买票,第一例子继承thread,代码如下[code="java"]package thread;public class ThreadTest { public static void main(String[] args) { Thread1 t1 = n...

osg探究补充:osg数据加载原理(插件机制简介)_osg 加载 glb 的插件_小王_123的博客-程序员秘密

前言我们接着昨天的继续,昨天主要是讲解了DatabasePager类中的特定的成员变量以及run函数的第一部分,对所要请求加载的数据按照是否是网络数据进行分类加载模式。今天我们就看看数据是怎们加载到osg环境中的。还是在DatabasePager::DatabaseThread::run()函数中,首先我们保证了databaseRequest是线程安全的,因为run()函数是创建一个唯...

14通信工程光健+电赛FPGA作业_通信工程fpga复习csdn_燕子矶的博客-程序员秘密

14通信工程光健+电赛FPGA作业第一题电路生成的RTL图 仿真波形图 HDL代码module cnt3(clk,rst,cnt);input clk,rst;output [2:0] cnt;reg [2:0] cnt;reg [2:0] q=5;always @(posedge clk) begin if(!rst) begin cnt<=3

vue新增、修改设置默认值_lxxy623的博客-程序员秘密

1. 在Controller中将值传入前台页面service实现层保存数据Controller将数据存入前台2.页面的处理在页面中循环下拉宽中的值(另外两个也是一样的循环)到现在基本完成了下拉选项,在进行更改操作时vue将floorInfoDate.aId进行判断;新增和修改页面,如果你想将数据库为未选择下拉选项的默认设为请选择的话,只要将floorInfoDate.aId设置为flo...

随便推点

机器学习--使用三种模型对数据进行分类并预测_飞爱乔的博客-程序员秘密

机器学习--使用三种模型对数据进行分类预测三种模型基本算法流程需要导入的模块数据导入和处理与数据准备k近邻分类器(KNN)决策树朴素贝叶斯总结三种模型基本算法流程加载数据并预处理–创建分类器–训练分类器–在测试集上得到预测结果–计算准确率和召回率需要导入的模块import numpyimport pandasfrom sklearn.metrics import classification_report#导入预测结果评估模块from sklearn.model_selection impo

【MFC】picture control改变背景图片_picturecontrol怎么设置颜色_artemisrj的博客-程序员秘密

首先给Picture Control 修改ID,然后添加变量 如familypicstc 就是变量名然后再初始化函数中,添加以下代码 其中IDB_Fatherpic就是相应要当做背景图片的ID,(通过资源管理器导入的。.rc2,添加资源)HBITMAP hBmp; // 保存CBitmap加载的位图的句柄 hBmp = (HBITMAP)LoadImage(AfxG

读论文系列:Object Detection ICCV2015 Fast RCNN_weixin_30294295的博客-程序员秘密

Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍;训练速度是SPP-net的3倍,测试速度是SPP-net的3倍,并且达到了更高的准确率,本文为您解读Fast RCNN。OverviewFast rcnn直接从单张图的feature map中提取RoI对应的feature map,用卷积神经网络做分类,做b...

安装与配置Flutter开发环境_Android_FLING的博客-程序员秘密

这篇博客我们介绍了Flutter,并且对比了H5,React Native,Flutter。由于Flutter是跨平台的开发框架,开发一次可以同时运行在Android和iOS上面,所以我们开发时最好使用Mac系统,这样我们可以同时测试两个平台的运行效果。本文我们就来介绍在Mac系统下安装与配置Flutter开发环境,并且运行我们的第一个Flutter应用!为了Flutter的安装配置顺利,请...

c++实验2 7-4 统计一行文本的单词个数_c++中输入一行字符,统计其中有多少单词_Skyed.blue的博客-程序员秘密

7-4 统计一行文本的单词个数 (15 分)本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串,各单词之间用空格分隔,空格数可以是多个。输入格式:输入给出一行字符。输出格式:在一行中输出单词个数。输入样例:Let’s go to room 209.输出样例:5思路分析:单词就是连续不含空格的字符串(因此不需要专门判断其是否为字母),空格数可以为多...

S3C2440-IIC_iteye_8171的博客-程序员秘密

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处http://blog.csdn.net/woshixingaaa/archive/2011/01/19/6151797.aspxIIC(Inter-Integrated Circuit,I2C)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微处理器及其外围设备,它的最主要优点是简单和有效。它只需要数据线SDA和...

推荐文章

热门文章

相关标签