can a hardware programmable card do this?

M

Mark

We have a particular software project where a minority of the
function calls are taking up a majority of the cpu time.
(they do a lot of geometric, trig and other functions related
to vectors corresponding to tracks in 3d space)

We think there's not much more that can be done to speed
these functions up on the computer we have (or can have).
The question is, aren't there available now hardware cards
that you can load with particular code (that would correspond to
these functions) so that the function would be processed entirely
in hardware? The card would have a software toolkit so that
when you compile your project you could tell it to take
functions X,Y,and Z and install them on the card and then
install the special function API links from the normal software
to the card. When the program is started up, it would load the
card with the code (this way you could continue developing those
functions and then conveniently load them to hardware for speed)
for those functions. As the program runs, when it calls
functionX(arg1, arg2, etc) it would really pass the functions
information across the bus to the card, then the result back
to the calling function just like it never left software.

That seems a lot to ask but it seems I've heard that's possible?

Mark
 
V

Victor Bazarov

Mark said:
We have a particular software project where a minority of the
function calls are taking up a majority of the cpu time.
(they do a lot of geometric, trig and other functions related
to vectors corresponding to tracks in 3d space)

We think there's not much more that can be done to speed
these functions up on the computer we have (or can have).

I wonder if you unnecessarily limit yourself to some particular subset
of available computers...
The question is, aren't there available now hardware cards
that you can load with particular code (that would correspond to
these functions) so that the function would be processed entirely
in hardware?

If you're looking to parallelize your calculations, then, yes, there
are two approaches I've seen: special hardware and more separate CPUs
that can execute your threads. Special hardware is not the best approach
in many aspects, but in some rare cases it could be just what you need.
I would like to emphasize "rare".

Parallelizing your calculations on several CPUs using threads or fibres
is much simpler, and much more accessible to a regular developer.
The card would have a software toolkit so that
when you compile your project you could tell it to take
functions X,Y,and Z and install them on the card and then
install the special function API links from the normal software
to the card. When the program is started up, it would load the
card with the code (this way you could continue developing those
functions and then conveniently load them to hardware for speed)
for those functions. As the program runs, when it calls functionX(arg1,
arg2, etc) it would really pass the functions
information across the bus to the card, then the result back
to the calling function just like it never left software.

That seems a lot to ask but it seems I've heard that's possible?

I've heard it too. This doesn't seem like a language problem, though.
You need to find a better newsgroup to ask about this. Something
related to microprocessors, probably. Or hardware. Or the platform.
Try asking for directions in comp.programming.

V
 
A

Ares Lagae

This is not topical here.

However, whether this can be done depends on what the function does. The GPU
is not (yet) a general purpose computing device. Have a look at
http://www.gpgpu.com/.

Ares Lagae
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top