原创 並行計算的一些背景知識
1.馮諾依曼結構 經典馮諾依曼結構爲 : 主存, 中央存貯單元(CPU) , 以及 主存和中央存貯單元之間的傳輸部分。CPU 又由 ALU(計算單元)和 控制單元組成。 主存和CPU之間的分離稱爲馮諾依曼瓶頸。 2.
原创 阿姆達爾定律和Gustafson law
阿姆達爾定律 Strong scaling is a measure of how, for a fixed overall problem size, the time to solution decreases as more
原创 MPI 初探
MPI(消息傳遞藉口), 直接上 哈羅世界 #include <stdio.h> #include <string.h> #include <mpi.h> // mpi頭文件 const int Max_string = 100;
原创 畫家問題和撥鍾問題 枚舉法 舉例
畫家問題: 總時間限制: 1000ms 內存限制: 65536kB 描述有一個正方形的牆,由N*N個正方形的磚組成,其中一些磚是白色的,另外一些磚是黃色的。Bob是個畫家,想把全部的磚都塗成黃色。但他的畫筆不好使。當他用畫筆塗畫第(i,
原创 遞歸-棋盤分割問題
Language: Default 棋盤分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 11819 Accepted: 4175 Descri
原创 MPI中的歸約
在上面一篇文章中,有一個利用梯形積分求面積的程序, 在程序中,線程0用來接受每一個小小梯形的面積然後在將所有梯形求和,很明顯, 當數據傳到線程0時,其他線程就停止了工作,這樣造成所有求和都是由線程0來進行的。 爲了讓儘量多的線程進行工作,
原创 一個遞歸問題
// Created by baicai on 14-5-10. // 遞歸問題 /* 遞歸中兩個重要的點 : 1.遞歸公式 2.終止條件 */ /* 函數的局部變量存在棧中,可能會棧溢出,所以可以考慮使用全局數組,或者動態分配數組
原创 並行Pi的計算
主要考慮兩種PI的計算方法 , 一種爲積分法的用共享內存試的GPU實現, 另外一種爲在面積估算MPI僞代碼實現。 1.積分法求pi // 計算PI // 算法:在[0,1]範圍內積分 1/(1+x*x) // 做積分,把每一個bl
原创 CUDA筆記2-循環展開
CUDA循環展開 串行循環展開 loop unrolling是一種犧牲程序的尺寸來加快執行速度的優化方法。拿數組來說,數組的數據在內存中是連續存儲的,每次取數據的時候可以一次抓取相鄰的多個數據,從而減少從內存中讀取數據的時間,優化程序
原创 MPI 實現梯形積分法
梯形面積和 = h * ( f(x0)/2 + f(x1) + ....... + f(xn)/2) h = (b-a)/n; // 正常版僞代碼 h= (b-a)/n; approx = (f(a)+f(b))/
原创 Cuda筆記1 --- 內積
/* CUDA 內積簡單例程 */ const int THREAD_DIM = 256; void __global__ dot(const float* d_a, const float* d_b, float*
原创 漢諾塔問題的兩種解法
/* 漢諾塔 遞歸解法 */ #include <iostream> using namespace std; void Hanoi(int n,char src,char mid,char dest){ if (n == 1)
原创 大整數加減乘除
LOW-END 版: #include <iostream> #include <iomanip> #include <cstring> #include <string> using namespace std; const in