MPI:
首先我得说明一下对MPI的环境搭配完全要感谢万星星的那片帖子了,完全一五一十的配置,然后程序是照书上的写的,这里推荐一下并行计算导论这本书了,还是不错的,介绍算法的很多,当然并行的最直接受益者就是算法了,相对显示的并行,算法的并行要简单很多,而且效率、受益也是最好的,这本书对一些基本的并行语言和思想,算法进行分类讲解,虽然对没一点不是很深入,但是还是很有使用,毕竟技术的学习可以去网上查一大堆,核心技术和思想则需要自己的总结。
对于MPI,首先就是去网上下载MPI的库啦,网址如下:http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads,去下载自己平台下面的库吧,然后就是安装了,然后在path路径下设置bin,在vc6的directory下面设置include和library下面设置,然后就是编写MPI的第一个小程序啦,呵呵,自然是hello world了:
#include "mpi.h"
#include <cstdio>
int main(int argc, char* argv[])
{
int npes,myrank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD,&npes);
MPI_Comm_rank(MPI_COMM_WORLD,&myrank);
printf("Hello World! from process %d out of %d\n",myrank,npes);
MPI_Finalize();
return 0;
}
这里同样发现了那个mpicxx.h的问题,自然按照说法,添加一个#define MPICH_SKIP_MPICXX,来躲避这个预编译啦,OK,程序可以运行啦,尽管我的CPU是双核的,但我理解还是认为我是单CPU,所以只能有一个hello world啦,呵呵,再次万分感谢万星星的文档,让我非常惬意的就实现了一个MPI的入门开发,可惜由于硬件和工作的需要,我还是要把精力放在OpenMP这种线程级别的学习上,这个MPI只能在闲得无聊的时候在进行学习了,感觉在MPI中关键的指令有下面几个:
MPI_Init、MPI_Finalize、MPI_Comm_size、MPI_Comm_rank、MPI_Send、MPI_Recv,个人感觉就这几个应该够用了,还是那句话,关键是思想了^_^
对于OpenMP,个人发现还是太容易上手了,怎么感觉有点asp的味道了,呵呵,当然感觉功能也有点弱,说实话也只是了解皮毛,没有真正在开发中用到这个,所以还不好妄加评论,等日后有了一些学习在说啦。
另外,今天的演示很成功,呵呵,顺利通过o(∩_∩)o
最有成就的就是对字体轮廓的反走样处理啦,简单说就是对GDI下的BeginPath和EndPath的捕捉的任何笔画和形状通过直线LineTo和贝塞尔曲线实现绘制,发现效果还是很不错的,和普通的字体绘制textout几乎一摸一样,呵呵,但是要实现反走样,而线的反走样在Windows下GdiPlus采用,而这个++反而减减了这个非常强大的捕捉功能,所以只好将GDI下的笔画和类型一个一个的加入到Graphicspath中去啦,具体的就不多说了,不过个人感觉这个path还是挺不错的一个功能,虽然我不怎么会用,PolyDraw还是也就被我演绎成了一个gc.DrawPath了,呵呵,非常不错的反走样效果,比我想的要好的,还是很有成就感的,当然似乎发现了在GDI的path下是不是MoveTo指令有一个小bug 啊?当LineTo处理了?还是我用错了,不过我还是避开了。这里还是推荐那本图形编程了,对于每一个Windows显示的程序员,这,真的就是葵花宝典啊。