自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员的自我修养_Will.zhang

关注多核计算&高性能计算

  • 博客(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

原创 COMX安装注意事项

安装comx平台时要把360和杀毒软件关掉先。安装新版本时旧版本应该卸掉并删除旧文件,否则可能出错。

2012-03-08 11:08:17 868

原创 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能力检测工具

GPU发展越来越快,性能也越来越强大,它也不再仅限于3D图形加速了,GPGPU通用处理器才是未来的发展方向,而且也是以C语言为基础,为CUDA编程也不困难。CUDA的前景很好,普及应该是很迅速的。 CUDA-Z就像我们常用的GPU-Z,但是具体参数就变成了针对CUDA应用方面的信息,支持CUDA信息查询,还可以测试电脑CUDA的速度。新版本加入对Double性能测试,需要GT200或以上显卡才支持此项测试。

2013-04-15

vs2010助手破解版

注意: 用vs2010的朋友必须将“工具”-“选项”-“环境”-“扩展管理器“-”以管理员身份..."选上,否则助手无效

2013-03-26

GPU-Z.0.6.9

GPU-Z是一款轻量级显卡测试软件。绿色免安装,界面直观,运行后即可显示GPU核心,以及运行频率、带宽等,如同CPU-Z一样,这也是款必备工具。用于显卡检测,适用于GPU通用计算领域。

2013-03-26

所有关于树的函数实现

所有关于树的函数实现 数据结构与算法 所有关于树的函数实现

2011-11-09

C++ 编程思想

C++ 编程思想 帮助你更好的学习C++ 编程思想

2011-11-08

最优化方法作业

最优化方法作业 大连理工大学

2011-11-08

Wolfe Powell 最优化方法 C++ 程序

Wolfe Powell 最优化方法 C++ 程序

2011-11-08

Wolfe Powell 最优化方法 C++ 程序

Wolfe Powell 最优化方法 C++ 程序

2011-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除