GSL¶
简介¶
GSL(GNU Scientific Library)是专门为应用数学和科学技术领域的数值计算提供支持的软件库。GSL使用C语言编写,同时也为其他语言做了相应的封装。GSL在GNU通用公共许可下是免费的。该函数库提供了广泛的数学算法的实现函数,包括随机数生成器,特殊函数和最小二乘拟合等等。目前该函数库提供有超过1000个函数,这些函数包含的范围有:复数计算、多项式求根、特殊函数、向量和矩阵运算、排列、组合、排序、线性代数、特征值和特征向量、快速傅里叶变换(FFT)、数值积分、随机数生成、随机数分布、统计、蒙特卡洛积分、模拟退火、常微分方程组、插值、数值微分、方程求根、最小二乘拟合、小波变换等。
集群中的GSL¶
安装列表¶
序号 |
集群 |
版本 |
模块名 |
编译环境 |
位置 |
---|---|---|---|---|---|
1 |
hpckapok1 |
2.7 |
gsl/2.7 |
gcc13.3.0 |
/share/software/gsl |
2 |
hpckapok2 |
2.8 |
gsl |
gcc8.5 |
/public/software/apps/gsl/2.8 |
使用方法¶
1.创建gsltest目录并进入该目录
mkdir gsldir
cd gsldir
2.在该目录下编写计算矩阵的特征值和特征向量testgsl.c文件
#include <stdio.h>
#include <gsl/gsl_matrix.h>
#include <gsl/gsl_eigen.h>
int main() {
gsl_matrix * m = gsl_matrix_alloc(3, 3);
gsl_vector * eval = gsl_vector_alloc(3);
gsl_matrix * evec = gsl_matrix_alloc(3, 3);
gsl_matrix_set(m, 0, 0, 1.0);
gsl_matrix_set(m, 0, 1, 2.0);
gsl_matrix_set(m, 0, 2, 3.0);
gsl_matrix_set(m, 1, 0, 2.0);
gsl_matrix_set(m, 1, 1, 4.0);
gsl_matrix_set(m, 1, 2, 5.0);
gsl_matrix_set(m, 2, 0, 3.0);
gsl_matrix_set(m, 2, 1, 5.0);
gsl_matrix_set(m, 2, 2, 6.0);
gsl_eigen_symmv_workspace * w = gsl_eigen_symmv_alloc(3);
gsl_eigen_symmv(m, eval, evec, w);
gsl_eigen_symmv_free(w);
gsl_eigen_symmv_sort(eval, evec, GSL_EIGEN_SORT_ABS_DESC);
printf("Eigenvalues:\n");
for (int i = 0; i < 3; i++) {
printf("%g\n", gsl_vector_get(eval, i));
}
printf("\nEigenvectors:\n");
for (int i = 0; i < 3; i++) {
gsl_vector_view evec_i = gsl_matrix_column(evec, i);
printf("Eigenvector %d: \n", i + 1);
gsl_vector_fprintf(stdout, &evec_i.vector, "%g");
}
gsl_matrix_free(m);
gsl_vector_free(eval);
gsl_matrix_free(evec);
return 0;
}
3.在该目录下编写如下testgsl.slurm脚本
#!/bin/bash
#SBATCH --job-name=gsltest
#SBATCH --partition=cpuXeon6458
#SBATCH --ntasks-per-node=1
#SBATCH -n 1
#SBATCH --output=%j.out
#SBATCH --error=%j.err
ulimit -s unlimited
ulimit -l unlimited
module swap gnu12 gcc/13.3.0
module load gsl/2.7
gcc testgsl.c -o testgsl -lgsl -lgslcblas -lm
./testgsl
4.提交testgsl.slurm脚本
sbatch testgsl.slurm
5.作业完成后在.out文件中可看到如下结果:
Eigenvalues:
11.3448
-0.515729
0.170915
参考资料¶
Contributor:X君
最后更新:
2025 年 06 月 30 日