x86_64/linux上有比glibc更快的数学库吗?

7

是否有一个更快的x86_64-linux下glibc的libm(和头文件)的替代品?


我不知道你的要求,但你是否检查过TNT、Blitz++、Boost等工具? - amit kumar
3
我可能错了,但据我所知,在x86-64上gcc默认会使用SSE2指令集; 也许你缺少的只是正确的优化标志 - 尝试使用“-ffast-math”或在手册中查找具体信息,特别是http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Optimize-Options.html#Optimize-Options和http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options。 - Christoph
即使GCC生成SSE2代码,它仍然会调用libm的函数,这些函数并没有进行SSE2优化。 - user3141592653589
@www:好的,“-ffast-math”设置“-fno-math-errno”,这直接影响数学函数的实现;如果所有gcc所做的都是愚蠢地链接到它们,那么该选项将非常无用,但我不在64位(甚至*nix)机器上,也就是说我不能查看生成的代码以了解gcc如何与libm交互。 - Christoph
你需要更加具体 - 单精度还是双精度?哪些函数?你需要多少精度?你需要这些函数快多少? - Paul R
显示剩余4条评论
3个回答

2

ICC附带的数学库在许多libm函数上速度明显更快,但需要购买ICC。如果您对此感到好奇,我相信您可以下载免费试用版。我知道他们支持Linux,并且相信他们尝试与GCC库兼容。ICC还包括Math Kernel Library中许多libm函数的向量化实现,这可能对您有用。


1

AMD和Intel都有为其CPU优化的数学库可用。它们不是免费的。

它们不实现简单的东西。这些库是用于快速傅里叶变换、巨大矩阵问题和其他事情的。

快速数学编译器选项将大大加速浮点数学运算。但是,您需要自行负责错误检查。


1
不知道是否有所改变,但至少AMD曾经免费提供数学库。 - Ioan
他们需要吗? 最近我没有检查过,但我似乎记得需要为英特尔付费。 - Zan Lynx

-1

根据您想要运行的确切数学函数以及您将要对其运行的数据集大小,您可能需要查看类似CUDA的东西,它将让您使用图形芯片的快速数学能力来进行处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接