openPMD/openPMD-api

Parameter Read/Write: Data Policy

開放

#470 建立於 2019年2月16日

 (2 則留言) (0 個反應) (0 位負責人)C++ (57 個分叉)auto 404
backendhelp wantedrefactoring

倉庫指標

星標
 (160 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

It would probably be useful if we added a trait / policy or runtime converter to the Parameter< Operation::READ_DATASET > (and write) data members of shared pointers in order to share more complex data objects.

For example returning to python a py::array, that the user might not handle, might result in it getting garbage collected before our flush() can be called, which in turn causes in invalid memory access in the backend. We could keep that py::array alive until flush() as in C++ by returning a shared_ptr< py::array >.

Overloads for RecordComponent::loadChunk<T> are already okay and well designed, but we cannot share yet an object that needs a more indirect data access pattern than a shared_ptr of raw memory, since we access it right away: https://github.com/openPMD/openPMD-api/blob/0.7.1-alpha/src/IO/HDF5/HDF5IOHandler.cpp#L1017

貢獻者指南