1. 程式人生 > >【HelloCUDA】win10下 首個 cuda9 應用程式 及 靜態庫(.lib) 動態庫(.dll)的引用

【HelloCUDA】win10下 首個 cuda9 應用程式 及 靜態庫(.lib) 動態庫(.dll)的引用

環境描述:

win10

cuda 9.0

vs2017

vc++2015 redistributable update 3 and Build tools

目標及實現步驟 #1

將 CUDA 核心計算函式以靜態庫的方式為應用程式所用

1.1 新建靜態庫專案

1.1.1 新建專案

開啟vs2017,新建-專案-CUDA 9.0 Runtime , 輸入專案名稱 “cuda01_lib”

新建cuda9.0專案

注意:這裡並沒有指定 靜態庫,需要在建好後的專案屬性中設定,下文會有圖示。

新專案自動生成的程式碼 kernel.cu 是一個完整的 cuda 應用程式碼。為了生成靜態庫,首先去除main()函式,併為庫介面函式編寫相應的標頭檔案。  

1.1.2 新增標頭檔案

為當前專案 ( cuda01_lib )新增-新項-標頭檔案(.h)-輸入名稱“cuda01_lib.h”

新增c++標頭檔案

 將 kernel.cu 中 介面函式 addWithCuda 的定義移入標頭檔案 cuda01_lib.h 中:

#pragma once

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>

extern "C" cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);

修改 kernel.cu ,加入標頭檔案:

#include "cuda01_lib.h"

1.1.3 專案屬性更改

配置型別-靜態庫

1.1.4 生成 cuda01_lib.lib

1.2 新增應用專案

1.2.1 新增專案

在cuda01_lib 專案所屬的解決方案上, 新增-新建專案,輸入名稱 cuda01_with_lib

新建CUDA9.0專案

 自動生成 kernel.cu , 去除介面函式的定義、引入標頭檔案,重新命名為 kernel.cpp

1.2.2 新增引用

引用靜態庫專案

引用-靜態庫專案

1.2.3 配置專案屬性

平臺工具集=Visual Studio 2015 (v140)

要點:必須配置附加標頭檔案目錄

c/c++ - common - 附加標頭檔案目錄

 cuda01_with_lib.exe 可以生成啦 !

將 cuda01_with_lib 專案設定為啟動項,執行:

{1,2,3,4,5} + {10,20,30,40,50} = {11,22,33,44,55}

 1.3 靜態庫專案及其引用的應用專案小結:

新建靜態庫專案 cuda01_lib,新建標頭檔案 cuda01_lib.h,完善原始檔 kernel.cu,專案配置類更改為靜態庫;

新增應用專案 cuda01_with_lib , 完善原始檔 kernel.cpp ,專案新增引用(靜態庫專案 cuda01_lib ),專案配置附加標頭檔案目錄。

目標及實現步驟 #2

將 CUDA 核心計算函式以動態庫的方式為應用程式所用。

2.1 新建動態庫專案

2.1.1 新建專案

參考1.1.1, 新建專案名稱 hello_dll

2.1.2 新增標頭檔案

標頭檔案名稱 hello_dll.h

完善標頭檔案:

#pragma once
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

extern "C" MYDLL_API cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);

需要注意: MYDLL_EXPORTS 和 MYDLL_API 的寫法,不可缺少!

沒做過vs開發的我,一開始沒注意到,沒寫這些,只是關注 dll 生成了,可就是沒法為應用程式引用,報錯資訊中一直找 lib, 還以為專案配置有誤,啊~~~,還好,官網示例仔細看了,總算髮現了。

標頭檔案中寫好 MYDLL_EXPORTS 和 MYDLL_API ,再配合下文的專案配置的前處理器定義,動態庫專案會在生成 my.dll 的同時也生成 my.lib ,只有這樣,才能為應用程式引用。

2.1.3 配置專案

配置型別=動態庫(.dll)

常規-配置型別-動態庫

前處理器定義

c/c++ - Host - 預編譯定義

 可以生成 hello_dll.dll 啦,同時生成的還有 hello_dll.lib !

2.2 新增應用專案

2.2.1 新增專案

hello_with_dll

2.2.2 新增引用

引用動態庫專案:hello_dll

2.2.3 配置專案屬性

附加包含目錄

c/c++ - common-附加包含目錄

附加庫目錄

連結器-常規-附加庫目錄

附加依賴項

連結器-輸入-附加依賴項

 可以生成程式啦!

ok~

參考

補充:直接新建專案呼叫動態庫

除了上述的方法【在解決方案下新增-新建專案,新增引用】外,還可以直接新建應用專案來呼叫動態庫dll。

問題#1:無法新增引用?

需要配置專案(附加包含目錄,附加庫目錄,附加依賴項),可以生成動態庫應用程式。

問題#2:執行缺少dll檔案?

需要配置專案:生成事件-後期生成事件 post-build event ) -

生成事件-後期生成事件-命令列

command line :輸入

xcopy /y /d "D:\WorkSpace\VisualStudio2017cpp\hello_dll\x64\Debug\hello_dll.dll" "$(OutDir)" 

這樣可以將所需dll檔案複製到應用程式輸出目錄,可順利執行程式!

相關推薦

HelloCUDAwin10 cuda9 應用程式 靜態(.lib) 動態(.dll引用

環境描述: win10 cuda 9.0 vs2017 vc++2015 redistributable update 3 and Build tools 目標及實現步驟 #1 將 CUDA 核心計算函式以靜態庫的方式為應用程式所用 1.1 新建靜態庫專案 1

GEEKwin10cmd美化

win10下cmd美化,沒任何技術含量但是很實用。如果你也討厭cmd預設的簡陋的介面,想簡單美化一下,可以參考本文。 1、設定背景色、字型顏色 標題欄 → 屬性 → 顏色,選擇“螢幕文字”、“螢幕背景

其他win10TensorFlow(gpu版安裝教程

1.Anaconda下載安裝         由於目前在windows環境下tensorflow值支援python3.5版,而Anaconda又集成了後面安裝和學習的各種工具和庫,所以應直接下載pyt

4Django 建立第一模組應用

大成若缺,其用不弊。大盈若衝,其用不窮。大直若屈。大巧若拙。大辯若訥。靜勝躁,寒勝熱。清靜為天下正 ——老子《道德經》 本章內容 建立應用(app) 開發第一個檢視(View) URL訪問配置的巢狀(urls) 1. 建立專案的子模組應用 上一節內容中,我們建立了一個django專

VSCodeUbuntuVSCode編譯執行c++程式

之前在Ubuntu下寫一些C++程式,一直找不到一個優(hao)雅(kan)的IDE,所以都是使用vim或Clion來寫。今天發現微軟的一款編輯器,介面好看,功能也挺好用的。 以下是我的一些安裝和配置方法: 1、官網下載地址: https://code.visuals

您的iOS應用程式-配置檢視

    一、 簡述 Xcode 提供了物件庫,您可以將庫中的物件新增到串聯圖檔案。其中的一些物件屬於檢視中的使用者介面元素, 例如按鈕和文字欄。其他物件為高階物件,例如檢視控制器和手勢識別器。     二、新增使用者元素    

您的iOS應用程式-實施檢視

          一、為使用者姓名新增屬性 您需要為儲存使用者姓名的字串新增屬性宣告,這樣您的程式碼就總能引用該字串。 因為此屬性必須是公共的,即對客戶端和子類為可見,所以須將此宣告新增到檢視控制器的標頭檔案, 即&

暫未解決win10安裝VS2017 15.3版本 提示 未能安裝包“Microsoft.NET.4.6.FullRedist.NonThreshold.Resources,version=4.6.81.9,language=zh-CN”。

nis source 方式 ins urn pac 故障 鼓勵 報告 win10下安裝VS2017 15.3版本的時候,出現以上錯誤日誌提示,請問如何解決的哇? 這個問題,開始我以為是我的安裝包所在的路徑問題引起的,但是我將安裝包移動到了磁盤根目錄進行安裝,依然出現

TensorFlowWin10+TensorFlow-gpu1.9.0+CUDA9.0+cudnn7.1.4(2018/11/02

折騰了一天多,終於配置成功了orz 本篇文章是2018年11月2日寫的,Win10,顯示卡為960M 下載版本為:(請注意相容性) Anaconda3    5.3.0 TensorFlow-gpu   1.9.0 CUDA9.0 cu

Django2+ 學習筆記 02win10Django新專案部署

1. 安裝Python的Django,貌似是Django命令環境,並不是是專案。(使用--user是因為python安裝到了win的個人使用者下) pip install --user Django==2.1.3 如果本教程時間久遠,你可以用命令pip install --user Dj

Win10 64 位Tensorflow-gpu安裝(VS2017+CUDA9.2+cuDNN7.1.4+python3.6.5

原文連結:https://blog.csdn.net/wwtor/article/details/80603296 Tensorflow 入門系列的第一篇,Tensorflow-gpu的下載與安裝。CSDN上能搜到很多學習資料,對初學者非常有幫助。剛安裝了目前最新版本的Tensorflow,當然

WindowsWin10-更改c盤的使用者資料夾名

轉載ooooohugh的文章,原文地址:https://blog.csdn.net/qq_33530388/article/details/71739845 當初 不小心用自己名字 作為計算機使用者名稱,後來 許多軟體因為 不支援 路徑中有中文,導致吃了不少的虧,心疼。。。。 下面說下怎

Dockerwin10環境安裝Docker

一、進入Docker官網 首先先到Docker官網下載最新官方Docker for Windows:Docker下載 在官網內可以檢視到Docker的開發文件。 根據官網提示,Windows環

LinuxLinux使用stat命令所顯示出來的三時間

在linux系統下,使用stat(顯示inode資訊)命令可以檢視一個檔案的某些資訊,我們先來嘗試一下。 簡單的介紹一下stat命令顯示出來的檔案其他資訊: - File:顯示檔名 - Size:顯示檔案大小 - Blocks:檔案使用的資料塊總數

Python學習win10xgboost Python安裝教程

注:本文主要轉自ychanmy的部落格,地址為:http://blog.csdn.net/ychanmy/article/details/50972530 1.  安裝anaconda         連結:https://www.continuum.io/downloa

Androidwin10作業系統Android開發環境配置

Windows命令列除錯unity(Android)應用環境變數配置準備步驟:先下載好我們需要的Android SDK和JDK。選擇好對應平臺的安裝包或解壓包下載至本地。選擇好適合自己平臺的版本下載至本地。安裝SDK:推薦傻瓜式安裝(next-->next-->n

LinuxLinux統計當前文件夾的文件個數、目錄個數

article logs 過濾 ref bash 輸出 子文件夾 http 輸出信息 統計當前文件夾下文件的個數,包括子文件夾裏的 ls -lR|grep "^-"|wc -l 統計文件夾下目錄的個數,包括子文件夾裏的 ls -lR|grep "^d"

js中15常用的正則表達式

顏色 字符 8.4 特殊字符 cnp 浮點數 == div mail 1 用戶名正則 //用戶名正則,4到16位(字母,數字,下劃線,減號) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //輸出 true console.log(uPa

css回想經典的布局

範圍 使用 you 方式 窮舉 add height 設置 蘊含   看到這張圖相信大多數人都很熟悉,這曾經是一種經典的布局方式,一道經典的面試題,但是隨著歲月的流轉,時光的交替(頗有一種“天下風雲出我輩,一入江湖歲月催”的感慨,哈哈),它一步步逐漸退出了歷史舞臺,不過在

轉載VMware的Ubuntu用ifconfig不能顯示ip地址的解決方案

技術分享 linu p地址 ssg 們的 網絡接口 ssh 註意 onf 轉載於 http://blog.163.com/wjn_mcu/blog/static/23801601620146161062704/ 背景 在虛擬機下運行操作系統,尤其是Linux系統已經是非