numba用户手册 10调试

2024-03-20 09:18
文章标签 调试 用户手册 numba

本文主要是介绍numba用户手册 10调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

numba用户手册

1.numba基础

2.@jit

3.使用自动并行化@jit

4.性能提升

5.创建ufunc

6.@jitclass

7.@cfunc

8.提前编译代码AOT

9.numba线程

10.调试

 

---------------------------------------------------------------------------------------------------------------------8.1.调试#脚本 myscript.pyimport numba@numba.jitdef f(x):return 2 * xf(42)# 调试:C:\Users\Administrator>numba myscript.py --annotateC:\Users\Administrator>numba myscript.py --annotate-html myscript.htmlC:\Users\Administrator> numba myscript.py --dump-llvmC:\Users\Administrator>numba myscript.py --dump-optimizedC:\Users\Administrator> numba myscript.py --dump-assemb---------------------------------------------------------------------------------------------------------------------8.2.诊断# 设置环境变量 NUMBA_PARALLEL_DIAGNOSTICS@njit(parallel=True)def test(x):n = x.shape[0]a = np.sin(x)b = np.cos(a * a)acc = 0for i in prange(n - 2):for j in prange(n - 1):acc += b[i] + b[j + 1]return acctest(np.arange(10))test.parallel_diagnostics(level=4)                 #诊断信息详细程度1最不详细,4详细---------------------------------------------------------------------------------------------------------------------8.3.numba帮助C:\Users\Administrator>numba --helpC:\Users\Administrator>numba -snumba --sysinfoIPython或Jupyter查看信息:!numba -s---------------------------------------------------------------------------------------------------------------------8.4.故障排除和技巧1)什么编译:建议只尝试编译关键代码小程序加速不明显;如函数执行时间少于10 µs则保留该函数.例外jitted函数调用该函数(@jit)2)代码无法编译(1)类型推断失败@jit(nopython=True)def f(x, y): return x + yf(1, 2)                                       #numba能够正确地推断出类型f(1, (2,))                                    #如用元组和数字来调用函数编译错误(2)不能静态地确定函数的返回类型@jit(nopython=True)def f(x):return ((1,) if x>10 else 1)f(10)                                         #错误(3)无类型的列表问题                               #列表必须包含有相同类型@jit(nopython=True)def f(): return [1, 2, 3]                     #已知类型的列表@jit(nopython=True)def f(x):tmp = [] # defined emptyfor i in range(x):tmp.append(i)           #使用空列表,但类型可以推断 `i`return tmp@jit(nopython=True)def f(x): tmp = [] ;return (tmp, x)           #ERROR: 类型无法推断the type of `tmp` is unknown#指定空列表类型,或指定参数为nb.typed.List()           #the type of `tmp` is known, but it is still empty@jit(nopython=True)def f(x):return ([np.float32(x) for x in range(0)],x)---------------------------------------------------------------------------------------------------------------------3)编译的代码太慢#编译nopython模式失败@jitdef f(a, b):s = a + float(b)return sf(1, 2)#3.0f.inspect_types()                            #查看类型是否推断成功 f (int64, int64)f(1, "2")# 3.0f.inspect_types()                            #f (int64, unicode_type)...---------------------------------------------------------------------------------------------------------------------4)将函数(@jit)作为实参#有额外的开销@jit(nopython=True)def f(g, x):return g(x) + g(-x)result = f(jitted_g_function, 1)def make_f(g):                               #可以使用工厂函数来捕获闭包中的函数参数@jit(nopython=True)                      #Note: a new f() is created each time make_f() is called!def f(x):return g(x) + g(-x)return ff = make_f(jitted_g_function)result = f(1)---------------------------------------------------------------------------------------------------------------------5)PyInstaller打包llvmlite可能会遇到问题.llvmlite需一个非Python DLL才能工作,但打包程序不会自动检测到它.必将DLL位置告知打包程序:C:\ProgramData\Anaconda3\Lib\site-packages\llvmlite\binding\llvmlite.dll(xx.so)---------------------------------------------------------------------------------------------------------------------6)numba语言环境--错误消息:RuntimeError: Failed at nopython (nopython mode backend)LLVM will produce incorrect floating-point code in the current locale遇到LLVM错误(例如matplotlib的Qt后端)会发生这种情况.解决:将区域设置强制恢复为其默认值locale.setlocale(locale.LC_NUMERIC, 'C')---------------------------------------------------------------------------------------------------------------------

 

这篇关于numba用户手册 10调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/828985

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

php 7之PhpStorm + Nginx + Xdebug运行调试

操作环境: windows PHP 7.1.10 PhpStorm-2017.2.4 Xdebug 2.5.4 Xdebug helper 1.6.1 nginx-1.12.2 注意查看端口占用情况 netstat -ano //查看所以端口netstat -aon|findstr "80" //查看指定端口占用情况 比如80端口查询情况 TCP 0.0.0.0:8

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)

博主介绍:     ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。 技术范围:     我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

转:android ro.debuggable属性调试修改(mprop逆向)

android ro属性调试修改(mprop逆向)      大家都知道如果需要调试android 的程序,以下两个条件满足一个就行。第一是apk的配置文件内的AndroidManifest.xml的 android:debuggable=”true”,第二就是/default.prop中ro.debuggable=1。两种方式第一种通常是解包添加属性再打包,随着加壳软件以及apk校验等,容易出