CUDA 内核 printf 的语言环境
Locale for CUDA kernel printf
我正在尝试使用 printf
s 打印出 CUDA 内核中的一些信息,以将代码写入控制台,我可以将这些代码粘贴到另一个程序中,以绘制我正在使用的几何设置。
但是,我无法让语言环境正常工作。我在 Linux Mint 18.1 和 CUDA 9.0 下工作。当我从程序的 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 中设置区域设置的任何信息,因此我假设它是从其他地方获取该信息的。有谁知道那在哪里以及如何让它做我想做的事?
看来 Linux 非常坚持保持当前的语言配置不变。通过卸载已安装的所有其他语言包,我设法使打印输出像我想要的那样,将
export LANG=en_US.utf8
在我的 .bashrc
中,然后重新启动机器。不确定是否所有这些步骤都是必要的,但它解决了我的问题。
我正在尝试使用 printf
s 打印出 CUDA 内核中的一些信息,以将代码写入控制台,我可以将这些代码粘贴到另一个程序中,以绘制我正在使用的几何设置。
但是,我无法让语言环境正常工作。我在 Linux Mint 18.1 和 CUDA 9.0 下工作。当我从程序的 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 中设置区域设置的任何信息,因此我假设它是从其他地方获取该信息的。有谁知道那在哪里以及如何让它做我想做的事?
看来 Linux 非常坚持保持当前的语言配置不变。通过卸载已安装的所有其他语言包,我设法使打印输出像我想要的那样,将
export LANG=en_US.utf8
在我的 .bashrc
中,然后重新启动机器。不确定是否所有这些步骤都是必要的,但它解决了我的问题。