Re: [Rd] Manipulating single-precision (float) arrays in .Call functions

From: Duncan Murdoch <>
Date: Mon, 18 Jul 2011 12:19:13 -0400

On 18/07/2011 11:52 AM, Alireza Mahani wrote:
> I am writing a wrapper function in C++ that calls a GPU kernel. My array type
> for the GPU kernel is float, so I would like my wrapper function to receive
> float arrays from R. I understand that I can use 'as.single' in R to copy a
> double-precision vector from R in single-precision format while using the
> '.C' interface, but is there any way to do something similar for '.Call'?
> Given that the latter passes pointers from R to C/C++, I'm guessing this may
> be impossible, but I wanted to double-check. If you can suggest a solution,
> a small code sample would be much appreciated.
> The reason I prefer '.Call' to '.C' is because the former passes pointers
> and therefore creates less data transfer overhead as opposed to the latter
> which copies data. Is this argument controversial?

R has no native type holding singles. It exports a double to a single vector in .C if you ask it to, but that's not available in .Call. You'll need to do the copying yourself.

Duncan Murdoch mailing list Received on Mon 18 Jul 2011 - 16:21:49 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 19 Jul 2011 - 00:10:13 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.

list of date sections of archive