【问题标题】:Locale for CUDA kernel printfCUDA 内核 printf 的语言环境
【发布时间】:2019-11-12 17:16:55
【问题描述】:

我正在尝试使用printfs 在 CUDA 内核中打印出一些信息,以将代码写入控制台,我可以将其粘贴到另一个程序中以绘制我正在使用的几何设置。 但是,我很难让语言环境正常工作。我正在使用 CUDA 9.0 在 Linux Mint 18.1 下工作。当我从程序的 C++ 部分printf 时,数字打印如下:

printf("my value: %.3f\n", my_value); // prints 1.234 for example

但我从 CUDA 内核中使用它

printf("my value: %.3f\n", my_value); // prints 1,234

这是德国使用的格式,但显然计算机不理解后一种格式。我需要它用. 而不是逗号打印。 我已经尝试通过放置行来手动设置我的语言环境

export LC_NUMERIC="en_US.UTF-8"

进入我的.bashrc。我的locale 命令打印:

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=en_US.UTF-8
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=de_BE.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=de_BE.UTF-8
LC_NAME=de_BE.UTF-8
LC_ADDRESS=de_BE.UTF-8
LC_TELEPHONE=de_BE.UTF-8
LC_MEASUREMENT=de_BE.UTF-8
LC_IDENTIFICATION=de_BE.UTF-8
LC_ALL=

但这不会改变 CUDA 内核的输出。 我不确定要覆盖哪些其他值,而不会弄乱默认货币等。我也找不到任何关于在 CUDA 中设置语言环境的信息,所以我假设它是从其他地方获取这些信息的。有谁知道那在哪里以及如何让它做我想做的事?

【问题讨论】:

    标签: c++ cuda locale


    【解决方案1】:

    似乎 Linux 非常坚持保持当前语言配置不变。通过卸载已安装的所有其他语言包,我设法使打印输出与我想要的一样,将

    export LANG=en_US.utf8
    

    在我的.bashrc 中,然后重新启动机器。不确定是否所有这些步骤都是必要的,但它解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2019-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多