以下程式碼展示 host memory與device memory之間的關係, 變數命名 host 開頭表示是在 host memory, dev 開頭表示是在 device memory. 一開始初始化 host_a[], 然後用cudaMemcpy() 複製至 dev_a[], 平行呼叫 kernel 函數 shared() 後, 將 dev_a[] 複製至 x[], x是shared memory, 可在同一個 block 內的所有 thread 使用.
|
以下程式碼展示 host memory與device memory之間的關係, 變數命名 host 開頭表示是在 host memory, dev 開頭表示是在 device memory. 一開始初始化 host_a[], 然後用cudaMemcpy() 複製至 dev_a[], 平行呼叫 kernel 函數 shared() 後, 將 dev_a[] 複製至 x[], x是shared memory, 可在同一個 block 內的所有 thread 使用.
|
RMT的MR值只看相關性, 與震動的實際絕對大小無關, 小震動也有可能造成高MR值. 照原本RMT的設計理念, 地震發生MR應該會升高, 如果把地震發生看成一個變數, MR高低看成一個變數, 組合起來有4種狀況:
在 CUDA 中, 以軟體觀點來看, 一個 grid 由許多 block 組成, 一個 block 由許多 thread 組成, 每一個 kernel 函數執行時, 可以從 threadIdx 與 blockIdx 取得編號, 但是並沒有 gridIdx, 這表示每一個平行處理的執行, 是在同一個 grid 下進行. BlockSize 與 ThreadSize 的數量受限於 GPU 的硬體架構, 平行處理的函數呼叫語法是:
函數名稱 < << BlockSize, ThreadSize>> > (函數參數)
觀察低氣壓期間的Warning, Mw與MR值
17:32 [43.6N,128.0W] 奧勒岡外海 M6.3, 第一次收集到這個位置的訊號, 距離台灣約9750公里, 到台灣全部經過海域, 無陸地阻隔, 波速=9750/1380=7.06km/s,
最大訊號 Mw=4.9 發生於 18:10:43,
最近開始研究CUDA,準備做演算法加速, 因此生出這篇筆記。因CUDA 是叫用 nvcc 進行編譯,CUDA函數無法被C#直接呼叫,在同一個CUDA專案中只能用C或C++來呼叫 CUDA,因此必須在CUDA專案中加一個C/C++的wrapper函數,將CUDA專案包裝成C語言的DLL檔,然後在C#中用DllImport呼叫C函式來轉給CUDA計算。以下實作以Visual Studio 2017 Community與 CUDA 9.2 SDK為例,完整程式碼在https://github.com/ghostyguo/CudaDotNet。
建立Cuda/C++ DLL程式庫
22:56 [8.4S,116.6E] 印尼龍目島 M6.9, 距離台灣約3500公里
最大訊號 Mw=5.9 發生於: 23:09:15
以下影片標示已知發生之地震, 遠方地震後約有1.5~2小時的持續訊號 , 下列訊號疑似產生在實際地震發生之前: