【发布时间】:2015-07-24 09:39:17
【问题描述】:
我是 Cuda 编程的新手。 我可以访问设备“Tesla K10”。 我正在研究一个复杂问题,每个问题实例需要大约 20 KB 的内存。 现在由于 cuda 提供并行化,我决定每个块使用 96 个线程(记住扭曲)来解决问题的一个实例。 现在的问题是我有大量的此类问题需要解决(比如超过 1,600,000 个)。 我知道即使在全局内存中也无法满足如此大的内存需求(在我的情况下是 3.5 GB,如下面的 DeviceQuery 输出所示),因此我必须一次解决几个问题。
此外,我已将每个问题与每个块映射以解决问题的一个实例。
现在我能够解决全局内存中数据的大量问题。但是共享内存比全局快,所以我计划使用 20 KB 的共享内存(每个问题)。
1) 现在我的困惑是,这一次只能将 2 个问题加载到共享内存中来解决(即 40KBytes
2) 如果我在内核中声明这个 20 KB 的数组,这是否意味着这 (20KBytes * number_of_blocks) 将是共享内存使用? number_of_blocks是指要解决的问题的数量。 我的启动配置是 问题>(...)
您在这方面的所有帮助都将得到高度认可。 提前谢谢你。
***My partial Device Query***
Device : "Tesla K10.G1.8GB"
CUDA Driver Version / Runtime Version 6.5 / 5.0
CUDA Capability Major/Minor version number: 3.0
Total amount of global memory: 3584 MBytes (3757637632 bytes)
( 8) Multiprocessors, (192) CUDA Cores/MP: 1536 CUDA Cores
GPU Clock rate: 745 MHz (0.75 GHz)
Memory Clock rate: 524 Mhz
Memory Bus Width: 2048-bit
L2 Cache Size: 4204060 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 2046), 65536 layers
Total amount of constant memory: 65536 bytes
**Total amount of shared memory per block: 49152 bytes**
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 0
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
...
【问题讨论】:
-
抱歉错过了午餐配置问题>> (...)