- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个Tesla C2070,应该具有5636554752字节的内存。
但是,这给了我一个错误:
int *buf_d = NULL;
err = cudaMalloc((void **)&buf_d, 1000000000*sizeof(int));
if( err != cudaSuccess)
{
printf("CUDA error: %s\n", cudaGetErrorString(err));
return EXIT_ERROR;
}
Device 0: "Tesla C2070"
CUDA Driver Version: 3.20
CUDA Runtime Version: 3.20
CUDA Capability Major/Minor version number: 2.0
Total amount of global memory: 5636554752 bytes
Multiprocessors x Cores/MP = Cores: 14 (MP) x 32 (Cores/MP) = 448 (Cores)
Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total number of registers available per block: 32768 Warp size: 32
Maximum number of threads per block: 1024
Maximum sizes of each dimension of a block: 1024 x 1024 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 2147483647 bytes
最佳答案
基本问题在于您的问题标题-您实际上不知道自己是否有足够的内存力,但前提是您假设自己有。运行时API包括cudaMemGetInfo
函数,该函数将返回设备上的可用内存量。在设备上建立上下文后,驱动程序必须为设备代码,每个线程的本地内存,用于printf
支持的fifo缓冲区,每个线程的堆栈以及内核内malloc
/new
调用的堆保留空间(有关更多信息,请参见this answer)细节)。所有这些都会消耗相当多的内存,使您的代码保留ECC保留后的可用内存量远远少于最大可用内存。该API还包括cudaDeviceGetLimit
,可用于查询设备运行时支持消耗的内存量。还有一个伴随调用cudaDeviceSetLimit
,它可以允许您更改运行时支持的每个组件将保留的内存量。
即使在您根据自己的喜好调整了运行时内存占用量并从驱动程序获得了实际的可用内存值之后,仍然需要解决页面大小的粒度和碎片问题。很少有可能分配API将免费报告的每个字节。通常,当目标是尝试分配卡上的每个可用字节时,我会执行以下操作:
const size_t Mb = 1<<20; // Assuming a 1Mb page size here
size_t available, total;
cudaMemGetInfo(&available, &total);
int *buf_d = 0;
size_t nwords = total / sizeof(int);
size_t words_per_Mb = Mb / sizeof(int);
while(cudaMalloc((void**)&buf_d, nwords * sizeof(int)) == cudaErrorMemoryAllocation)
{
nwords -= words_per_Mb;
if( nwords < words_per_Mb)
{
// signal no free memory
break;
}
}
// leaves int buf_d[nwords] on the device or signals no free memory
关于memory - 当我知道有足够的内存空间时,为什么cudaMalloc给我一个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8905949/
对于我的问题,我找不到更好的措辞。 在我的应用程序中的某个时刻,我设置了一些非常密集的动画。问题是,在高端设备上,动画运行流畅且赏心悦目。另一方面,我测试过的一台低端设备在制作动画时表现非常糟糕。 试
我正在修补 OTP 模块 ( yubico_pam ),并尝试访问管理员选择的控制标志(例如必需,足够, ETC)。 有什么想法吗?这是否可行(无需解析文件)? 最佳答案 无法在 API 中查询此信息
我有一些为 Linux 编写的 C 代码,依赖于套接字和 arpa/inet.h 以及 libusb.h,我想在 MinGW 下为 Windows 编译它。 (请注意,当前项目只有一个非常简单的 Ma
我是一名优秀的程序员,十分优秀!