【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”
注意:這裡並沒有指定 靜態庫,需要在建好後的專案屬性中設定,下文會有圖示。
新專案自動生成的程式碼 kernel.cu 是一個完整的 cuda 應用程式碼。為了生成靜態庫,首先去除main()函式,併為庫介面函式編寫相應的標頭檔案。
1.1.2 新增標頭檔案
為當前專案 ( cuda01_lib )新增-新項-標頭檔案(.h)-輸入名稱“cuda01_lib.h”
將 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
自動生成 kernel.cu , 去除介面函式的定義、引入標頭檔案,重新命名為 kernel.cpp
1.2.2 新增引用
引用靜態庫專案
1.2.3 配置專案屬性
平臺工具集=Visual Studio 2015 (v140)
要點:必須配置附加標頭檔案目錄
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)
前處理器定義
可以生成 hello_dll.dll 啦,同時生成的還有 hello_dll.lib !
2.2 新增應用專案
2.2.1 新增專案
hello_with_dll
2.2.2 新增引用
引用動態庫專案:hello_dll
2.2.3 配置專案屬性
附加包含目錄
附加庫目錄
附加依賴項
可以生成程式啦!
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檔案複製到應用程式輸出目錄,可順利執行程式!
相關推薦
【HelloCUDA】win10下 首個 cuda9 應用程式 及 靜態庫(.lib) 動態庫(.dll)的引用
環境描述: win10 cuda 9.0 vs2017 vc++2015 redistributable update 3 and Build tools 目標及實現步驟 #1 將 CUDA 核心計算函式以靜態庫的方式為應用程式所用 1.1 新建靜態庫專案 1
【GEEK】win10下cmd美化
win10下cmd美化,沒任何技術含量但是很實用。如果你也討厭cmd預設的簡陋的介面,想簡單美化一下,可以參考本文。 1、設定背景色、字型顏色 標題欄 → 屬性 → 顏色,選擇“螢幕文字”、“螢幕背景
【其他】win10下TensorFlow(gpu版)安裝教程
1.Anaconda下載安裝 由於目前在windows環境下tensorflow值支援python3.5版,而Anaconda又集成了後面安裝和學習的各種工具和庫,所以應直接下載pyt
【4】Django 建立第一個模組應用
大成若缺,其用不弊。大盈若衝,其用不窮。大直若屈。大巧若拙。大辯若訥。靜勝躁,寒勝熱。清靜為天下正 ——老子《道德經》 本章內容 建立應用(app) 開發第一個檢視(View) URL訪問配置的巢狀(urls) 1. 建立專案的子模組應用 上一節內容中,我們建立了一個django專
【VSCode】Ubuntu下VSCode編譯執行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版本的時候,出現以上錯誤日誌提示,請問如何解決的哇? 這個問題,開始我以為是我的安裝包所在的路徑問題引起的,但是我將安裝包移動到了磁盤根目錄進行安裝,依然出現
【TensorFlow】Win10+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+ 學習筆記 02】win10下Django及新專案部署
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,當然
【Windows】Win10-更改c盤下的使用者資料夾名
轉載ooooohugh的文章,原文地址:https://blog.csdn.net/qq_33530388/article/details/71739845 當初 不小心用自己名字 作為計算機使用者名稱,後來 許多軟體因為 不支援 路徑中有中文,導致吃了不少的虧,心疼。。。。 下面說下怎
【Docker】win10環境下安裝Docker
一、進入Docker官網 首先先到Docker官網下載最新官方Docker for Windows:Docker下載 在官網內可以檢視到Docker的開發文件。 根據官網提示,Windows環
【Linux】Linux下使用stat命令所顯示出來的三個時間
在linux系統下,使用stat(顯示inode資訊)命令可以檢視一個檔案的某些資訊,我們先來嘗試一下。 簡單的介紹一下stat命令顯示出來的檔案其他資訊: - File:顯示檔名 - Size:顯示檔案大小 - Blocks:檔案使用的資料塊總數
【Python學習】win10下xgboost Python安裝教程
注:本文主要轉自ychanmy的部落格,地址為:http://blog.csdn.net/ychanmy/article/details/50972530 1. 安裝anaconda 連結:https://www.continuum.io/downloa
【Android】win10作業系統下Android開發環境配置
Windows命令列除錯unity(Android)應用環境變數配置準備步驟:先下載好我們需要的Android SDK和JDK。選擇好對應平臺的安裝包或解壓包下載至本地。選擇好適合自己平臺的版本下載至本地。安裝SDK:推薦傻瓜式安裝(next-->next-->n
【Linux】Linux下統計當前文件夾下的文件個數、目錄個數
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系統已經是非