> Trying to dlopen random libraries is bad, so when libgomp dlopens something, > it better should be a plugin and not something else. > I'd suggest that the name should be matching libgomp-plugin-*.so.1 or > similar wildcard. Ok, sounds reasonable.
> Why? If this is the plugin stuff, then IMNSHO it should be initialized only > on the first call to GOMP_target{,_data,_update} or omp_get_num_devices. > Just use pthread_once to initialize it just once. Ok, once we don't care about deallocation, that seems reasonable too. > > 4) We'll need to store some information about available devices: > > - a search tree with data about mapping > > For the search tree, I was going to actually implement it myself, but got > interrupted this week with work on UDRs again. I wanted to write just > temporarily a dummy device that would execute on the host, but remap all > memory to something allocated elsewhere in the same address space by malloc. > Sure, #pragma omp declare target vars wouldn't work that way, but otherwise > it could work fine. Each device that would have a flag set that it doesn't > have shared address space between host and device (I belive HSAIL might have > shared address space, host fallback of course has shared address space, > the rest do not?) would have its own splay tree plus some host mutex to > guard accesses to the tree. Ok. Do you need all plugin infrastructure ready for that or you could experiment with dummy device without plugins? Michael > Jakub