gpt4 book ai didi

integer - gdb 将 __m256i 打印为 8x 32 位元素而不是默认的 4x 64 位元素?

转载 作者:行者123 更新时间:2023-12-04 17:27:25 24 4
gpt4 key购买 nike

我使用 gdb 调试通过 immintrin.h header 使用 AVX2 内部函数的程序。

使用 gdb,我可以毫无问题地打印出 __m256 值,如下所示:

>>> print scl8
$4 = {[0] = 0.0078125, [1] = 0.0078125, [2] = 0.0078125, [3] = 0.0078125, [4] = 0.0078125, [5] = 0.0078125, [6] = 0.0078125, [7] = 0.0078125}

在此特定示例中,所有 8 条泳道都包含值 1/128。并注意 gdb 打印出所有 8 个 channel !

如果我想打印出 __m256i 值的 epi32 值,就会出错:

>>> print msk8
$6 = {[0] = 4294967297, [1] = 4294967297, [2] = 4294967297, [3] = 4294967297}

为什么 gdb 会为 __m256i 打印 4 条 channel (我假设是 64 位整数),而为 __m256 值打印 8 条 32 位 float channel ?这里的一致性在哪里?

如何使用 gdb 从 __m256i 打印 8 个 epi32 值?

$ gdb --version
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git

最佳答案

我还没有找到更简单的解决方案,但您可以将您的值转换为 __v8si,即 (__v8si) ones 将打印 8 个 channel 。

因此可能 watch 表达式、调试器控制台或保留未使用的变量(将在发布版本中优化)有助于调试。

我希望看到一些可以放在调试版本中的属性或注释,这会影响 GDB。

关于integer - gdb 将 __m256i 打印为 8x 32 位元素而不是默认的 4x 64 位元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62399455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com