Hi,

It may be wrong but you may need to add -DNDEBUG flag to C
compiler.


Thanks,
--
kou

In <CANapY_LzahViR9e7e90H=wq3j0tnbZJe1Vm=j7=vvyqawnc...@mail.gmail.com>
  "Re: Using Plasma with xnd" on Tue, 27 Mar 2018 13:41:49 +0000,
  Saul Shanabrook <s.shanabr...@gmail.com> wrote:

> Ah, I see I can use garrow_buffer_get_mutable_data from c_glib.
> 
> On Tue, Mar 27, 2018 at 9:29 AM Saul Shanabrook <s.shanabr...@gmail.com>
> wrote:
> 
>> I am in the process of changing over my C wrapper to work with Arrow
>> 0.9.0. One change is that the plasma APIs now use arrow::Buffer instead of
>> of raw pointers, in Create and Get.
>>
>> In my C wrapper for Create, I need to get the mutable data pointer from
>> the arrow::Buffer, after it is created. Here is my current implementation:
>> https://github.com/plures/pxnd/blob/84e9403ef3811e0893e12076455d7cbc49c39358/libplasma/plasma.cc#L56-L75
>> I do something similar to the Python wrapper around plasma:
>> https://github.com/apache/arrow/blob/f9f8320339692d4134d1ef42c32cb7c8d547593e/python/pyarrow/plasma.pyx#L300-L307
>>
>>
>> However, this fails to link, I think because the mutable_data method is
>> defined in the class and so is inline. So it doesn't show up in the
>> libarrow.dylib/libarrow.a archive. Let me know if I am missing something
>> obvious, this is just my hypothesis for why it isn't working.
>>
>> Is there a way for a third party library to get the pointer to the data
>> from a arrow::Buffer?
>>
>> On Wed, Mar 7, 2018 at 10:59 AM Wes McKinney <wesmck...@gmail.com> wrote:
>>
>>> Where are you going to make Plasma requests, in Python or in C?
>>>
>>> * If in Python, use the buffer protocol to access the memory in C
>>> https://docs.python.org/3/c-api/buffer.html#bufferobjects
>>> * If in C, then I would suggest adding extern "C" APIs directly in
>>> libplasma.so so you can connect to the Plasma store and make requests
>>> directly in C.
>>>
>>> I want to make 100% sure that you need to interact with the Plasma
>>> client in C before I send you down that path. Here's an example of a C
>>> API embedded in an otherwise C++ library
>>> https://github.com/wesm/feather/blob/master/cpp/src/feather/feather-c.h.
>>>
>>> - Wes
>>>
>>> On Wed, Mar 7, 2018 at 10:53 AM, Saul Shanabrook <s.shanabr...@gmail.com>
>>> wrote:
>>> > Hey Wes,
>>> >
>>> > Since all our logic for writing and reading the data is written in C, we
>>> > need to be get access to the memory in C as well. I think it makes sense
>>> > then for me to work on creating a C++ wrapper around Plasma that exports
>>> > what is necessary in C. Should that be in Arrow GLib?
>>> >
>>> > Best,
>>> > Saul
>>> >
>>> > On Tue, Mar 6, 2018 at 11:49 PM Wes McKinney <wesmck...@gmail.com>
>>> wrote:
>>> >
>>> >> hi Saul -- I think the easiest solution here is the buffer/memoryview
>>> >> protocol. You won't have to touch the Cython or C++ API from pyarrow
>>> >> if you do this.
>>> >>
>>> >> You can interact with a Buffer object like any other Python object
>>> >> implementing the buffer protocol. See numpy.frombuffer as an example
>>> >> of a function that interacts with such objects. I would suggest adding
>>> >> a method to xnd method for this.
>>> >>
>>> >> If you need to interact with Plasma from C then things will be more
>>> >> complicated -- Robert or Philipp should be able to advise in this
>>> >> case.
>>> >>
>>> >> - Wes
>>> >>
>>> >> On Tue, Mar 6, 2018 at 4:55 PM, Saul Shanabrook <
>>> s.shanabr...@gmail.com>
>>> >> wrote:
>>> >> > Hey Wes,
>>> >> >
>>> >> > I don't have much experience doing C + Python + Cython development,
>>> so I
>>> >> am
>>> >> > probably missing something obvious, but reading the Cython docs,
>>> >> > <
>>> >>
>>> https://cython.readthedocs.io/en/latest/src/userguide/external_C_code.html#public-declarations
>>> >> >
>>> >> > it
>>> >> > seems like I can only access types marked as public from C code.
>>> When I
>>> >> > compile arrow locally, I do get some C++ headers for the plasma code,
>>> >> but I
>>> >> > don't think I can use them from C code either.
>>> >> >
>>> >> > Best,
>>> >> > Saul
>>> >> >
>>> >> >
>>> >> >
>>> >> > On Tue, Mar 6, 2018 at 3:12 PM Wes McKinney <wesmck...@gmail.com>
>>> wrote:
>>> >> >
>>> >> >> hi Saul,
>>> >> >>
>>> >> >> Are you able to use the buffer/memoryview protocol? Instances of
>>> >> >> pyarrow.Buffer, like PlasmaBuffer, support this
>>> >> >>
>>> >> >>
>>> >>
>>> https://github.com/apache/arrow/blob/master/python/pyarrow/plasma.pyx#L182
>>> >> >>
>>> >> >> - Wes
>>> >> >>
>>> >> >> On Tue, Mar 6, 2018 at 3:09 PM, Saul Shanabrook <
>>> s.shanabr...@gmail.com
>>> >> >
>>> >> >> wrote:
>>> >> >> > I am trying to use the Plasma store to back xnd objects. Xnd (
>>> >> >> > https://xnd.readthedocs.io/en/latest/xnd/index.html) is a
>>> container
>>> >> >> library
>>> >> >> > in C that has Python bindings. I would like to get a pointer to
>>> the
>>> >> >> > allocated memory after creating or get an object in Plasma. I see
>>> that
>>> >> >> this
>>> >> >> > is supported in the C++ API (
>>> >> >> >
>>> >> >>
>>> >>
>>> https://arrow.apache.org/docs/cpp/classplasma_1_1_plasma_client.html#ac18ab9cc792c620a97a3dcb165e0ecd7
>>> >> >> )
>>> >> >> > but not in the python API (as far as I can tell). Is it possible
>>> to
>>> >> use
>>> >> >> the
>>> >> >> > C++ Plasma API from a C project? If not, would it make sense to
>>> expose
>>> >> >> > pointer access on the Python API using capsules
>>> >> >> > https://docs.python.org/3.6/c-api/capsule.html
>>> >> >> > <https://docs.python.org/3.6/c-api/capsule.html#capsules>?
>>> >> >>
>>> >>
>>>
>>

Reply via email to