小编mer*_*2ch的帖子

CUDA:是否可以将所有48KB的片内存储器用作共享存储器?

我正在使用Windows 7 64位SP1上的CUDA Toolkit 4.0和Visual Studio 2010 Professional为GTX 580开发CUDA应用程序.我的程序比典型的CUDA程序更耗费内存,我试图为每个CUDA块分配尽可能多的共享内存.但是,每次尝试为每个块使用超过32K的共享内存时,程序都会崩溃.

通过阅读官方CUDA文档,我了解到CUDA设备上每个SM有48KB的片上存储器,其计算能力为2.0或更高,而片上存储器在L1缓存和共享存储器之间分配:

相同的片上存储器用于L1和共享存储器,并且可以为每个内核调用配置多少L1和共享存储器(第F.4.1节) http://developer.download.nvidia.com /compute/DevZone/docs/html/C/doc/Fermi_Tuning_Guide.pdf

这让我怀疑在我的程序运行时只有32KB的单内存被分配为共享内存.因此我的问题是:是否可以将所有48KB的片上内存用作共享内存?

我尝试了我能想到的一切.我为nvcc指定了选项--ptxas-options =" - v -dlcm = cg",我在程序中调用了cudaDeviceSetCacheConfig()和cudaFuncSetCacheConfig(),但没有一个解决了这个问题.我甚至确保没有寄存器溢出,并且我没有意外地使用本地内存:

1>      24 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
1>  ptxas info    : Used 63 registers, 40000+0 bytes smem, 52 bytes cmem[0], 2540 bytes cmem[2], 8 bytes cmem[14], 72 bytes cmem[16]
Run Code Online (Sandbox Code Playgroud)

虽然我可以使用32KB的共享内存,这已经给了我巨大的性能提升,但我宁愿充分利用所有快速的片上内存.任何帮助深表感谢.

更新:我在程序崩溃时启动了640个线程.512给了我比256更好的性能,所以我试图进一步增加线程数.

cuda gpu gpgpu nvidia

4
推荐指数
1
解决办法
1461
查看次数

H2 数据库可以有多大?

H2 数据库可以有多大?我使用 H2 数据库和我在 Clojure 中编写的 Web 应用程序使用了大约半年,并且数据库变得非常大:.h2.db 文件的当前大小为 143GB,其中一个表包含超过 330000 个图像。该应用程序相当稳定,偶尔会因 JVM 垃圾收集器和数据库错误(例如“缺少 lob 条目”)而导致暂停。当前的内存占用大约为 6GB,这是可以接受的,到目前为止,我能够通过重建数据库从这些数据库错误中恢复。但是,我确实想知道,在迁移到多线程数据库引擎(例如 PostgreSQL 和 MySQL)之前,我实际上可以保持这种设置多长时间,我很想听听有使用大型 H2 数据库经验的人的意见。

database jvm clojure h2

3
推荐指数
1
解决办法
6118
查看次数

标签 统计

clojure ×1

cuda ×1

database ×1

gpgpu ×1

gpu ×1

h2 ×1

jvm ×1

nvidia ×1