PIXNET Logo登入

No More Codes

跳到主文

歡迎光臨ghostyguo在痞客邦的小天地

部落格全站分類:生活綜合

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 6月 16 週二 202013:56
  • [CUDA] nvJPEG / nvJPEG_encoder

undefined
為了瞭解 nVidia 關於 JPEG 的支援, 蒐集一些資料, 做個紀錄

程式碼來源: https://github.com/NVIDIA/cuda-samples
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(95)

  • 個人分類:CUDA
▲top
  • 1月 28 週二 202014:19
  • 使用 ffmpeg 之 cuda 編碼器將 DVD 轉換成 mp4 格式

ffmpeg 使用 cuda 編碼器的參數範例:
ffmpeg -i "concat:VTS_01_1.VOB|VTS_01_2.VOB|VTS_01_3.VOB|VTS_01_4.VOB" -c:v h264_nvenc -preset slow -crf 22 -c:a copy "output.mp4"
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(62)

  • 個人分類:CUDA
▲top
  • 8月 31 週五 201822:25
  • [CUDA] CudaFilter

undefined
使用 cudaFilter 的範例 (須 include cudafilters.hpp)


#include "cuda_runtime.h"

#include "device_launch_parameters.h"

#include <opencv2/core.hpp>

#include <opencv2/imgcodecs.hpp>

#include <opencv2/highgui.hpp>

#include <opencv2/imgproc.hpp>

#include <opencv2/core/cuda.hpp>

#include <opencv2/cudafilters.hpp>

#include <stdio.h>

#include <Windows.h>

 

using namespace cv;

using namespace cuda;

 

int main()

{

     int filterSize = 5;

     char *filename = "D:\\LENA.JPG";

 

     // load source image

     Mat srcMat = imread(filename, IMREAD_GRAYSCALE); // Read the file and convert to grayscale

     GpuMat  srcGMat(srcMat), destGMat;

 

     //run opencv cuda filter

     Ptr<Filter> filter = createBoxFilter(srcGMat.type(), -1, cv::Size(filterSize, filterSize));       //BoxFilter=blurFilter

     filter->apply(srcGMat, destGMat);

 

     // get processing result

     Mat destMat;

     destGMat.download(destMat);

 

     //show results

     imshow("Source window", srcMat);

     imshow("Dest window", destMat);

    

     waitKey(0); // Wait for a keystroke in the window

 

     return 0;

}



(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(47)

  • 個人分類:CUDA
▲top
  • 8月 31 週五 201812:30
  • [CUDA+OpenCV] GpuMat 結合 kernel 運算

undefined
OpenCV 的 GpuMat 類別, 可以在 device 的 global memory 建立 Mat 物件, 可以被 kernel 函數直接存取, 以下以 sobel 運算子為例, 將 srcMat (位於host memory) 載入影像後, 轉換至 srcGMat (位於device memory), 經處理後放至 destGMat (位於device memory), 然後下載回 destMat (位於host memory)再顯示出來.
程式中使用 OpenCV 定義於 cuda_types.hpp 的 PtrStep 的樣板結構, 代入定義於 WIndows.h 的 byte, 這樣比較方便. 如果要用 cuda 編譯器 nvcc 內建的  uchar1 , 查看 vector_types.h, 它是一個結構 (向量):
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(128)

  • 個人分類:CUDA
▲top
  • 8月 30 週四 201822:34
  • [CUDA] 與 OpenCV 共舞

undefined
取得 CUDA 版的 OpenCV 後, 使用 OpenCV 前, 先建立環境變數 OPENCV_DIR, 使其指向 opencv 目錄 ( C:\opencv\build\ ):
建立名稱為 OpenCvExample 的 CUDA 專案, CUDA精靈會自動建立一個 kernel.cu 檔 :
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(569)

  • 個人分類:CUDA
▲top
  • 8月 30 週四 201800:35
  • [CUDA] OpenCV CUDA 程式庫

undefined
OpenCV  現在有支援 CUDA 與 OpenCL, 但是官網預先編譯過的程式庫並未包含 CUDA, 所以要自行從原始檔進行編譯.
1. 先從 OpenCV官網下載原始檔, 然後解壓縮.
2. 下載 CMake 安裝檔, 並完成安裝.
啟動 CMake 後, 在上方先輸入解壓縮後的目錄以及輸出目錄 (一般習慣為專案目錄下的build),並勾選 Grouped 與 Advanced, 然後按 Configure 按鈕, 就會讀取專案的設定檔, 在還未 Generate 前, 選項是紅色的:
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(1) 人氣(120)

  • 個人分類:CUDA
▲top
  • 8月 29 週三 201812:17
  • [CUDA] 更新Visual Studio後無法編譯的問題

undefined
由於 CUDA 對 Visual Stidio 的 Integration 會檢查版本, 如果安裝 CUDA 之後更新升級 Visual Stdio, 可能導致因版本錯誤而出現以下訊息:
    #error -- unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported!
這個問題可以透過修改 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include\crt\host_config.h 的內容來解決, 只要將檢查版本的敘述修正一下就可以 :
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(93)

  • 個人分類:CUDA
▲top
  • 8月 25 週六 201816:56
  • [CUDA] 平行化之 Scan 演算法

undefined
影像處理 histogram 等化處理時, 把 histogram 視為機率分布函數 (pdf), 經常將其積分為累積分布函數 cdf, 例如:
(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(419)

  • 個人分類:CUDA
▲top
  • 8月 25 週六 201811:42
  • [CUDA] 平行化之 Reduce 演算法

undefined
考慮一個典型的總和運算 :


     int sum = 0;


     for (i = 1; i < N; i++) {


         sum += i;


   }




(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(203)

  • 個人分類:CUDA
▲top
  • 8月 24 週五 201821:45
  • [CUDA] 多重讀取與寫入的互斥問題

undefined
如果 kernel 執行時, 不同的 thread 對同一個變數進行讀取與寫入, 會發生甚麼事呢? 當不同thread被同時執行時, 同時去讀取同一個變數, 得到相同的值, 如果把此值運算後同時又寫回去, 最後的值就不一定是多少了, 以下程式開啟 BlockSize*ThreadSize 個 thread 去執行把 global memory 陣列變數加1的動作 :


#include "cuda_runtime.h"


#include "device_launch_parameters.h"


#include <stdio.h>


 


#define ThreadSize 1000


#define BlockSize  10000


#define ArraySize 10


 


__global__ void incKernel(int *a)


{


     int i = (blockIdx.x*blockDim.x + threadIdx.x) % ArraySize;


     a[i] = a[i] + 1;


}


 


int main()


{


     int host_a[ArraySize];


     int *dev_a = 0;


     float elapsedTime;


 


     // setup performance meter from CUDA ----------


     cudaEvent_t start, stop;


     cudaEventCreate(&start);


     cudaEventCreate(&stop);


 


     cudaSetDevice(0);


     cudaMalloc((void**)&dev_a, ArraySize * sizeof(int));


 


     for (int run = 0; run < 10; run++) {


 


         cudaMemset(dev_a, 0, ArraySize * sizeof(int));         //clear


 


         cudaEventRecord(start, 0); //keep start time


         incKernel << <BlockSize, ThreadSize >> > (dev_a); //calculate


         cudaEventRecord(stop, 0); //keep stop time


         cudaEventSynchronize(stop); //wait stop event    


         cudaEventElapsedTime(&elapsedTime, start, stop); 


 


         cudaMemcpy(host_a, dev_a, ArraySize * sizeof(int), cudaMemcpyDeviceToHost);


         //Print result


         printf("run {%d}: ",run);


         for (int i = 0; i < ArraySize; i++) {


              printf("%d ", host_a[i]);


         }


         printf(" t=%f\n",elapsedTime);


     }


     //cudaDeviceSynchronize();


     getchar();


 


     cudaFree(dev_a);


     return 0;


 


}




(繼續閱讀...)
文章標籤

ghostyguo 發表在 痞客邦 留言(0) 人氣(10)

  • 個人分類:CUDA
▲top
12»

文章分類

toggle 雜項記錄 (3)
  • Synology (6)
  • RouterOS (2)
  • Windows (1)
toggle 硬體設計 (1)
  • Verilog (2)
toggle 訊號處理 (4)
  • RMT觀察 (106)
  • P-alert觀察 (12)
  • 地震訊號 (16)
  • 科普知識 (1)
toggle Raspberry Pi (1)
  • 安裝設定 (7)
toggle 程式設計 (16)
  • C/C++ (1)
  • LinkIt (1)
  • Android (1)
  • JavaScript (1)
  • CUDA (16)
  • STM (1)
  • ESP32 (9)
  • OpenCV (1)
  • PLC (6)
  • 網頁 (1)
  • C# (5)
  • Java (1)
  • 機器人 (3)
  • Python (15)
  • ESP8266 (3)
  • Golang (1)
  • 未分類文章 (1)

熱門文章

  • (10,221)NodeMCU (ESP8266) 韌體更新
  • (2,723)在ESP32使用mqtt publish與subscribe
  • (2,189)在 C# 呼叫 CUDA 的方法
  • (1,833)ESP32 使用 I2C LCD
  • (1,429)[CUDA] SDK安裝、範例編譯與 HelloCuda 程式
  • (1,232)使用 NodeMCU API
  • (1,007)高阻抗輸入的Arduino ADC輸入
  • (256)[python] 連接mysql測試
  • (193)2018.07.07 P-alert網頁分析 (爬蟲準備)
  • (84)開始抓 P-alert 資料

最新留言

  • [22/04/04] 訪客 於文章「[CUDA] OpenCV CUDA 程...」留言:
    回饋您這方面資訊,我是從 PTT搜尋引擎的排名,看...
  • [21/12/13] 訪客 於文章「在ESP32使用mqtt publish...」留言:
    了解,但我之後改成電腦的IP address,還是無法連上並...
  • [21/12/12] 訪客 於文章「在ESP32使用mqtt publish...」留言:
    因為我填入127.0.0.1卻連不上mqtt...
  • [21/12/12] 訪客 於文章「在ESP32使用mqtt publish...」留言:
    請教一下,如果我是在同一台電腦上架設mqtt伺服器,那我co...
  • [20/08/21] 蔡宇弦 於文章「[Verilog] DHT22...」留言:
    請問有seg7的程式嗎?...
  • [20/07/09] ghostyguo 於文章「設定Windows排程器執行powers...」留言:
    是的, 每天壓縮原始圖檔, 複製到NAS後同步到雲端硬碟...
  • [20/07/08] Meteor Shih 於文章「設定Windows排程器執行powers...」留言:
    老師 這是用在RMT圖檔 排程自動壓縮的用途上嗎?...
  • [18/10/30] allen 於文章「[ESP32] arduino環境下的A...」留言:
    謝謝老師,難怪我PIN 2 都不通.... ...
  • [18/09/09] ghostyguo 於文章「[python] 下載台灣股市的每日成交...」留言:
    2018/09/09 更新在這裡: http://ghos...
  • [18/09/09] ghostyguo 於文章「[python] 抓取台灣上市櫃公司股票...」留言:
    2018.09.09 更新: http://ghostyg...

參觀人氣

  • 本日人氣:
  • 累積人氣:

文章搜尋

最新文章

  • [Mikortik] 封鎖一大堆blacklist
  • 樹莓派安裝執行 .NET Core 程式
  • [Rpi3] 3.5吋觸控LCD驅動
  • ESP-IDF 使用 ESP32-S2 的設定/編譯/燒錄
  • Raspberry apt source 更新
  • 簡易DDNS 轉址服務
  • 2022/03/23 東部地震現象記錄
  • [Python] 計算RMT檔案目錄下的檔案數
  • [HTML] bootstrap5 與 chart.js (v3)
  • [PHP] 掃描子目錄, 自動建立連結標籤