Numba Logo

对于所有用户

  • 用户手册
    • Numba 的 ~5 分钟指南
      • 我该如何获取它?
      • Numba 适用于我的代码吗?
      • 什么是 对象模式?
      • 如何测量 Numba 的性能?
      • 它有多快?
      • Numba 是如何工作的?
      • 其他有趣的事情:
        • GPU 目标:
    • 概述
    • 安装
      • 兼容性
      • 在 x86/x86_64/POWER 平台上使用 conda 安装
      • 在 x86/x86_64 平台上使用 pip 安装
      • 在 Linux ARMv8 (AArch64) 平台上安装
      • 从源代码安装
        • 构建时环境变量和可选组件的配置
      • 依赖列表
      • 版本支持信息
      • 检查您的安装
    • 使用 @jit 编译 Python 代码
      • 基本用法
        • 惰性编译
        • 急切编译
      • 调用和内联其他函数
      • 签名规范
      • 编译选项
        • nopython
        • nogil
        • cache
        • parallel
    • 创建 NumPy 通用函数
      • @vectorize 装饰器
      • @guvectorize 装饰器
        • 标量返回值
        • 覆盖输入值
      • 动态通用函数
      • 动态广义通用函数
    • 使用 @jitclass 编译 Python 类
      • 基本用法
      • 通过 as_numba_type 从类型注释推断类成员类型
      • 显式指定 numba.typed 容器作为类成员
      • 支持操作
        • 支持的双下划线方法
      • 限制
      • 装饰器: @jitclass
        • jitclass()
    • 使用 @cfunc 创建C回调函数
      • 基本用法
      • 示例
      • 处理指针和数组内存
      • 处理C结构体
        • 使用 CFFI
        • 使用 numba.types.Record.make_c_struct
        • 完整示例
      • 签名规范
      • 编译选项
      • 从 Numba 调用 C 代码
    • 提前编译代码
      • 概述
        • 好处
        • 限制
      • 用法
        • 独立示例
        • Distutils 集成
        • 签名语法
    • 使用 @jit 实现自动并行化
      • 支持的操作
      • 显式并行循环
      • 示例
      • 不支持的操作
      • 诊断
        • 并行诊断报告部分
      • 调度
    • 使用 @stencil 装饰器
      • 基本用法
      • 模板参数
      • 内核形状推断和边界处理
      • Stencil 装饰器选项
        • neighborhood
        • func_or_mode
        • cval
        • standard_indexing
      • StencilFunc
      • Stencil 调用选项
        • out
    • 从JIT编译的代码中回调Python解释器
      • objmode 上下文管理器
        • objmode()
    • 使用 jit_module 自动模块即时编译
      • 示例用法
      • API
        • jit_module()
    • 性能提示
      • NoPython 模式
      • 循环
      • 对象模式的案例:循环提升
      • 快速数学
      • Parallel=True
      • Intel SVML
      • 线性代数
    • 线程层
      • 哪些线程层是可用的?
      • 设置线程层
      • 设置线程层选择的优先级
        • 选择一个线程层以实现安全的并行执行
        • 选择一个命名的线程层
      • 额外注释
      • 设置线程数
        • 限制线程数量的示例
      • 获取线程ID
        • API 参考
    • 命令行界面
      • 用法
      • 帮助
      • 系统信息
      • 调试
    • 故障排除和提示
      • 编译什么
      • 我的代码无法编译
      • 我的代码存在类型统一问题
      • 我的代码存在未类型化的列表问题
      • 对象模式 或 @jit(forceobj=True) 太慢
      • 禁用JIT编译
      • 使用 GDB 调试 JIT 编译的代码
        • JIT 调试选项
        • 示例调试用法
        • 全局覆盖调试设置
      • 在 nopython 模式下使用 Numba 的直接 gdb 绑定
        • 设置
        • 基本 gdb 支持
        • 使用 gdb 运行
        • 在代码中添加断点
        • 并行区域中的调试
        • 使用 gdb 命令语言
        • gdb 绑定是如何工作的?
      • 调试 CUDA Python 代码
        • 使用模拟器
        • 调试信息
    • 常见问题
      • 安装
        • Numba 无法导入
      • 编程
        • 我可以将一个函数作为参数传递给一个 jitted 函数吗?
        • 当我修改全局变量时,Numba 似乎并不在意。
        • 我可以调试一个jit编译的函数吗?
        • 如何创建一个Fortran顺序的数组?
        • 如何增加整数宽度?
        • 如何判断 parallel=True 是否生效?
      • 性能
        • Numba 会内联函数吗?
        • Numba 是否向量化数组计算(SIMD)?
        • 为什么我的循环没有向量化?
        • 为什么从解释器中使用 typed 容器时会更慢?
        • Numba 会自动并行化代码吗?
        • Numba 能加速短运行时间的函数吗?
        • 在JIT编译复杂函数时存在延迟,我该如何改进?
      • GPU 编程
        • 如何解决 CUDA 在分叉前初始化 错误?
      • 与其他工具的集成
        • 我可以“冻结”一个使用 Numba 的应用程序吗?
        • 在Spyder下运行脚本两次时出现错误
        • 为什么Numba会抱怨当前的区域设置?
        • 我如何获取 Numba 开发版本?
      • 杂项
        • 项目名称“Numba”从何而来?
        • 我如何在其他作品中引用/引用/致谢 Numba?
        • 如何为一个Numba问题编写一个最小的工作重现器?
    • 示例
      • Mandelbrot
      • 移动平均
      • 多线程
    • 演讲与教程
      • Numba 演讲
      • Numba 应用的演讲
      • 教程
  • 参考手册
    • 类型和签名
      • 理由
      • 签名
      • 基本类型
        • 数字
        • 数组
        • 函数
        • 杂项类型
      • 高级类型
        • 推理
        • NumPy 标量
        • 数组
        • 可选类型
        • 类型注解
    • 即时编译
      • JIT 函数
        • numba.jit()
      • 生成的JIT函数
      • 调度器对象
        • Dispatcher
      • 矢量化函数(ufuncs 和 DUFuncs)
        • numba.vectorize()
        • numba.guvectorize()
        • numba.DUFunc
      • C 回调
        • numba.cfunc()
        • CFunc
    • 预先编译
      • CC
        • CC.name
        • CC.output_dir
        • CC.output_file
        • CC.target_cpu
        • CC.verbose
        • CC.export()
        • CC.compile()
        • CC.distutils_extension()
    • 实用工具
      • 处理指针
        • numba.carray()
        • numba.farray()
    • 环境变量
      • Jit 标志
      • 调试
      • 编译选项
      • 缓存选项
      • GPU 支持
      • 线程控制
    • 支持的 Python 特性
      • 语言
        • 构造
        • 函数
        • 生成器
        • 异常处理
      • 内置类型
        • int, bool
        • float, complex
        • str
        • 元组
        • 同质元组
        • 异构元组
        • 列表
        • 设置
        • 类型化字典
        • 异构字面字符串键字典
        • 无
        • 字节, 字节数组, 内存视图
      • 内置函数
        • 哈希
      • 标准库模块
        • array
        • cmath
        • collections
        • ctypes
        • enum
        • math
        • operator
        • functools
        • random
        • heapq
      • 第三方模块
        • cffi
    • 支持的 NumPy 功能
      • 标量类型
        • 记录子类型
      • 数组类型
        • 数组访问
        • 结构化数组访问
        • 属性
        • 计算
        • 其他方法
      • 函数
        • 线性代数
        • 简化
        • 多项式
        • 其他功能
        • 字面数组
      • 模块
        • random
        • stride_tricks
      • 标准 ufuncs
        • 限制
        • 数学运算
        • 三角函数
        • 位操作函数
        • 比较函数
        • 浮动函数
        • 日期时间函数
    • 与Python语义的偏差
      • 边界检查
      • 异常和内存分配
      • 整数宽度
      • 布尔取反
      • 全局变量和闭包变量
      • 变量的零初始化
    • 浮点陷阱
      • 精度和准确度
        • 数学库实现
        • 线性代数
        • 混合类型操作
      • 警告和错误
    • 弃用通知
      • 抑制弃用警告
      • 弃用 List 和 Set 类型的反射
        • 弃用原因
        • 影响的示例
        • 日程安排
        • 推荐
        • 预期的替换
      • 在使用 @jit 时,对象模式 的 回退 行为的弃用
        • 弃用原因
        • 影响的示例
        • 日程安排
        • 推荐
      • 弃用 generated_jit
        • 弃用原因
        • 影响的示例
        • 日程安排
        • 推荐
        • 替换
      • 弃用 numba.pycc 模块
        • 弃用原因
        • 影响的示例
        • 日程安排
        • 推荐
        • 替换
      • 弃用和移除 CUDA 工具包 < 11.2 及 CC < 5.0 的设备
        • 推荐
        • 日程安排
      • 弃用旧式 NUMBA_CAPTURED_ERRORS
        • 弃用原因
        • 影响
        • 推荐
        • 日程安排

对于CUDA用户

  • Numba for CUDA GPUs
    • 概述
      • 术语
      • 编程模型
      • 要求
        • 支持的GPU
        • 软件
      • 缺失的 CUDA 功能
    • 编写 CUDA 内核
      • 介绍
      • 内核声明
      • 内核调用
        • 选择块大小
        • 多维块和网格
      • 线程定位
        • 绝对位置
        • 进一步阅读
    • 内存管理
      • 数据传输
        • 设备数组
      • 固定内存
      • 映射内存
      • 托管内存
      • 流
      • 共享内存和线程同步
        • 动态共享内存
      • 本地内存
      • 常量内存
      • 释放行为
        • defer_cleanup()
    • 编写设备函数
    • CUDA Python 中支持的 Python 特性
      • 语言
        • 执行模型
        • 浮点错误模型
        • 构造
        • 递归
      • 内置类型
      • 内置函数
      • 标准库模块
        • cmath
        • math
        • operator
      • NumPy 支持
      • CFFI 支持
    • CUDA 快速数学
    • 支持的原子操作
      • 示例
    • 协作组
      • 支持的功能
      • 使用网格组
      • 合作启动
        • _Kernel.max_cooperative_grid_blocks()
      • 应用程序和示例
    • 随机数生成
      • 一个简单的例子
      • 管理RNG状态大小和使用3D网格的示例
    • 设备管理
      • 设备选择
    • 设备列表
      • numba.cuda.cudadrv.devices.gpus
    • 设备 UUID
    • 示例
      • 向量加法
      • 一维热方程
      • 共享内存减少
      • 将点击数据划分为会话
      • JIT 函数 CPU-GPU 兼容性
      • 蒙特卡罗积分
      • 矩阵乘法
      • 调用 NumPy UFunc
    • 使用 CUDA 模拟器调试 CUDA Python
      • 使用模拟器
      • 支持的功能
    • GPU 归约
      • Reduce 类
        • Reduce
    • CUDA Ufuncs 和广义 Ufuncs
      • 示例:基本示例
      • 示例:调用设备功能
      • 广义 CUDA ufuncs
    • 共享 CUDA 内存
      • 进程间共享
        • 将设备数组导出到另一个进程
        • 从另一个进程导入IPC内存
    • CUDA 数组接口 (版本 3)
      • Python 接口规范
        • 同步
        • 生命周期管理
        • Numba中的生命周期管理
        • 指针属性
        • 与CUDA数组接口(版本0)的区别
        • 与CUDA数组接口(版本1)的区别
        • 与CUDA数组接口(版本2)的差异
        • 互操作性
    • 外部内存管理 (EMM) 插件接口
      • 外部内存管理概述
        • 释放策略的影响
        • 其他对象的管理
        • 异步分配与释放
      • 实现一个EMM插件
        • BaseCUDAMemoryManager
        • 主机专用 CUDA 内存管理器
        • IPC 句柄混合
      • 返回对象的类和结构
        • 内存指针
        • 内存信息
        • IPC
      • 设置EMM插件
        • 环境变量
        • 函数
    • CUDA 绑定
      • 每个线程的默认流
      • 路线图
    • 从Python内核调用外部函数
      • 设备功能 ABI
      • Python 中的声明
        • declare_device()
      • 传递指针
      • 链接和调用函数
      • C/C++ 支持
      • 完整示例
    • 为与其他语言一起使用而编译Python函数
      • 使用 C ABI
      • C 和 Numba ABI 示例
    • 磁盘内核缓存
      • 计算能力考虑
    • CUDA 次要版本兼容性
      • 安装
        • CUDA 12
        • CUDA 11
      • 启用MVC支持
      • 参考文献
    • CUDA 常见问题解答
      • nvprof 报告 “没有内核被分析”
  • CUDA Python 参考
    • CUDA 主机 API
      • 设备管理
        • 设备检测与查询
        • 上下文管理
        • 设备管理
      • 编译
        • compile()
        • compile_for_current_device()
        • compile_ptx()
        • compile_ptx_for_current_device()
      • 测量
        • 性能分析
        • 事件
      • 流管理
        • Stream
        • stream()
        • default_stream()
        • legacy_default_stream()
        • per_thread_default_stream()
        • external_stream()
      • 运行时
        • Runtime
        • is_supported_version()
    • CUDA 内核 API
      • 内核声明
        • jit()
      • 调度器对象
        • CUDADispatcher
      • 内在属性和函数
        • 线程索引
        • 内存管理
        • 同步与原子操作
        • 协作组
        • 内存栅栏
        • Warp 内部函数
        • 整数内在函数
        • 浮点数内部函数
        • 16位浮点内建函数
        • 控制流指令
        • 计时器内在函数
    • CUDA-特定类型
      • 向量类型
    • 内存管理
      • to_device()
      • device_array()
      • device_array_like()
      • pinned_array()
      • pinned_array_like()
      • mapped_array()
      • mapped_array_like()
      • managed_array()
      • pinned()
      • mapped()
      • 设备对象
        • DeviceNDArray
        • DeviceRecord
        • MappedNDArray
    • Libdevice 函数
      • 包装函数
        • abs()
        • acos()
        • acosf()
        • acosh()
        • acoshf()
        • asin()
        • asinf()
        • asinh()
        • asinhf()
        • atan()
        • atan2()
        • atan2f()
        • atanf()
        • atanh()
        • atanhf()
        • brev()
        • brevll()
        • byte_perm()
        • cbrt()
        • cbrtf()
        • ceil()
        • ceilf()
        • clz()
        • clzll()
        • copysign()
        • copysignf()
        • cos()
        • cosf()
        • cosh()
        • coshf()
        • cospi()
        • cospif()
        • dadd_rd()
        • dadd_rn()
        • dadd_ru()
        • dadd_rz()
        • ddiv_rd()
        • ddiv_rn()
        • ddiv_ru()
        • ddiv_rz()
        • dmul_rd()
        • dmul_rn()
        • dmul_ru()
        • dmul_rz()
        • double2float_rd()
        • double2float_rn()
        • double2float_ru()
        • double2float_rz()
        • double2hiint()
        • double2int_rd()
        • double2int_rn()
        • double2int_ru()
        • double2int_rz()
        • double2ll_rd()
        • double2ll_rn()
        • double2ll_ru()
        • double2ll_rz()
        • double2loint()
        • double2uint_rd()
        • double2uint_rn()
        • double2uint_ru()
        • double2uint_rz()
        • double2ull_rd()
        • double2ull_rn()
        • double2ull_ru()
        • double2ull_rz()
        • double_as_longlong()
        • drcp_rd()
        • drcp_rn()
        • drcp_ru()
        • drcp_rz()
        • dsqrt_rd()
        • dsqrt_rn()
        • dsqrt_ru()
        • dsqrt_rz()
        • erf()
        • erfc()
        • erfcf()
        • erfcinv()
        • erfcinvf()
        • erfcx()
        • erfcxf()
        • erff()
        • erfinv()
        • erfinvf()
        • exp()
        • exp10()
        • exp10f()
        • exp2()
        • exp2f()
        • expf()
        • expm1()
        • expm1f()
        • fabs()
        • fabsf()
        • fadd_rd()
        • fadd_rn()
        • fadd_ru()
        • fadd_rz()
        • fast_cosf()
        • fast_exp10f()
        • fast_expf()
        • fast_fdividef()
        • fast_log10f()
        • fast_log2f()
        • fast_logf()
        • fast_powf()
        • fast_sincosf()
        • fast_sinf()
        • fast_tanf()
        • fdim()
        • fdimf()
        • fdiv_rd()
        • fdiv_rn()
        • fdiv_ru()
        • fdiv_rz()
        • ffs()
        • ffsll()
        • finitef()
        • float2half_rn()
        • float2int_rd()
        • float2int_rn()
        • float2int_ru()
        • float2int_rz()
        • float2ll_rd()
        • float2ll_rn()
        • float2ll_ru()
        • float2ll_rz()
        • float2uint_rd()
        • float2uint_rn()
        • float2uint_ru()
        • float2uint_rz()
        • float2ull_rd()
        • float2ull_rn()
        • float2ull_ru()
        • float2ull_rz()
        • float_as_int()
        • floor()
        • floorf()
        • fma()
        • fma_rd()
        • fma_rn()
        • fma_ru()
        • fma_rz()
        • fmaf()
        • fmaf_rd()
        • fmaf_rn()
        • fmaf_ru()
        • fmaf_rz()
        • fmax()
        • fmaxf()
        • fmin()
        • fminf()
        • fmod()
        • fmodf()
        • fmul_rd()
        • fmul_rn()
        • fmul_ru()
        • fmul_rz()
        • frcp_rd()
        • frcp_rn()
        • frcp_ru()
        • frcp_rz()
        • frexp()
        • frexpf()
        • frsqrt_rn()
        • fsqrt_rd()
        • fsqrt_rn()
        • fsqrt_ru()
        • fsqrt_rz()
        • fsub_rd()
        • fsub_rn()
        • fsub_ru()
        • fsub_rz()
        • hadd()
        • half2float()
        • hiloint2double()
        • hypot()
        • hypotf()
        • ilogb()
        • ilogbf()
        • int2double_rn()
        • int2float_rd()
        • int2float_rn()
        • int2float_ru()
        • int2float_rz()
        • int_as_float()
        • isfinited()
        • isinfd()
        • isinff()
        • isnand()
        • isnanf()
        • j0()
        • j0f()
        • j1()
        • j1f()
        • jn()
        • jnf()
        • ldexp()
        • ldexpf()
        • lgamma()
        • lgammaf()
        • ll2double_rd()
        • ll2double_rn()
        • ll2double_ru()
        • ll2double_rz()
        • ll2float_rd()
        • ll2float_rn()
        • ll2float_ru()
        • ll2float_rz()
        • llabs()
        • llmax()
        • llmin()
        • llrint()
        • llrintf()
        • llround()
        • llroundf()
        • log()
        • log10()
        • log10f()
        • log1p()
        • log1pf()
        • log2()
        • log2f()
        • logb()
        • logbf()
        • log