My favorites | Sign in
Logo
                
Search
for
Updated Dec 10 (5 days ago) by wnbell
Labels: Phase-Support, Featured
FrequentlyAskedQuestions  
Frequently Asked Questions

General

Functionality

Troubleshooting


Comment by rob.patro, May 26, 2009

How is thrust different from komrade?

Comment by jaredhoberock, May 26, 2009

Thrust is version 1.0 of Komrade. All new development will proceed under this new title & project. Please check the CHANGELOG for a comprehensive list of changes.

Comment by djbuzzkill, May 29, 2009

Will we see a version of Thrust on OpenCL?

Comment by EvilGeenius, May 29, 2009

how about mentioning some of the practical uses for this thing, and maybe why you'd want to use it

Comment by ianmac45, May 29, 2009

if the hardware that supports CUDA isn't on a computer, can the thrust library fall back to normal processing through the cpu?

Comment by gregory....@gatech.edu, May 29, 2009

I would like to build the built-in correctness and performance tests in thrust. Could someone provide instructions on how to do this?

Comment by wnbell, May 31, 2009

@ gregory

We've added a FAQ entry and a DeveloperInfo page.

Comment by quirin.m...@cs.fau.de, Jun 12, 2009

How about OpenGL interoperability?

Comment by eric.griffith, Jun 20, 2009

Are there any plans to offer pinned memory in the host vector?

Comment by jaredhoberock, Jun 20, 2009

@ eric

Yes, we've considered allocating pinned memory for host_vector. It's a possibility. However, the argument against it is that pinned memory wouldn't necessarily be portable to other backends (e.g., OpenMP, OpenCL, etc.).

Comment by jaredkeithwhite, Jul 15, 2009

Is it possible that we could have the ability to choose more than the default device 0?

I have two Teslas, and I would like to use Thrust, but I need to be able to distribute the workload.

Comment by wnbell, Jul 16, 2009

@ jaredkeithwhite

If you call cudaSetDevice() before calling any Thrust functions or creating any device_vectors you should be able to change the target device. I haven't tested multigpu setups with Thrust yet, but it should act like any other program that uses the CUDA runtime-api.

Comment by jaredkeithwhite, Jul 16, 2009

@wnbell,

Perhaps I'll write a few additional components for thrust that provides device iteration capabilities, along with the ability to set the current device.

I'll submit whatever I come up with back to the group. One potential pitfall I can see with just calling "cudaSetDevice" is that occasionally some of the functions use thrust::device::arch::max_threads_per_block(), etc, which are only correct for device 0. On a homogenous device setup, that works fine -- but in multi-card setups that are heterogeneous, those are incorrect assumptions. So I think that thrust::device::arch will have to be modified at some point.

-Jared

Comment by jaredkeithwhite, Jul 16, 2009

@jaredhoberock,

Perhaps we could modify the vectors to accept an allocator? The user could then typedef their own vectors that use it. I'm seeing in my head:

typedef device_vector<cuda_host_pinned_memory_allocator> pinned_device_vector;

etc.

Comment by jaredhoberock, Jul 16, 2009

@jaredkeithwhite

Re: pinned memory Yes, a pinned allocator would probably do it. More generally I've thought we should provide host_malloc & host_new as duals to device_malloc/device_new.

Re: cudaSetDevice My understanding is that the current functionality of cudaSetDevice is not quite suited to our needs, because we can't call it arbitrarily. It must be the first cuda API entry point a thread calls, or it will fail. And yes, the stuff in the arch namespace is experimental & needs work.

Another issue with providing multi-device versions of device_vector is that it's not clear we can provide multi-device implementations of all of thrust's entry points. In particular, gather & scatter might be impossible.

If you'd like to continue discussions on these or any other proposals, please join us on the thrust-users mailing list.

Comment by xb.ning, Aug 19, 2009

What is the most efficient way to convert a Thrust::device_vector to a std::list?

Comment by jaredhoberock, Aug 19, 2009

@xb.ning

I think the most efficient way to convert to a list from a device_vector would be to use host_vector (or std::vector) as intermediate storage:

thrust::device_vector<T> d_vec; ... // do a single device to host copy thrust::host_vector<T> h_vec = d_vec; // construct std::list from a range on the host std::list<T> list(h_vec.begin(), h_vec.end());

Comment by yingdq, Aug 28, 2009

hello everyone,I am very interested in using thrust to improve performance, but it seemed that i have trouble in integrating thrust with visual studio 2008 (64bit vista). I compile thrust as the instruction told me, but there always pop up many error information, some are grammatial others linking problem. Can any one please told me how to use it(in vs2008 64bit os)? thanks alot!

Comment by wnbell, Aug 28, 2009

@yingdq

If you post the compiler output to thrust-users(1) we can provide some additional assistance.

(1)http://groups.google.com/group/thrust-users


Sign in to add a comment
Hosted by Google Code