سؤال

هل HDF5 قادرة على التعامل مع عدة مؤشرات ترابط من تلقاء نفسها ، أم أنه يجب مزامنة خارجيا؟ مثال OpenMP يشير إلى الأخير.

إذا كان الأول ، ما هي الطريقة الصحيحة لتحديد Dataspace للكتابة إليها؟

هل كانت مفيدة؟

المحلول

Anycorn ،

يمكن لـ HDF5 التعامل مع خيوط متعددة دون مزامنة خارجية ، على الرغم من أن الكتابة ستظل متسلسلة. يجب عليك تجميع أحدث إصدار (1.8.6 اعتبارًا من 4/5/2011) وتشغيله ./configure مع ال --enable-threadsafe و -with-pthreads=/pthreads-include-path/,/pthreads-lib-path/ أعلام.

فمثلا:

./configure --enable-threadsafe -with-pthreads=/usr/include,/usr/lib

فيما يتعلق بتحديد dataspace للكتابة ، فإن أبسط طريقة هي بناء لوحة مستطيلة مستطيلة باستخدام صفيف متعدد الأبعاد ، وقيمة رتبة ، و H5Screate_simple وظيفة. عادة ما يتبع المنجم نفس الخطوات:

    //NUM = Number of spaces in this dimension
    //Create a 1 dimensional array
    hsize_t dsDim[1] = {NUM};
    //Create the 1x1xNUM data space (rank param = 1).
    hid_t dSpace = H5Screate_simple(1, dsDim, NULL);
    ...
    Create datasets using the dataspace
    ...
    //Release the data space
    H5Sclose(dSpace);

أتمنى أن يساعدك هذا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top