问题描述
当仅使用cudaMalloc
分配大容量内存时,与另一个配备2x Intel Xeon Gold 6148 CPU @ 2.40GHz的HPC系统相比,我发现 IBM Power AC922 的性能非常差。这两个系统具有完全相同 NVIDIA V100 GPU 。
运行以下代码时:
#include <chrono>
#include <iomanip>
#include <iostream>
int main(int argc,char* argv[]) {
size_t num_elements = std::stoull(argv[1]);
auto t0 = std::chrono::high_resolution_clock::now();
cudaSetDevice(0);
int* ptr;
cudaMalloc((void**)&ptr,sizeof(int) * num_elements);
auto t1 = std::chrono::high_resolution_clock::now();
std::cout << "duration: " << std::fixed << std::setprecision(9)
<< std::chrono::duration<double>(t1 - t0).count() << std::endl;
return 0;
}
我观察到以下微基准测试结果:
./test 8000000000
# AC922
duration: 1.584945148
# Intel
duration: 0.548986187
如何在IBM Power机器上更快地分配内存?
您可以使用以下方法来编译微基准测试:
nvcc -std=c++11 -O3 test.cu -o test
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)