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