2013-11-01 57 views
0

下面的Thrust函數可以獲得CUDA推出CUDA 5.0的最大塊,CUDA 5.0中使用了CUSP中的稀疏矩陣向量乘法(SpMV),它是一種技術爲持久線程設置執行。第一行是頭文件。如何獲得cuda中推力最大的推力塊5.5

#include <thrust/detail/backend/cuda/arch.h> 

thrust::detail::backend::cuda::arch::max_active_blocks(kernel<float,int,VECTORS_PER_BLOCK,TH READS_PER_VECTOR>,THREADS_PER_BLOCK,(size_t)0) 

但是該功能不被CUDA 5.5支持。 CUDA 5.5不支持這種技術,還是應該使用其他功能?

回答

2

從來沒有任何支持的方式在任何版本的Thrust中執行此計算。 thrust/detail中的標題和detail命名空間中的標識符是Thrust實現的一部分 - 它們不是公共功能。使用它們會破壞你的代碼。

這就是說,有一個在這個倉庫實施佔有率計算器一些獨立代碼:

https://github.com/jaredhoberock/cuda_launch_config

+0

線程的原SPMV的塊數爲128,和行是由一個經完成, [cuda_launch_config]的佔用率計算器(https://github.com/jaredhoberock/cuda_launch_config)的實現是最大線程數,並且可能難以控制。所以最好的方法是使用原始持久線程的API,並且避免修改SpMV的原始代碼 – taoyuanjl