c++ - CUDA 内核 printf 的语言环境
问题描述
我正在尝试使用printf
s 在 CUDA 内核中打印出一些信息,以将代码写入控制台,我可以将其粘贴到另一个程序中以绘制我正在使用的几何设置。但是,我很难让语言环境正常工作。我正在使用 CUDA 9.0 在 Linux Mint 18.1 下工作。当我printf
从程序的 C++ 部分打印出来的数字如下:
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
的然后重新启动机器。不确定是否所有这些步骤都是必要的,但它解决了我的问题。
推荐阅读
- datetime - Flutter Dart 错误从 Cloud_Firestore 解析 DateTime
- linux - 链接:为什么链接器不尊重库的符号链接?
- javascript - 如何在屏幕上创建多个项目的幻灯片/滑块
- android - Kotlin Android 项目中的多线程测试,替代 sleep()
- css - 如何使用 Tailwind 将媒体查询应用于高度和宽度?
- python - 使用 SED 或 Python 删除每个 json obj 末尾的所有逗号和开头和结尾的方括号
- android - Android Studio Emulator getExternalFilesDir() 在设备文件资源管理器中“权限被拒绝”
- amazon-s3 - 使用 django s3 sqlite 包来使用 sqlite db
- java - Kafka 流消耗为 CSV
- parameters - Magento \\OfflineShipping\\Model\\SalesRule\\Calculator Magento 2 的 $rulesApplier 参数提供的参数配置无效