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.
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.
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!!
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.
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!
another question: what time did the the Runtime class be Constructed? as soon as a stream be created or other time?
Its a singleton class constructed as soon as stream is created.
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 ?
Retrieving data ...