我是OpenACC的新手.就我熟悉OpenMP而言,我非常喜欢它.
我有2张1080Ti卡,每张卡有9GB,我有128GB的RAM.我正在尝试一个非常基本的测试来分配一个数组,初始化它,然后并行地总结它.这适用于8 GB,但当我增加到10 GB时,我会出现内存不足错误.我的理解是,凭借Pascal(这些卡都是)和CUDA 8的统一内存,我可以分配一个比GPU内存更大的数组,硬件将根据需要进行页面输入和分页.
这是我的完整C代码测试:
$ cat firstAcc.c
#include <stdio.h>
#include <openacc.h>
#include <stdlib.h>
#define GB 10
int main()
{
float *a;
size_t n = GB*1024*1024*1024/sizeof(float);
size_t s = n * sizeof(float);
a = (float *)malloc(s);
if (!a) { printf("Failed to malloc.\n"); return 1; }
printf("Initializing ... ");
for (int i = 0; i < n; ++i) {
a[i] = 0.1f;
}
printf("done\n");
float sum=0.0;
#pragma acc loop reduction (+:sum)
for (int i = 0; i < n; ++i) …
Run Code Online (Sandbox Code Playgroud)