資源簡介
天津大學并行計算實驗報告第一二次的實驗,最好還是自己動手做啊,這個只是用來參考的。而且這么簡單的實驗,有抄襲的必要么?那也太弱了。

代碼片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
using?namespace?std;
pthread_mutex_t?mutex?=?PTHREAD_MUTEX_INITIALIZER;/*初始化互斥鎖*/
pthread_cond_t?cond?=?PTHREAD_COND_INITIALIZER;/*初始化條件變量*/
long?long??maxn?;????//計算規模
double?ans?=?0;??????//結果
long?long??pnum?=?10;//線程數
long?long?maxn2;?????//
long?long?over;??????//線程結束數
struct?node{?????????//保存每個線程計算的起點和終點
????long?long??beginend;
};
void?*thread(void*xx)?//線程執行指令
{
????double?x?=?0yy;
????node?y?=?*(node*)xx;
????long?long?maxn1?=?(long?long)maxn*maxn;
????for(long?long??i?=?y.begin;i?????{
????????x?+=?1.0/(maxn1+(i+0.5)*(i+0.5));
????}
????pthread_mutex_lock(&mutex);?//加鎖更新總結果以及更新線程結束的個數
????ans?+=?x;
????over++;
????pthread_mutex_unlock(&mutex);//解鎖
????void?*statu;
????pthread_exit(&statu);//結束線程
}
int?main(int?argc?char*argv[])
{
???struct?timeval?tv;
???gettimeofday(&tv?NULL);
???double?time_start?time_end;?//保存程序開始時間和結束時間
???//獲取當前開始時間
???time_start?=?(double)tv.tv_sec?+?(double)tv.tv_usec?/?1000000.0;
???pnum?=?atoi(argv[1]);????????//獲取線程數
???maxn?=?atoi(argv[2]);????????//獲取數據規模
???pthread_t?pid[1000];?????????//保存線程id
???node?xx[1000];
???maxn2=?(long?long?)maxn*maxn;
???over?=?0;
???//給每個線程分配計算的開始和結束位置,并創建線程
???long?long??begin?=?0?length?=?(maxn+pnum-1)/pnum;
???for(long?long??i?=?0;i????{
????????xx[i].begin?=?begin;
????????xx[i].end?=?min((long?long)maxnbegin+length);
????????begin?=?begin+length;
????????pthread_create(&pid[i]NULLthread&xx[i]);
???}
???while(over?!=?pnum)?{usleep(5);}?//查看是否所有線程完成任務
???ans??=?4.0*ans*maxn;
???pthread_mutex_destroy(&mutex);
???gettimeofday(&tv?NULL);????????//獲取當前結束時間
???time_end?=?(double)tv.tv_sec?+?(double)tv.tv_usec?/?1000000.0;
???//輸出結果
???printf(“pnum:%lld?scale:%lld?the?pi?result:%0.10lf???thetimecost:%lf\n“pnummaxnanstime_end-time_start);
???return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????154624??2014-03-28?20:49??1_多線程求pi?-?副本.doc
?????文件?????1350144??2014-03-28?20:49??2_多線程求卷積?-?副本.doc
?????目錄???????????0??2014-03-20?09:29??test1\
?????文件?????????371??2014-03-18?10:41??test1\shell1.txt
?????文件????????2188??2014-03-20?08:50??test1\test1.cpp
?????目錄???????????0??2014-03-20?09:29??test2\
?????文件??????????71??2014-03-20?13:26??test2\2.txt
?????文件??????525798??2014-03-21?12:37??test2\dataout0.txt
?????文件??????526769??2014-03-21?12:37??test2\dataout1.txt
?????文件??????527484??2014-03-21?12:37??test2\dataout2.txt
?????文件??????527492??2014-03-21?12:37??test2\dataout3.txt
?????文件??????527501??2014-03-21?12:37??test2\dataout4.txt
?????文件?????3096826??2014-03-21?14:10??test2\dataout5.txt
?????文件????????2691??2014-03-21?15:06??test2\test2.cpp
- 上一篇:高數課本基礎知識整理
- 下一篇:射頻通信原理
評論
共有 條評論