cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

lxp121
Journeyman III

how to use mpi with brook+?

hi, everyone

I want to know is there any way i can use mpi in brook+?

it seems that there is no way to specialize which GPU i want to use. i have more than one GPU in system.

thanks!

0 Likes
8 Replies
pbhani
Journeyman III

Brook+ has no compatibility issues with MPI as far as I know. You can make MPI calls for clustered computing using GPUs.

However, on a single host, currently, Multi-GPU control is not provided by the Brook+ interface. This feature is high on our list of TODOs for the upcoming releases though. 

For now, the only way to use multiple GPUs with Brook+ is to set the environment variable BRT_ADAPTER to the desired GPU. However, this will only allow a single process to bind to the specific GPU.

If you need this feature urgently, you might consider modifying the Brook+ CAL runtime to allow selecting the GPU you want to bind to.

0 Likes

to tell the truth, i am very urgently to use mpi. i do some development on both Brook+ and CAL.

but it is hard to write kernel in CAL. even if i use brcc to generate il code, there still some problem on bind the name and allocate resource to fit the address virtualization.

what are you mean modifying the Brook+ CAL runtime ? modify the Runtime.h?

now i have 4 nodes with 2 4870x2 in each one, but i can't let the 8 cards(16 GPUs)work together!!

thanks

0 Likes

You should not have to rewrite the kernels in CAL. If you look into the Runtime source code, the CAL backend opens the CALDevice for running the kernels using calDeviceOpen().

You can simply modify this code and figure out some way to tell Brook+ about the specific device that you want to bind to. If you are able to use a separate thread for each GPU, this might be easier to accomplish as you can store the device ID in a table that can be looked up based on the current thread ID. 

 

0 Likes

i know your mean. in CALruntime.cpp, i get the function CALRuntime::initialize(), which have the device set part.

i will try this ! i hope i can find a way to solve it!

thank you!

0 Likes

another question: what time did the the Runtime class be Constructed? as soon as a stream be created or other time?

thanks!

0 Likes

Its a singleton class constructed as soon as stream is created.

0 Likes

Originally posted by: gaurav.garg Its a singleton class constructed as soon as stream is created.

is that means there is no device is open or be specilize before any stream is created ?

0 Likes

Yes.

0 Likes