簡體   English   中英

CUDA:使用共享和全局矩陣乘法

[英]cuda: matrix multiplication using shared and global

我正在嘗試在3x3矩陣和360x360矩陣之間進行矩陣乘法。 較小的矩陣(3x3)將通過大矩陣的第一個(3x3)塊進行操作,依此類推。 因此,我想擁有較小的矩陣常數並將其滑到較大的矩陣上。

是否可以將較小的矩陣存儲為共享內存的一部分,並將較大的矩陣全局分為3x3?

我沒有找到一種方法來復制較小的矩陣以直接從主機共享。 如果我對cuda的可視化是錯誤的,請糾正我。

謝謝。

無法從主機填充共享內存。

但是,處理所有線程的常量(例如本例中的3x3矩陣)的最佳方法是將它們放入常量內存(其大小為64 kB)。 有兩種使用常量內存的方式:

  • 最簡單的方法是使用內核參數。 定義一個struct包含您的內核參數,包括3x3矩陣,並把它傳遞到你的內核
  • 使用__constant__類型限定符並使用cudaMemcpyToSymbol從主機填充它:

     //In global scope __constant__ float mat_gpu[3][3]; //In the function that you use to populate the data cudaMemcpyToSymbol(mat_gpu, mat_cpu, 9 * sizeof(float)); //In your kernel you just use the mat_gpu variable 

暫無
暫無

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

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