我的问题很简单...我如何检查我的机器上安装的 GMP 版本?MPFR 怎么样?那么 CamlIDL 呢?
非常感谢
我正在尝试将 cuda 与 GNU 多精度库 (gmp) 一起使用。当我将 mpf_init() 之类的 gmp 指令添加到设备代码中时,出现以下编译器错误: tlgmp.cu(37): error: Calling a host function("__ gmpf_init") from a __ device__ /__ global__ function("histo" ) 不允许。
是否可以重新定义 gmp 指令,以便可以在设备代码中使用它们?
我正在尝试将载体与 GMP 一起使用。但是当我编译这样的东西时,我得到“[...]\bits\vector.tcc [Error] array必须使用大括号括起来的初始值设定项进行初始化”。任何具有动态大小的数据结构都可以工作 - 双端队列是最好的,但当我尝试这样做时,会出现更多错误。我该如何让这个停止失败?
#include <vector>
#include <gmp.h>
int main(){
mpz_t test;
mpz_init(test);
std::vector<mpz_t> a_vector;
a_vector.push_back(test);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在 Windows 上安装 gmp。我找到了在Windows上从源代码编译的mingw方式。但无法找到 gmp 6.1.2 或 Visual Studio 项目的二进制文件以便从源代码进行编译。所以问题是:在哪里可以下载 gmp 6.1.2 二进制文件或使用 Visual Studio 从源代码进行编译。
我正在编写一个 C++ 程序来生成 Mandelbrot 集缩放。我所有的复数最初都是两个double(一个代表实部,一个代表复数部分)。这工作得相当快;对于我生成的图像类型,每帧 15 秒。
由于缩放效果,我想提高更多放大帧的精度,因为这些帧在 和 之间的差异非常min_x小max_x。我向 GMP 寻求帮助来解决这个问题。
现在,速度要慢得多;每帧 15:38 分钟。图像的设置与之前相同,算法也相同。唯一改变的是我使用的是mpf_class需要精确的小数(即只是复数)。为了比较性能,我使用了与 double 相同的精度:mpf_set_default_prec(64);
GMP是否改变精度mpf_class来满足表达的需要?换句话说,如果我有两个 64 位mpf_class对象,我用它们进行计算并将结果存储在另一个对象中mpf_class,精度是否可能会提高?我认为随着时间的推移,这会破坏性能,但我不确定这就是导致我的问题的原因。
我的问题:这种性能下降是否只是 GMP 和其他任意精度库的本质?你会给出什么建议?
编辑 1
我正在(即一直)使用-O3标志进行优化。我还进行了一项测试,以验证 GMP 不会自动提高对象的精度mpf_class。因此,问题仍然在于性能急剧下降的原因。
编辑 2
作为一个演示性示例,我将以下代码编译g++ main.cpp -lgmp -lgmpxx一次,如下所示,并将 everydouble替换为mpf_class. 用double它跑了 12.75 秒,用mpf_class它跑了 24 分 54 分钟。当它们的精度相同时,为什么会出现这种情况?
#include <gmpxx.h>
double linear_map(double d, double a1, double …Run Code Online (Sandbox Code Playgroud) 我花了很多时间手动优化低级整数算法,并取得了一些成功。例如,我的 6x6 乘法子程序花费了 66 个滴答声,而mpn_mul_basecase(6,6)在 Skylake 上花费了 82 个滴答声。我的代码发布在Github 上。
我目前正在为 AMD Ryzen 开发 8x8 乘法。我正在使用 Ryzen 7 3800X 进行基准测试。我努力避免延迟。我研究了 Agner Fog 的“指令表”以及 Torbjörn Granlund 的“指令延迟......”。没有任何迹象表明 Ryzen 上的 adox/adcx 存在重大问题;Ryzen 和 Skylake 在 adox/adcx 方面应该没有太大区别。我已经使用 mulx 和 adcq、adox 或 adcx 之一对乘法 8x1 子程序进行了基准测试;子程序的所有三个变体在 Skylake 和 Ryzen 上都运行得很快(18-19 个滴答声)。
但是,当我尝试将 adox 和 adcx 混合在一起时,我的代码在 Ryzen 上运行速度非常慢。例如,我的 8x2 乘法子程序在 Skylake i7-6700 上花费了 34 个滴答,在 Ryzen 7 3800X 上花费了 293 个滴答(8 倍差)。
有什么建议为什么 mulx/adox/adcx 代码在 Ryzen 上执行速度慢 …
我正在尝试从源代码构建gdb,版本是11.1。我已经配置了 GMP 包括路径,但配置脚本仍然报错。
configure: error: GMP is missing or unusable
Run Code Online (Sandbox Code Playgroud)
我复制了配置日志。
configure:10433: checking for libgmp
configure:10453: gcc -o conftest -g -O2 conftest.c -lncurses -lm -ldl -lgmp >&5
conftest.c:53:17: fatal error: gmp.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我的配置命令如下所示。
configure --prefix=/home/xxx/ins/gdb_11 --with-gmp-include=/home/xxx/ins/gmp-6.2.1/include --with-gmp-lib=/home/xxx/ins/gmp-6.2.1/lib
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?
我在 M1 Pro 芯片组上运行 Mac OS Ventura (13.0)。
我成功编译了 GMP 版本 6.2.1,但大多数单元测试都失败了。
要么与
分段错误:11
或与
中止陷阱:6
Version: GNU MP 6.2.1
Host type: aarch64-apple-darwin22.1.0
ABI: 64
Install prefix: /usr/local
Compiler: gcc
Static libraries: yes
Shared libraries: yes
============================================================================
Testsuite summary for GNU MP 6.2.1
============================================================================
# TOTAL: 50
# PASS: 14
# SKIP: 0
# XFAIL: 0
# FAIL: 36
# XPASS: 0
# ERROR: 0
============
Run Code Online (Sandbox Code Playgroud)
例子:
../../test-driver: line 107: 36102 Segmentation fault: 11 "$@" > $log_file 2>&1
FAIL: t-toom22 …Run Code Online (Sandbox Code Playgroud) 尝试安装R gmp包时,安装失败,因为出现以下错误:configure: error: 头文件 gmp.h not found
整个日志:
> installing *source* package 'gmp' ...
> package 'gmp' successfully unpacked and MD5 sums checked
> using staged installation
> checking for gcc... gcc
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU …Run Code Online (Sandbox Code Playgroud)