摘要: 在NVIDIA(CUDA,CUBLAS)和Intel MKL上快速实现BERT推理 直接在NVIDIA(CUDA,CUBLAS)或Intel MKL上进行高度定制和优化的BERT推理,而无需tensorflow及其框架开销。 仅支持BERT(转换器)。 基准测试 环境 Tesla P4 28 * I 阅读全文
posted @ 2020-12-26 19:43 吴建明wujianming 阅读(584) 评论(0) 推荐(0) 编辑
摘要: nvGraph-NVIDIA图形库 数据分析是高性能计算的不断增长的应用。许多高级数据分析问题可以称为图形问题。反过来,当今许多常见的图形问题也可以称为稀疏线性代数。这是nvGraph的动机,它利用GPU的线性代数功能来处理大型图形分析。 https://github.com/rapidsai/nv 阅读全文
posted @ 2020-12-26 18:59 吴建明wujianming 阅读(496) 评论(0) 推荐(0) 编辑
摘要: MIT Graph实践概述 Features功能 • iCloud Support • Multi Local & Cloud Graphs • Thread Safe • Store Any Data Type, Including Binary Data • Relationship Model 阅读全文
posted @ 2020-12-26 18:39 吴建明wujianming 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 适用于AMD ROC GPU的Numba概述 Numba通过按照HSA执行模型将Python代码的受限子集直接编译到HSA内核和设备功能中,从而支持AMD ROC GPU编程。用Numba编写的内核似乎可以直接访问NumPy数组。 术语 以下列出了HSA编程主题中的几个重要术语: 内核:由主机启动并 阅读全文
posted @ 2020-12-26 18:11 吴建明wujianming 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 编写HSA内核 介绍 HSA提供类似于OpenCL的执行模型。指令由一组硬件线程并行执行。在某种程度上,这类似于 单指令多数据(SIMD)模型,但具有这样的便利:细粒度调度对于程序员而言是隐藏的,而不是使用SIMD向量作为数据结构进行编程。在HSA中,编写的代码将同时由多个线程(通常成百上千个)执行 阅读全文
posted @ 2020-12-26 18:03 吴建明wujianming 阅读(142) 评论(0) 推荐(0) 编辑
摘要: BEP 7:CUDA外部内存管理插件(下) Numba依赖 向库中添加EMM插件的实现自然会使Numba成为库的依赖项,而以前可能没有。为了使依赖关系可选,如果需要的话,可以有条件地实例化并注册EMM插件,如下所示: try: import numba from mylib.numba_utils 阅读全文
posted @ 2020-12-26 17:06 吴建明wujianming 阅读(151) 评论(0) 推荐(0) 编辑
摘要: BEP 7:CUDA外部内存管理插件(上) 背景和目标 在CUDA阵列接口使得能够共享不同的Python之间的数据库的访问CUDA设备。但是,每个库都与其它库区别对待。例如: Numba在内部管理内存以创建设备和映射的host阵列。 RAPIDS库(cuDF,cuML等)使用Rapids Memor 阅读全文
posted @ 2020-12-26 17:04 吴建明wujianming 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 缓存注意事项 Numba支持将编译后的函数缓存到文件系统中,以供将来使用相同的函数。 实施 通过保存编译后的目标代码(可执行代码的ELF对象)来完成缓存。通过使用目标代码,由于不需要编译,因此缓存的函数具有最小的开销。缓存的数据保存在缓存目录下(请参阅NUMBA_CACHE_DIR)。缓存的索引存储 阅读全文
posted @ 2020-12-26 16:33 吴建明wujianming 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 关于Numba的线程实现的说明 由Numbaparallel目标执行的工作由Numba线程层执行。实际上,“线程层”是Numba内置库,可以执行所需的并发执行。在撰写本文时,有三个可用的线程层,每个线程层都通过不同的较低级别的host线程库实现。上thread线程和对于给定的应用/系统的thread 阅读全文
posted @ 2020-12-26 16:17 吴建明wujianming 阅读(347) 评论(0) 推荐(0) 编辑
摘要: Hashing散列注意事项 Numba支持内置功能hash(),只需__hash__()在提供的参数上调用成员函数即可 。这使得添加对新类型的哈希支持变得微不足道,这是因为扩展APIoverload_method()装饰器的应用程序,需要重载用于为注册到该类型的__hash__()方法的新类型,计算 阅读全文
posted @ 2020-12-26 15:52 吴建明wujianming 阅读(120) 评论(0) 推荐(0) 编辑
摘要: Numba实时变量分析 Numba使用引用计数进行垃圾回收,这是一种需要编译器配合的技术。Numba IR对必须插入decref的位置进行编码。这些位置通过实时变量分析确定。相应的源代码是https://github.com/numba/numba/blob/master/numba/interpr 阅读全文
posted @ 2020-12-26 15:38 吴建明wujianming 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 适用于CUDA GPU的Numba 随机数生成 随机数生成 Numba提供了可以在GPU上执行的随机数生成算法。由于NVIDIA如何实现cuRAND的技术问题,Numba的GPU随机数生成器并非基于cuRAND。相反,Numba的GPU RNG是xoroshiro128 +算法的实现。xoroshi 阅读全文
posted @ 2020-12-26 14:45 吴建明wujianming 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 适用于CUDA GPU的Numba例子 矩阵乘法 这是使用CUDA内核的矩阵乘法的简单实现: @cuda.jit def matmul(A, B, C): """Perform square matrix multiplication of C = A * B """ i, j = cuda.gri 阅读全文
posted @ 2020-12-26 14:32 吴建明wujianming 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 共享CUDA内存 进程间共享 此功能仅限于Linux。 将设备阵列导出到另一个进程 使用CUDA IPC API,可以与同一台计算机上的另一个进程共享设备阵列。为此,请使用.get_ipc_handle()设备阵列上的方法获取一个IpcArrayHandle对象,该对象可以转移到另一个进程。 Dev 阅读全文
posted @ 2020-12-26 14:25 吴建明wujianming 阅读(326) 评论(0) 推荐(0) 编辑
摘要: CUDA功能和通用功能 本文描述了类似于CUDA ufunc的对象。 为了支持CUDA程序的编程模式,CUDA Vectorize和GUVectorize无法产生常规的ufunc。而是返回类似ufunc的对象。该对象是一个近似的对象,但与常规的NumPy ufunc不完全兼容。CUDA ufunc增 阅读全文
posted @ 2020-12-26 14:14 吴建明wujianming 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 编写CUDA内核 介绍 与用于CPU编程的传统顺序模型不同,CUDA具有执行模型。在CUDA中,编写的代码将同时由多个线程(通常成百上千个)执行。解决方案将通过定义网格,块和线程层次结构进行建模。 Numba的CUDA支持提供了用于声明和管理此线程层次结构的工具。这些功能与NVidia的CUDA C 阅读全文
posted @ 2020-12-26 14:07 吴建明wujianming 阅读(172) 评论(0) 推荐(1) 编辑
摘要: LLD-LLVM链接器 LLD是LLVM项目中的链接器,是系统链接器的直接替代,并且运行速度比它们快得多。它还提供了对工具链开发人员有用的功能。 链接器按完整性降序支持ELF(Unix),PE / COFF(Windows),Mach-O(macOS)和WebAssembly。在内部,LLD由几个不 阅读全文
posted @ 2020-12-26 12:16 吴建明wujianming 阅读(2467) 评论(0) 推荐(0) 编辑