- 博客(20)
- 资源 (8)
- 收藏
- 关注
原创 显式算法和隐式算法的并行化比较
1显式算法显式算法基本假定为:在一微小时间段内,模型任意点速度、加速度为常数。ABAQUS软件Explicit模块应用中心差分法对运动方程进行显式时间积分,运动方程的解为¨u(i)=M-1·(F(i)-I(i)) (1)式中:M 为集中质量矩阵;F 为外荷载向量;I 为单元内力向量。由于显式算法中不需要对刚度矩阵求逆,集中质量矩阵为对角矩阵,求逆简便,使显式算法并行计算数据传输
2012-03-26 11:17:23 9700 1
转载 [初学者的困惑] 堆和栈的区别 (转)
一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(s
2012-03-20 21:20:59 842
原创 视C++为一个语言联邦.
最近在看Effective C++. 相信一开始接触C++的人都会被C++搞晕掉.因为C++的类库如此之多,而且守则都不一样.如何利用做开发真的很晕迷.其实在Effective C++中的条款01:视C++为一个语言联邦,真的是很简单清楚的给出了C++这个语言一个明了的概述.C++是一个语言的联邦.就像美国是联邦政府一样.C++也是一个联邦政府,是4个次语言的联邦,这4个次语言的守则
2012-03-20 21:18:02 1208
原创 Sublime Text2一些快捷键收藏
快捷键 XP版Ctrl+L 选择整行(按住-继续选择下行) Ctrl+KK 从光标处删除至行尾 Ctrl+Shift+K 删除整行
2012-03-15 19:25:56 3566 2
转载 矩阵乘法的并行化改造
在嵌套循环中,如果外层循环迭代次数较少时,如果将来CPU核数增加到一定程度时,创建的线程数将可能小于CPU核数。另外如果内层循环存在负载平衡的情况下,很难调度外层循环使之达到负载平衡。 下面以矩阵乘法作为例子来讲述如何将嵌套循环并行化,以满足上述扩展性和负载平衡需求。 一个串行的矩阵乘法的函数代码如下:/** 矩阵串行乘法函数 @param in
2012-03-11 16:40:53 2676
转载 动态设置线程数量的例子
const int MIN_ITERATOR_NUM = 4; int ncore = omp_get_num_procs(); //获取执行核的数量 int max_tn = n / MIN_ITERATOR_NUM; int tn = max_tn > 2*ncore ? 2*ncore : max_tn; //tn表示要设置的线程数量#pragma omp paralle
2012-03-11 16:04:23 3683 1
原创 openmp编程珠玑
心得1:对于无数据共享的并行,例如for并行中,算法逻辑越简单,获得的加速比越大。若有冗余的数据存储传递,反而造成效率的下降。心得2:要使数据忙于计算而非闲置和交互,否则会牺牲并行度。心得3:对于有数据共享的并行,尽量采用粗粒度。心得4:区域分解、功能分解、分而治之。总之,并行编程,如烹小鲜。
2012-03-11 11:45:16 1023 2
原创 Openmp补遗之同步
一、 atomic编译指导语句指定特殊的存储单元将被原子地更新,不允许多个线程同时执行更新操作。如果不写,其结果将不可预料。谨之慎之二、critical编译指导语句临界区声明方法#pragma omp critical [(name)] //[]表示名字可选{ //并行程序块,同时只能有一个线程能访问该并行程序块}cri
2012-03-11 10:24:35 914
原创 Openmp补遗之数据共享&归约子句的学习
共享与私有变量声明的方法声明方法 功能shared(val1,val2,...) 共享变量在存储器中只有一份拷贝,所有的线程都能对它进行读写访问。正确性将由程序员来决定。 得到声明,初始赋值且写回private(val1, val2, ...)
2012-03-11 00:44:23 1322
原创 for循环并行化的约束条件
尽管OpenMP可以方便地对for循环进行并行化,但并不是所有的for循环都可以进行并行化。以下几种情况不能进行并行化:1. for循环中的循环变量必须是有符号整形。例如,for (unsigned int i = 0; i 2. for循环中比较操作符必须是, >=。例如for (int i = 0; i != 10; ++i){}会编译不通过;3. for循环中的第三个表达式,必须
2012-03-09 19:49:40 2946 1
原创 关于C++ 里使用Openmp并行之cout混乱输出的解决方法
#pragma omp parallel {#pragma omp for for(int i=0;i<10;++i) std::cout<<i<<" "<<endl; // printf("%d \n",i); }很多技术书籍里面,Openmp实例都是用C写的,可很多用户在自己练习的时候都喜欢用自己熟悉的
2012-03-09 10:52:34 3737 2
原创 并行编程中用来分解数据的数据结构以及手动分配任务方法
struct { int start; int end; }value[] = { {0 , NUMBER >> 1}, {NUMBER >> 1, NUMBER} }; 以上代码是用于实现数据分解归约的数据结构。示例中此结构将数据分成两段分别取得首尾,方便函数调用。
2012-03-08 23:06:11 997
原创 Openmp并行简单算例1
#include #include #include int main(void){ static long num_steps=1000000000; double step; int i; double x,pi,walltime,sum=0.0; step=1.0/(double)num_steps; omp_set_num_threads(NUM_T
2012-03-08 11:19:55 737
转载 什么叫显示动力学,什么叫隐式动力学分析!
1、显式算法基于动力学方程,因此无需迭代;而静态隐式算法基于虚功原理,一般需要迭代计算2、显式算法最大优点是有较好的稳定性。 动态显式算法采用动力学方程的一些差分格式(如广泛使用的中心差分法、线性加速度法、Newmark法和wilson法等),不用直接求解切线刚度,不需要进行平衡迭代,计算速度快,时间步长只要取的足够小,一般不存在收敛性问题。因此需要的内存也比隐式算法要少。并
2012-03-08 11:10:16 19991 2
转载 分析和比较ABAQUS、MARC、Adina、ANSYS三种CAE软件
有关市面上各种CAE软件用户究竟有多少? 很难评估,但可以肯定不管什么用户(合法或非法用户),我个人统计、调研(包括网上论坛、文章发表等)可以肯定ANSYS软件的用户最多。其主要原因是: 1. ANSYS软件自带的前后处理功能较强; 2. Ansys有教育版 1. 市面上最多用户CAE软件---可能是ANSYS 有关市面上各种CAE软件用户究竟有多少? 很难评估,但可以肯定
2012-03-08 11:09:20 19237 2
原创 KUL3.0版学习手册
1.安装comx 3.0版本。2.设置环境变量 path Y:\comx_sdk\distribute\;Y:\comx_sdk\bin\;Y:\comx_sdk\lib\common\3.设置COMX_SDK Y:\comx_sdk\ (不设置无法使用kulreg 注册kul文件)4.cmd5.header -h 在任意目录编写kul文件。6.kulreg
2012-03-08 11:07:33 558
转载 OpenMP多线程应用程序性能分析
影响性能的主要因素根据前述的Amdahl定律,我们应当努力提高并行化代码在应用程序中的比率,这是通用的提高效率的方法。 1、OpenMP本身的开销OpenMP获得应用程序多线程并行化的能力不是凭空而来的,而是需要一定的程序库的支持。在这些运行时的程序库对程序并行加速的同时需要运行库的本身,因此,库中代码的运行必然会带来一定的开销。实际上,并不是所有的代码都是需要并行化的,非常
2012-03-08 10:45:24 2861
转载 OpenMP多线程应用程序编程技术
2.1 循环并行化 1、循环并行化编译指导语句的格式循环并行化是使用OpenMP来并行化程序的最重要的部分,它是并行区域编程的一个特例。在C/C++语言中,循环并行化语句的编译指导语句格式如下:#pragma omp parallel for [clause[clause…]] for( index = first ; test_expression ; in
2012-03-08 10:44:04 1871
转载 OpenMP和MPI比较(转)
OpenMP和MPI是并行编程的两个手段,对比如下:OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式);可扩展性差;MPI:进程级;分布式存储;显式;可扩展性好。OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群。MPI虽适合于各种机器,但它的编程模型复杂:需要分析及划分应用程序问题,并将问题映射到分布式进程集合;需要解决通信延迟大
2012-03-08 10:39:04 2003
CUDA_Zcuda能力检测工具
2013-04-15
GPU-Z.0.6.9
2013-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人