原创 並行計算的一些背景知識

    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