我最近开始使用带有 GT430 的 Mathematica 的 CUDALink,并且正在使用 CUDADot 将 150000x1038 矩阵(encs)乘以 1038x1 矩阵(探针)。encs 和 probe 都向内存管理器注册:
mmEncs = CUDAMemoryLoad[encs];
mmProbe = CUDAMemoryLoad[probe];
我认为这些的点积会最大化 GT430,所以我用以下方法进行了测试:
For[i = 0, i < 10, i++,
CUDADot[mmEncs, mmProbe];
]
在它运行时,我使用 MSI 的“Afterburner”实用程序来监控 GPU 的使用情况。以下屏幕截图显示了结果:
每个 CUDADot 操作都有一个明显的峰值,总的来说,我想说这张照片表明我使用的 GPU 容量不到 1/4。两个问题:
Q1:为什么峰值会达到 50%?好像很低。
问题 2:为什么高峰之间会有如此显着的不活动期?
提前感谢您的任何提示!我不知道第一季度,但也许第二季度是因为主机和设备之间的意外内存传输?
自原始发布以来的附加信息:CUDAInformation[] 报告“核心数 - > 64”,但 NVIDIA 控制面板报告“CUDA 核心数:96”。如果 CUDALink 错误地假设它有 64 个内核,那么它有没有机会利用 GT430?