gpt4 book ai didi

c - GSL:在样条线之间共享加速器

转载 作者:行者123 更新时间:2023-11-30 14:48:20 26 4
gpt4 key购买 nike

我正在使用 GSL 进行大量三次样条插值。假设我有三个自变量 abc,所有变量都在相同的物理数据点上制表(可能是同一组位置)以米、英尺和英里为单位),以及两个因变量 yz,在相同点处制表。也就是说,函数 y(a)y(b)y(c)z(a )z(b)z(c) 已制成表格。我现在为这些函数创建 6 个三次样条线,如下图所示的 y(a) 样条线:

gsl_interp_accel *acc = gsl_interp_accel_alloc();
gsl_spline *spline = gsl_spline_alloc(gsl_interp_cspline, size);
gsl_spline_init(spline, a, y, size);

其中 sizeay 数组的大小(所有六个数组的大小相同)。

我的问题:我真的需要为每个样条线配备单独的加速器吗?这种方式更快吗?跨多个样条线共享加速器是否安全?

最佳答案

是的,每个样条线都需要一个加速器,并且在多个样条线中使用相同的加速器对您来说绝对不安全。正如您自己已经猜到的那样,我认为加速器是一种预处理,在最好的情况下会减慢给定混合输入的插值速度。
如果您关心创建加速器并经常释放它们的性能方面,只需保留加速器并在每次使用后重置它们即可。
根据二进制文件的大小和影响内存查找的其他因素,在编译期间使用 -DHAVE_INLINE=1 可以显着提高性能。它将从 header 内联 gsl_interp_accel_find 而不是使用 libgsl 中的编译版本。

关于c - GSL:在样条线之间共享加速器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50469068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com