中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

手機(jī)網(wǎng)站制作價(jià)格百度點(diǎn)擊率排名有效果嗎

手機(jī)網(wǎng)站制作價(jià)格,百度點(diǎn)擊率排名有效果嗎,保險(xiǎn)公司官網(wǎng)查詢(xún),做娛樂(lè)自媒體有哪些網(wǎng)站可以推薦常量?jī)?nèi)存 __constant__ 是 CUDA 中用于聲明常量?jī)?nèi)存變量的關(guān)鍵字,其作用是在設(shè)備的常量?jī)?nèi)存(constant memory)中分配內(nèi)存空間。這種內(nèi)存適用于少量、在核函數(shù)中頻繁讀取但不改變的全局常量數(shù)據(jù)。 特性描述存儲(chǔ)位置GPU 的常量?jī)?nèi)存&#xff0…

常量?jī)?nèi)存

__constant__ 是 CUDA 中用于聲明常量?jī)?nèi)存變量的關(guān)鍵字,其作用是在設(shè)備的常量?jī)?nèi)存(constant memory)中分配內(nèi)存空間。這種內(nèi)存適用于少量、在核函數(shù)中頻繁讀取但不改變的全局常量數(shù)據(jù)。

特性描述
存儲(chǔ)位置GPU 的常量?jī)?nèi)存(顯存中的一個(gè)小區(qū)域,通常為 64KB)
訪問(wèn)方式所有線程共享,可高效廣播
修改方式主機(jī)端用 cudaMemcpyToSymbol 修改,設(shè)備端不能修改
使用場(chǎng)景所有線程頻繁訪問(wèn)同一組常量,例如卷積核、查找表等

1.聲明常量變量(在全局作用域)?

__constant__ int constData[256];

注意:這聲明了一個(gè)存放在 GPU 常量?jī)?nèi)存上的全局整型數(shù)組 constData,不可在設(shè)備代碼中修改。

2.在主機(jī)端初始化常量?jī)?nèi)存

int hostData[256] = { /* 初始化數(shù)據(jù) */ };
cudaMemcpyToSymbol(constData, hostData, sizeof(int) * 256);

?? 使用 cudaMemcpyToSymbol 是唯一向 __constant__ 內(nèi)存賦值的方式。不能直接寫(xiě) constData[i] = x;

?對(duì)比其他類(lèi)型

類(lèi)型可見(jiàn)性訪問(wèn)速度可否修改使用方式
__device__所有設(shè)備函數(shù)較快?(設(shè)備端)通常用來(lái)存儲(chǔ)全局變量
__shared__一個(gè)線程塊內(nèi)共享非???/td>?線程塊內(nèi)共享存儲(chǔ)
__constant__所有線程共享非常快(廣播)?(只讀)頻繁讀取、所有線程訪問(wèn)的全局只讀變量

?完整示例代碼

#include <iostream>
#include <cuda_runtime.h>__constant__ float coeffs[4];__global__ void kernel(float* data) {int i = threadIdx.x;data[i] = data[i] * coeffs[i % 4];  // 使用常量?jī)?nèi)存做乘法
}int main() {float hostCoeffs[4] = { 1.0f, 2.0f, 3.0f, 4.0f };float data[8] = { 10, 20, 30, 40, 50, 60, 70, 80 };float* devData;cudaMalloc(&devData, sizeof(data));cudaMemcpy(devData, data, sizeof(data), cudaMemcpyHostToDevice);// 把常量數(shù)據(jù)復(fù)制到 GPUcudaMemcpyToSymbol(coeffs, hostCoeffs, sizeof(hostCoeffs));kernel<<<1, 8>>>(devData);cudaMemcpy(data, devData, sizeof(data), cudaMemcpyDeviceToHost);for (int i = 0; i < 8; ++i) {std::cout << data[i] << " ";}std::cout << std::endl;cudaFree(devData);return 0;
}

事件

CUDA 的 事件(Event) 是一種用于 性能測(cè)量、同步和流控制 的機(jī)制,它可以記錄 GPU 中某個(gè)時(shí)間點(diǎn)的狀態(tài),用于:

  • ?? 精確測(cè)量 GPU 上操作(如 kernel 執(zhí)行、內(nèi)存拷貝)耗時(shí)

  • 🔁 在不同 CUDA 流(stream)中進(jìn)行同步控制

  • 🧵 檢查某些異步操作是否完成

?CUDA 中的事件對(duì)象由 cudaEvent_t 表示,可以用來(lái):

作用描述
記錄時(shí)間點(diǎn)通過(guò) cudaEventRecord() 在 GPU 某個(gè)位置插入事件
測(cè)量時(shí)間間隔cudaEventElapsedTime() 計(jì)算兩個(gè)事件之間的時(shí)間(以毫秒為單位)
異步檢測(cè)完成使用 cudaEventQuery() 檢查事件是否已完成
流同步cudaEventSynchronize() 等待某個(gè)事件完成
跨流依賴(lài)控制使用事件實(shí)現(xiàn)不同 stream 間的同步

常用 API?

函數(shù)說(shuō)明
cudaEventCreate(&event)創(chuàng)建事件對(duì)象
cudaEventRecord(event, stream)在某個(gè) stream 中記錄事件(stream 可為 0,表示默認(rèn)流)
cudaEventSynchronize(event)等待事件完成(阻塞主機(jī)直到事件觸發(fā))
cudaEventElapsedTime(&ms, start, stop)計(jì)算兩個(gè)事件之間的時(shí)間間隔(單位:毫秒)
cudaEventDestroy(event)銷(xiāo)毀事件對(duì)象,釋放資源

典型使用場(chǎng)景:測(cè)量核函數(shù)運(yùn)行時(shí)間?

#include <cuda_runtime.h>
#include <iostream>__global__ void myKernel() {int tid = threadIdx.x + blockIdx.x * blockDim.x;if (tid < 10000) {// 模擬計(jì)算for (int i = 0; i < 1000; ++i) {}}
}int main() {cudaEvent_t start, stop;float elapsedTime;cudaEventCreate(&start);cudaEventCreate(&stop);cudaEventRecord(start, 0);       // 在默認(rèn)流中記錄開(kāi)始時(shí)間myKernel<<<100, 128>>>();        // 啟動(dòng)核函數(shù)cudaEventRecord(stop, 0);        // 記錄結(jié)束時(shí)間cudaEventSynchronize(stop);      // 等待 stop 事件代表的所有前序操作完成cudaEventElapsedTime(&elapsedTime, start, stop);std::cout << "Kernel execution time: " << elapsedTime << " ms" << std::endl;cudaEventDestroy(start);cudaEventDestroy(stop);return 0;
}

cudaEventRecord(start, 0) 只是記錄了一個(gè)事件插入點(diǎn)

插入到當(dāng)前設(shè)備上的默認(rèn)流(stream 0)中,表示 “從這時(shí)開(kāi)始有事件要記錄”。

stop 為什么必須同步?

因?yàn)?#xff1a;

  • 核函數(shù)是 異步執(zhí)行 的,也就是:

    • 主機(jī)代碼調(diào)用 kernel 時(shí)不會(huì)等待其執(zhí)行完成;

    • 繼續(xù)往下執(zhí)行 cudaEventRecord(stop, 0)

    • 但是這行本身也只是把事件插入到流中,不意味著 kernel 已完成。

為了讓我們能正確讀取 kernel 執(zhí)行完的時(shí)間,必須同步 stop 事件

cudaEventSynchronize(stop); // 等待 stop 事件代表的所有前序操作完成

跨流同步示例:

cudaStream_t stream1, stream2;
cudaStreamCreate(&stream1);
cudaStreamCreate(&stream2);cudaEvent_t event;
cudaEventCreate(&event);kernel1<<<blocks, threads, 0, stream1>>>();  // 在 stream1 中執(zhí)行
cudaEventRecord(event, stream1);             // 在 stream1 的尾部記錄事件cudaStreamWaitEvent(stream2, event, 0);      // 讓 stream2 等待事件完成
kernel2<<<blocks, threads, 0, stream2>>>();  // stream2 中的 kernel 等待 eventcudaStreamDestroy(stream1);
cudaStreamDestroy(stream2);
cudaEventDestroy(event);
  • cudaStream_t 是 CUDA 中的流對(duì)象類(lèi)型,表示一個(gè)指令隊(duì)列。

  • 默認(rèn)情況下,所有核函數(shù)、內(nèi)存操作都在 默認(rèn)流(stream 0) 上執(zhí)行,所有操作是順序同步執(zhí)行的。

  • 使用多個(gè)流,可以讓不同核函數(shù)或操作并發(fā)執(zhí)行,前提是它們之間沒(méi)有依賴(lài)關(guān)系。

cudaEventRecord(event, stream1);

?在 stream1 上記錄事件

  • 表示:當(dāng) stream1 中所有之前的操作完成時(shí),該事件被“標(biāo)記為完成”。

  • 也就是說(shuō),event 表示 kernel1 執(zhí)行完成的時(shí)間點(diǎn)。

cudaStreamWaitEvent(stream2, event, 0);

stream2 等待 event 完成

  • 這句的含義是:stream2 中后續(xù)的所有操作都要等到 event 完成之后才能執(zhí)行。

  • 所以此處,stream2 中的 kernel 將會(huì)等待 kernel1 執(zhí)行完。

雖然 stream1stream2 原本是可以并發(fā)執(zhí)行的,

但因?yàn)橛?cudaStreamWaitEvent 明確加了依賴(lài)關(guān)系,所以 kernel2 會(huì)等 kernel1 完成。

http://www.risenshineclean.com/news/22481.html

相關(guān)文章:

  • 長(zhǎng)沙定制網(wǎng)站建設(shè)一站式自媒體服務(wù)平臺(tái)
  • 怎樣做汽車(chē)之家視頻網(wǎng)站游戲推廣員如何推廣引流
  • 高古樓網(wǎng)站 做窗子網(wǎng)站制作的基本流程
  • 怎么做公司網(wǎng)站推廣免費(fèi)正規(guī)的接單平臺(tái)
  • 西寧企業(yè)做網(wǎng)站互聯(lián)網(wǎng)公司有哪些
  • 剛開(kāi)始做寫(xiě)手上什么網(wǎng)站seo大全
  • 企業(yè)網(wǎng)站建立網(wǎng)絡(luò)虛擬社區(qū)時(shí)對(duì)于企業(yè)成品短視頻網(wǎng)站源碼搭建
  • 織夢(mèng)手機(jī)網(wǎng)站模板刪除注冊(cè)城鄉(xiāng)規(guī)劃師含金量
  • 網(wǎng)站開(kāi)發(fā)時(shí)怎么隱藏文字上海關(guān)鍵詞排名優(yōu)化怎樣
  • 美國(guó)人做的古文字網(wǎng)站亞馬遜免費(fèi)的關(guān)鍵詞工具
  • 靈山招聘網(wǎng)靈山英才網(wǎng)做靈山專(zhuān)業(yè)的招聘網(wǎng)站百度一下點(diǎn)擊搜索
  • 騰訊服務(wù)器做網(wǎng)站龍崗網(wǎng)站設(shè)計(jì)
  • 網(wǎng)站建設(shè)策劃書(shū)范文案例網(wǎng)絡(luò)優(yōu)化工程師騙局
  • 不收費(fèi)的小說(shuō)網(wǎng)站排名百度推廣非企代理
  • git 網(wǎng)站開(kāi)發(fā)應(yīng)用有哪些網(wǎng)絡(luò)營(yíng)銷(xiāo)公司
  • 蘇州做網(wǎng)站推廣常州網(wǎng)站推廣
  • 東莞網(wǎng)站建站公司seo網(wǎng)絡(luò)推廣是干嘛的
  • 怎么做網(wǎng)站步驟重慶seo論壇
  • 敦煌做網(wǎng)站的公司電話(huà)營(yíng)銷(xiāo)模式
  • 深圳網(wǎng)站建設(shè)哪家好附子seo
  • 新電商平臺(tái)seo整站優(yōu)化吧
  • wordpress 插件被墻免費(fèi)seo工具
  • 蘇州疫情最新政策seo外鏈資源
  • 淄博張店網(wǎng)站排名優(yōu)化怎么自己做一個(gè)網(wǎng)頁(yè)
  • 鷹潭做網(wǎng)站自己怎么做網(wǎng)站優(yōu)化
  • 南昌網(wǎng)站seo技術(shù)廠家如何做公司網(wǎng)站推廣
  • dedecms建手機(jī)網(wǎng)站游戲推廣是什么工作
  • 北京本地服務(wù)信息網(wǎng)西安seo站內(nèi)優(yōu)化
  • 永興縣網(wǎng)站建設(shè)公司哪家好湖人最新排名最新排名
  • 網(wǎng)站建設(shè)怎么記賬手機(jī)關(guān)鍵詞點(diǎn)擊排名軟件