क्या NUMA जागरूक फैशन में सीपीपी मानक कंटेनर API का उपयोग करने का कोई सुविधाजनक और कारगर तरीका है?NUMA जागरूक सीपीपी कंटेनर
मैं एक सीपीपी पर्यावरण में एक ओपनएमपी समांतर स्पैर मैट्रिक्स वेक्टर गुणा करना चाहता हूं। आवंटित और NUMA डोमेन के संबंध में वेक्टर और मैट्रिक्स मूल्यों को प्रारंभ करने के लिए, सी कोड किसी भी तरह इस प्रकार दिखाई देगा:
size_t N = 1000000;
double* vecVal = malloc (N*sizeof(double));
#pragma OMP parallel for
for (size_i=0; i<N; ++i)
{
vecVal[i] = 0.;
}
/* do spMV */
delete vecVal;
सीपीपी में मैं के साथ std :: वेक्टर (std :: सरणी का उपयोग करना चाहेंगे एक निश्चित आकार भी ठीक है)। क्या std :: vector :: reserve() चाल करता है? यह कुछ इस तरह करने के लिए कानूनी है:
std::vector<double> vec;
vec.reserve(N);
double *vecVal = vec.data();
#pragma OMP parallel for
for (size_i=0; i<N; ++i)
{
vecVal[i] = 0.;
}
/* do spMV */
मैं बाद में std :: वेक्टर के लिए सही आकार सेट कर सकते हैं कैसे?
क्या कोई और अधिक सुरुचिपूर्ण तरीका जानता है?
आकार बदलें() NUMA को पता नहीं है क्योंकि यह एक NUMA डोमेन (पहला स्पर्श) – Titzi
पर सभी मानों को प्रारंभ करता है क्या यह NUMA जागरूक कोड के लिए 'malloc'ed स्मृति' को हटाने के लिए एक विशेष बात है? –