簡體   English   中英

CUDA PTX,驅動程序API-如何在執行后從內核獲取全局變量

[英]CUDA PTX, driver api - how to get global variable from kernel after execution

這是內核代碼的一部分-聲明每個線程的變量和所需的操作

.global.f32 sum = 0.0
.reg.f32 reg;
atom.global.add.f32 reg, [sum], val;

我想在每個線程中將不同的變量添加到全局變量總和中。 我認為上面發布的代碼是正確的-一切都能順利編譯。 但是我在將全局變量總和的值返回給主機方面遇到問題。

內核執行后,我得到了主機的以下代碼。

CUdeviceptr hostSumPtr;
size_t bytes;
cuModuleGetGlobal(&hostSumPtr, &bytes, hModule, "sum");

但是返回錯誤代碼500“ CUDA_ERROR_NOT_FOUND”

是否有任何方法可以將內核中聲明的全局變量的值獲取給主機,或者有任何方法可以通過其他方法繞過此問題?

有3個問題:

  1. 全局變量應在內核范圍之外聲明。
  2. 架構必須設置為sm_30及更高版本(這僅適用於此特定情況,未顯示細節)
  3. 內核版本必須設置為3.0及更高版本(這也僅適用於此特定情況,並且問題中未顯示詳細信息)

問題已解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM