numba用户手册9. numba线程

 

numba用户手册

1.numba基础

2.@jit

3.使用自动并行化@jit

4.性能提升

5.创建ufunc

6.@jitclass

7.@cfunc

8.提前编译代码AOT

9.numba线程

10.调试

 numba线程



------------------------------------------------------------------------------------------------------------------------------------------------------

7.1说明:

1)并行执行通过parallelCPU 发生的即:

   @jit(parallel=True). and @njit(parallel=True).

   @vectorize(target='parallel' ) and @guvectorize(target='parallel' ).

2)如不用threading或multiprocessing ,则numba附带线程的默认设置会很好工作,无需采取进一步措施!


7.2.线程层:

1)tbb -  Intel TBB支持的线程层(需要存在英特尔的TBB库conda install tbb)

2)omp -OpenMP支持的线程层(与linux1兼容移植性在PyPI上numba二进制轮子中禁用OpenMP线程层 )($ conda install intel-openmp) 

3)workqueue -一个简单的内置工作共享任务计划程序(保证存在的唯一线程层)



7.3.设置线程层

通过环境变量 设置线程层 numba.config.THREADING_LAYER

编程方式设置线程层必须在逻辑上发生,后再针对并行目标进行任何基于numba的编译.


7.4.选择线程层

有两种方法,一种是通过选择在各种并行执行形式下安全的线程层,第二种是通过线程层名称(例如tbb)进行显式选择.


default       没有提供具体的安全保证,并且是默认设置.

safe            线程和线程都是安全的,这需要安装tbb软件包(Intel TBB库)

forksafe     提供一个fork安全库.

threadsafe 提供线程安全库.




------------------------------------------------------------------------------------------------------------------------------------------------------

7.5.实例:

from numba import config, njit, threading_layer

import numpy as np


config.THREADING_LAYER = 'threadsafe'                          # 在任何并行目标编译之前设置线程层


@njit(parallel=True)

def foo(a, b):

    return a + b


x = np.arange(10.)

y = x.copy()


# 这将强制编译函数,选择一个线程层,然后并行执行

foo(x, y)

                                                                                               # 演示所选的线程层

print("Threading layer chosen: %s" % threading_layer())  # 查看所选的线程层

# Threading layer chosen: omp




------------------------------------------------------------------------------------------------------------------------------------------------------

7.6.other:

numba诊断命令的一节 报告了当前环境中线程层的可用性.

numba -s__Threading Layer Information__





------------------------------------------------------------------------------------------------------------------------------------------------------

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值