1
我有大约4000个具有3000个维度的向量,我需要明智地计算差异向量对。每个嵌套for for循环的并行
这里来的问题。 我尝试了两种方式。
differ = (double *)malloc(sizeof(double) * testNum * trainNum * featureDim);
array_view<double, 2> differAMP(testNum, trainNum, featureDim, differ);
QueryPerformanceFrequency(&tc);
QueryPerformanceCounter(&t1);
parallel_for_each(
differAMP.extent,
[=](concurrency::index<3> idx) restrict(amp) {
differAMP[idx] = (test(idx[0], idx[2]) - train(idx[1], idx[2]));
}
);
但是vs vs引发了一个运行时异常,因为内存限制,我想。 然后我改变了代码
differ = (double *)malloc(sizeof(double) trainNum * featureDim);
array_view<double, 2> differAMP(trainNum, featureDim, differ);
QueryPerformanceFrequency(&tc);
QueryPerformanceCounter(&t1);
parallel_for_each(
differAMP.extent,
[=](concurrency::index<2> idx) restrict(amp) {
differAMP[idx] = (test(testIndex, idx[1]) - train(idx[0], idx[1]));
}
);
我运行此为一个循环内的每个测试用例。 但是,vs抛出一个array_view移除了异常。 现在我不知道该怎么办。
调用'differAMP.synchronize()'? – Jamboree 2014-10-11 07:33:25
哪里?第二个代码后? – 2014-10-11 07:47:17
我需要更多的上下文来回答这个问题。异常发生在何处/何时?在parallel_for_each完成后访问'differAMP'的代码在哪里? – 2014-10-13 18:30:11