19

我正在尝试对一些 Rust 代码进行基准测试,但我不知道如何设置“ffast-math”选项。

% rustc -C opt-level=3 -C llvm-args='-enable-unsafe-fp-math' unrolled.rs
rustc: Unknown command line argument '-enable-unsafe-fp-math'.  Try: 'rustc -help'
rustc: Did you mean '-enable-load-pre'?

llvm-args='-ffast-math'llvm-args='-fast'没有工作。我应该使用什么标志?

4

2 回答 2

10

Rust 问题#21690讨论了添加不精确的浮点运算。与该问题相关的是添加了内在函数,允许您在每个操作的基础上选择更宽松的规则。例如fadd_fast

pub unsafe extern "rust-intrinsic" fn fadd_fast<T>(a: T, b: T) -> T

使用内在函数需要夜间编译器和不安全的代码:

#![feature(core_intrinsics)]

use std::intrinsics::fadd_fast;

fn main() {
    let result = unsafe { fadd_fast(42.0, 31.0) };
    println!("{}", result);
}

最终,这是一个命令行标志的全有或全无解决方案更好的设计。谁知道是否有一些浮点计算对于不使用快速数学至关重要,深埋在您的程序中?但是,在尝试与选择它的 C 程序进行比较时,这对您没有帮助!

于 2016-11-20T17:31:56.360 回答
3

您始终可以使用rustc --emit llvm-ir所需的设置来使用和编译 LLVM IR。

于 2015-06-16T11:10:28.393 回答