I am trying to allocate a huge amount of data using CAL API calResAllocRemote2D(). According to the CAL programming guide, this data should be assigned to PCI-e memory as a part of host memory. So I guess total PCI-e memory space for GPUs should be greater than or equal to total GPUs’ local memory space (in my case, it will be roughly 2GB for each GPU; total 4GB).
Anyway, total CPU uncached space size(PCIe memory) can be easily obtained by calling calDeviceGetAttribs() and my result is 1786MB. But when I allocate 1300MB or so CAL API returns an error. (1300MB for 1 device or 2048MB for 2 devices)
calResAllocRemote2D(&resRemote, &device, 1, 8192, 8192, CAL_FORMAT_INT_4, 0);
calResAllocRemote2D(&resRemote, &device, 1, 8192, 8192, CAL_FORMAT_INT_4, 0); // Error!
In short, my question is:
- Does “Uncached remote GPU memory space; uncachedRemoteRAM” mean maximum space for 1 GPU or for total GPUs installed?
- Why it returns an error when I allocate 1300MB for 1 device (or 2048MB for 2 devices)?
Thanks in advance.
These are the details of my system:
- Host: Super Micro GPU computing server (Intel Xeon 5600), 32GB DRAM
- GPU: Radeon HD 6970 x 2
- OS: Red Hat Enterprise Linux 5.5
- Driver: Catalyst 11.2
- SDK: v2.3-lnx64