具有多核 CPU 的 JAX pmap

2023-12-28

使用多核CPU的正确方法是什么jax.pmap?

以下示例在 CPU 核心后端上为 SPMD 创建环境变量,测试 JAX 是否识别设备,并尝试设备锁定。

import os
os.environ["XLA_FLAGS"] = '--xla_force_host_platform_device_count=2'

import jax as jx
import jax.numpy as jnp

jx.local_device_count()
# WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)
# 2

jx.devices("cpu")
# [CpuDevice(id=0), CpuDevice(id=1)]

def sfunc(x): while True: pass

jx.pmap(sfunc)(jnp.arange(2))

从 jupyter 内核执行并观察htop显示只有一个核心被锁定

我收到相同的输出htop省略前两行并运行时:

$ env XLA_FLAGS=--xla_force_host_platform_device_count=2 python test.py

更换sfunc with

def sfunc(x): return 2.0*x

并打电话

jx.pmap(sfunc)(jnp.arange(2))
# ShardedDeviceArray([0., 2.], dtype=float32, weak_type=True)

确实返回一个SharedDeviecArray.

显然我没有正确配置 JAX/XLA 以使用两个核心。我缺少什么以及我可以做什么来诊断问题?


据我所知,您正在正确配置核心(参见例如问题#2714 https://github.com/google/jax/issues/2714)。问题出在你的测试函数上:

def sfunc(x): while True: pass

该函数陷入无限循环在跟踪时,不在运行时。跟踪发生在单个 CPU 上的主机 Python 进程中(请参阅如何在 JAX 中思考 https://jax.readthedocs.io/en/latest/notebooks/thinking_in_jax.html了解 JAX 转换中跟踪的概念)。

如果您想在运行时观察 CPU 使用情况,则必须使用一个完成跟踪并开始运行的函数。为此,您可以使用任何实际产生结果的长时间运行的函数。这是一个简单的例子:

def sfunc(x):
  for i in range(100):
    x = (x @ x)
  return x

jx.pmap(sfunc)(jnp.zeros((2, 1000, 1000)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

具有多核 CPU 的 JAX pmap 的相关文章

  • windows下安装jax

    一 首先下载jaxlib 需要去这个非官方网站去找到适合自己的版本 xff0c 下载到本地 然后使用对应的虚拟环境pip install 该文件名即可 二 然后下载对应的jax 一行命令即可 pip span class token fun
  • Android设置线程亲和性

    以下的答案来自这个 StackOverflow 问题我如何创建正确的 掩码的整数 我做了一些谷歌搜索 我发现的所有东西都使用CPU SET宏来自sched h但它运行于cpu set t使用 NDK 时未定义的结构 当尝试使用CPU SET
  • Jax 向量化:vmap 和/或 numpy.vectorize?

    之间有什么区别jax numpy vectorizeand jax vmap 这是一个小片段集 import jax import jax numpy as jnp def f x return jnp exp x jnp sin x gf
  • 使用 openMP 进行多核处理与多线程处理

    这个问题听起来可能很基本 但是我找不到任何具体的答案 现在假设我们有一个多核处理器 例如 corei5 680 2 个物理核心和支持 HT 的 4 个操作系统可用核心 我的问题是 openMP 到底适合什么情况 1 当我们说使用 openM
  • 如何在 Intel 环形和网状架构上选择引导处理器 (BSP)

    第2 13 2节提到仲裁 ID 用于确定哪个处理器首先发出无操作周期 我在多个来源和英特尔手册上看到了这一点 引用 MP 初始化序列的英特尔手册仅在存在 系统总线 时以及在此之前最初存在 APIC 总线 时解决 Pentium 4 我的印象
  • 犰狳线性系统求解器(带 openblas)

    我一直在测试各种开源代码来求解 C 中的线性方程组 到目前为止 我发现最快的是犰狳 也使用 OPENblas 包 为了解决密集线性 NxN 系统 其中 N 5000 在我的系统上大约需要 8 3 秒 这真的非常快 没有安装 openblas
  • 线程中的私有变量

    我是一个开始使用pthreadsLinux 中用 C 语言 我需要创建和使用私有线程变量 让我用一个例子来准确解释我需要什么 在下面的代码中 我创建了 4 个线程 我希望每个线程都创建一个私有变量foo 所以总共 4 个foo变量 每个线程
  • 什么是“逻辑CPU核心”

    我正在阅读一些操作系统材料 我读到这句话让我有点困惑 多核是指具有多个逻辑 CPU 核心 并且可以同时执行多条指令的计算机或处理器 什么是 逻辑CPU核心 是处理器吗 它是否对应于物理的东西 或者是操作系统看到逻辑CPU核心 但实际上物理处
  • 如何获取我的应用程序的“可用”处理器数量?

    我知道如何获取计算机上的物理处理器数量和逻辑处理器数量 但我想知道我的应用程序可以访问多少个逻辑处理器 例如 我在四核机器上进行开发 但我有许多单核用户 并且在许多情况下我 简化 了界面 或者遇到了多核系统从未遇到过的锁定问题 因此 为此
  • 强制多个线程在多个 CPU 可用时使用它们

    我正在编写一个 Java 程序 由于其工作性质 该程序使用大量 CPU 然而 其中很多可以并行运行 并且我已经使我的程序成为多线程的 当我运行它时 它似乎只使用一个 CPU 直到它需要更多的 CPU 然后才使用另一个 CPU 我可以在 Ja
  • 如何让我的 Perl 脚本对子进程使用多个核心?

    我正在研究一个数学模型 该模型使用 XFOIL 生成的数据 XFOIL 是一种流行的航空航天工具 用于查找机翼的升力和阻力系数 我有一个 Perl 脚本 它使用不同的输入参数重复调用 XFOIL 以生成我需要的数据 我需要 XFOIL 运行
  • SqLite 多核处理

    如何配置 SqLite 3 使用 1 个以上的 CPU 核心来处理单个查询 从3 8 7版本开始 SQLite可以使用多线程对大数据集进行并行排序
  • 为什么必须同时使用编译器标志和运行时标志才能在 Haskell 中获得多核支持?

    Haskell wiki 显示您需要同时设置编译标志和运行时标志才能获得多核支持 为什么使用该库不足以在编译时获得正确的行为 为什么运行时可执行文件无法检测到它是使用 threaded 编译的并使用系统上的所有内核 除非另有指定 我认为默认
  • Solrcloud 多核配置

    我有一个独立的Solr具有 4 个不同内核的实例使用嵌入式 Jetty 服务器运行良好 我为 v4 10 3 配置了核心 但自从我迁移到 v5 1 后 一切似乎都工作正常 无需任何更改 在投入生产之前 我需要将其设置为Solrcloud 安
  • 多核机器上的 Hadoop 和 Map-Reduce

    我读过很多关于在机器集群上运行的 Hadoop 和 Map Reduce 的内容 有人知道 Apache 发行版是否可以在具有多个内核的 SMP 上运行吗 特别是 多个Map Reduce进程是否可以在同一台机器上运行 调度程序将负责将它们
  • JAX 仅在 jit 下的数组切片上应用函数

    我正在使用 JAX 我想执行类似的操作 jax jit def fun x index x index other fun x index return x 这不能在以下情况下执行jit 有没有办法做到这一点jax ops or jax l
  • 检测windows上的核心数

    如果我在 Linux 或 Mac 上运行 R 我可以使用以下命令检测可用内核的数量multicore detectCores 但是 没有 Windows 版本的多核功能 因此我无法在 Windows 上使用此技术 如何从 R 中以编程方式检
  • SMP 上如何处理中断?

    SMP 对称多处理器 多核 机器上如何处理中断 内存管理单元是只有一个还是多个 假设两个线程 A 和 B 运行在不同的内核上 同时 访问页表中不存在的内存页面 在这种情况下 将会出现页面错误 并从内存中引入新页面 将会发生的事件的顺序是什么
  • M:N线程模型真的利用了CPU核心吗?

    有几种线程模型可用于在应用程序中调度线程 1 1 内核级线程 用户创建的每个线程都映射到内核中的调度线程 N 1 用户级线程 用户在单个应用程序中创建的所有线程实际上都映射到单个调度的内核线程 M N 混合螺纹 用户在应用程序中创建的 M
  • 如何在其他核心上运行每个线程?

    我有一个 udp 服务器接收数据并计算它 每个角色我都有两个线程 我的CPU是8个多核 我以不同的速度发送数据 但最多我只使用了 cpu 两核 50 的 14 如果我发送更多的数据值 我的缓冲区将填满并且不会使用更多的CPU 为什么每个核心

随机推荐

  • jsPlumb:拖动新连接应删除现有连接

    使用 jsPlumb 我设法进行了以下设置 有多个节点 其作用类似于特殊类型流程图中的节点 每个节点都有一个可以将连接丢弃到的目标 每个节点都有零个 一个或多个出口 每个出口作为jsPlumb源 最多允许有1个连接 先举个小例子 http
  • Internet Explorer innerHTML 输出不带引号的属性

    我正在使用 IE 8 并尝试设置元素 Id 属性 然后我将该元素附加到父元素并检查它的innerHTML 我看到的问题是 id 属性缺少双引号 起初我认为这可能是因为我使用了 setAttribute 属性 而这在 IE 8 中可能有问题
  • Git Pull:更改身份验证

    我对 git 很陌生 我在服务器 A 上设置了一个存储库 其中通过 ssh rsa 密钥进行访问 我在那里有一些用户 包括我自己 现在我做git clone在我的本地计算机上获取本地副本 进行更改 然后push origin master
  • html 在所有设备上保持相同的字符大小

    我用几个输入按钮做了一个关于 html 的练习 http bullmalay appspot com http bullmalay appspot com 我在手机上访问它 但我发现文字尺寸真的很小 我认为原因在于分辨率 谁能帮我调整一下文
  • Java 中的连接字符串是否总是会导致在内存中创建新字符串?

    我有一条很长的字符串 不适合屏幕的宽度 例如 String longString This string is very long It does not fit the width of the screen So you have to
  • 无法使用带有节点的express使用res.send()发送数字

    我正在尝试使用节点中的 Express 获得 imdb 评级 但我很挣扎 电影 json id 3962210 order 4 361276149749756 1988 fields year 2015 title David and Go
  • 单击时导航项标题消失

    我创建了带有导航视图的抽屉 我有正在调用其他活动的导航项目 问题是当我单击导航项时 其他活动启动 如果我返回主活动并打开抽屉 则单击的导航项的标题消失 只有我可以看到该项目的图标 code public class MainActivity
  • 带有文本、复选框、选择的 jQuery 表过滤器

    需要使用文本搜索 复选框和选择从表外部过滤表 PicNet 表过滤器 http www picnet com au resources tablefilter demo htmfor jQuery 适用于搜索和使用表外的复选框 尽管我找不到
  • Twitter Bootstrap - 100% 高度

    我正在尝试使用 twitter bootstrap 框架为我的应用程序设计一个管理面板 但我无法让我的布局正常工作 I was inspired by this design It would be a two column layout
  • 如何将不同的 DataFrame 组合成一个分组条形图

    我正在尝试复制答案this https stackoverflow com questions 65052443 creating a grouped bar plot with seaborn问题 我看不出我在做什么有什么不同 我的输出
  • 无法从 Linux 连接到 SQL Server

    我正在尝试连接到 CentOS 5 8 上的 SQL Server 2008 我正在使用 unixODBC 2 3 0 和 SQL Server ODBC 驱动程序 www microsoft com en us download deta
  • 链接描述文件中的 KEEP 是什么意思?

    The LD手册 http ftp gnu org old gnu Manuals ld 2 9 1 html mono ld html SEC2没有解释什么KEEP命令执行 下面是第三方链接描述文件的一个片段 其特点是KEEP 什么是KE
  • 在php中组合两个(或更多..)多维数组

    我有一个使用不同参数运行多次的查询 我正在使用 xml 解析器将结果返回给 jQuery 我似乎无法找到一种方法来组合第一个 节点 上的结果而不覆盖第一个条目 简化的代码示例 temp1 returnArray 0 temp2 return
  • 如何像 DevTools 那样突出显示 Chrome 扩展中的元素?

    我有兴趣创建一个 Chrome 扩展程序 它列出了网页上菜单中具有 id 属性的所有元素 然后 当用户单击菜单中的元素时 网页上相应的元素就会突出显示 当您右键单击并检查某个元素时 我看到 Chrome 开发工具会突出显示该元素 我很好奇是
  • uint32_t 和 uint8_t[4] 未定义行为的联合? [复制]

    这个问题在这里已经有答案了 在评论中这个答案 https stackoverflow com a 8568531 1025391据说使用如下联合将整数分割成字节将是未定义的行为 该位置给出的代码与此相似但不完全相同 如果我更改了代码的未定义
  • 使用 SIS 执行 postgres db init 的批处理文件给出权限被拒绝

    跟随我的上一个问题 https stackoverflow com questions 30924913 how to install postgres with nsis with all parameters我现在尝试通过 NSIS 代
  • 将 StackNavigator 与 TabNavigator 集成

    如何组合 StackNavigator 和 TabNavigator 我的以下代码有效 索引 android js import React Component from react import AppRegistry Text View
  • SQL Server 错误:“SQL Server 子查询返回超过 1 个值”

    子查询返回超过 1 个值 当子查询跟在 gt 后面或子查询用作表达式时 这是不允许的 我在调试以下代码时收到此有线错误消息 WHEN NOT EXISTS SELECT 1 FROM defs WITH NOLOCK WHERE defau
  • Neo4J 数据库大小/缩小

    我们有一个包含约 1000 万个节点和约 3 亿个关系的 Neo4j 数据库 数据库已增长至约 80 Gig 日常工作会删除旧数据并添加新数据 因此节点和关系的大约数量保持相当恒定 然而 db 文件的物理文件大小不断增长 例如 relati
  • 具有多核 CPU 的 JAX pmap

    使用多核CPU的正确方法是什么jax pmap 以下示例在 CPU 核心后端上为 SPMD 创建环境变量 测试 JAX 是否识别设备 并尝试设备锁定 import os os environ XLA FLAGS xla force host