首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gsl_integration_qag在gsl openmp中失败

gsl_integration_qag在gsl openmp中失败
EN

Stack Overflow用户
提问于 2018-11-13 09:54:36
回答 1查看 648关注 0票数 0

gsl_integration_qag与一个核心(有/没有openMP)一起工作,但是在多线程(即>1)中失败。

一些可能有助于..。

  1. gsl-2.5
  2. #定义_OPENMP 201107
  3. 根据核心的数量,我可以获得以下错误报告: qag.c:248: ERROR:舍入错误阻止了公差的实现(注释:通常有少量的核) gsl: qag.c:257: ERROR:达到的最大细分数(注释:通常有大量的核)
  4. 给gsl_integration_qag的一个大的最大迭代数只会延迟代码崩溃。
  5. 集成功能是(如果需要的话可以更具体): 双函数(双重Param1,.,双重ParamN){双重结果,误差;gsl_function F;gsl_integration_workspace *w= gsl_integration_workspace_alloc (1000);结构parameters_gsl_int_ parameters_gsl ={ .Param1 = Param1,.ParamN = ParamN,};F.function = &func_integrand;F.params =¶meters_gsl;gsl_integration_qag (&F,LOWER_LIMIT,UPPER_LIMIT,0,0.001,1000,GSL_INTEG_GAUSS61,w,& return,&error);gsl_integration_workspace_free (w);返回结果;}
  6. 调用集成的OpenMP部件是: call_Func(int,double array[],double Param1[],double Param2,…双ParamN){ int i;.#实用型omp并行共享(Nbin,数组,Param1,.,ParamN)私有(I){#语用omp for (i=0;i

我对GSL和openMP都是新手。我希望我正确地使用了gsl_integration_qag,并且共享或私有变量的定义是有意义的。

顺便说一句,这和2014年的问题(gsl openmp failed integration)是一样的,但我在这篇文章中找不到解决办法。

EN

回答 1

Stack Overflow用户

发布于 2018-11-19 20:49:39

问题解决了..。

这实际上是因为func_integrand也有一个使用gsl_integration_qag估计的术语。在这个计算中采用了一些全局变量,我以前没有捕捉到。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53278276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档