Hey hey, I admit I may have panicked a bit too much. After playing around with it a little more, I now understand why it reported different context ids.
*They weren't context ids, they were platform ids.* I was comparing my context counter to the viennacl::ocl::current_context().platform_index(). Those two are obviously completely different things. Context switching does work fine after all. Consequently, platform/device switching works fine too. Omg, this looks like the OpenCL SDK died. I had some other user report on a > similar topic on Windows, which I was never able to reproduce on Linux. Can > you please make sure that you use the latest drivers and OpenCL SDK? We > might have to file a bug report here... Now this is a completely different story. I'll try the newest OpenCL SDK and see what happens. Any chance you can send me the full output? Sure, I'll send it right away. This is a fallback mechanism: you can switch to *any* context ID you want. > If the context has been customized using setup_context() and friends, then > it will create the context with this customized setup. Otherwise it will > create a context with just the default device. This is mostly convenience > for multi-threaded use case scenarios or applications where totally > unrelated operations should be fed to different contexts (rather than just > command queues). Ah, I see. That's a nice feature now that I think about it. Is it documented somewhere in the manual? It might be a good idea to document it so people don't go nuts for no reason, like I did. Regards, Namik On Wed, Aug 13, 2014 at 10:24 PM, Karl Rupp <r...@iue.tuwien.ac.at> wrote: > Hi, > > > This error might be due to the ViennaCL-objects created in a >> different context. Do you recreate the ViennaCL-objects for each >> benchmark run? If so, there should be no such problem. >> >> >> Uhmmm, I don't think so. Anyways, that error is gone now that I'm using >> contexts in the proper way. >> > > Ok, I'll check this. > > > > I hope the user can't change the combo box values while the >> benchmark is running... >> >> >> It's only temporary for testing purposes. The real context switching >> will occur when the benchmark is started. >> > > Ah, ok :-) > > > > Yeah this is much better. Here's the new situation: >> I think there's no more duplicate contexts/devices. I've got 3 contexts: >> >> Context 0: AMD GPU using AMD SDK -works fine >> Context 1: CPU using AMD SDK -crashes >> Context 2: CPU using Intel SDK - works fine >> >> When using context 1, the program crashes with the following feedback: >> >> -in this particular run, the contexts were setup like this: >> Context id: 0 Context value: 0x87e168 Device name: Tahiti >> Context id: 1 Context value: 0x87e510 Device name: Intel(R) >> Core(TM) i5-2500K CPU @ 3.30GHz >> Context id: 2 Context value: 0x60051e8 Device name: Intel(R) >> Core(TM) i5-2500K CPU @ 3.30GHz >> >> -these two lines are my debug output: >> *1.* Benchmarking... Context id: 0 Context value: 0x87e510 >> *2.* Running on device name: Intel(R) Core(TM) i5-2500K CPU @ >> 3.30GHz >> >> -I'm getting the id >> with viennacl::ocl::current_context().platform_index() and context value >> with viennacl::ocl::current_context().handle().get() >> -Notice how it says the id is 0, even though it should be 1, while the >> context value is properly changed to the value of context 1. Also, >> running on context 2, it runs fine, but reports the id to be 1. What's >> the deal here? >> > > Ok, I'll check this myself, I'll need to have a look at the surrounding > code. > > > > -the rest is from ViennaCL: >> Build Status = -2 ( Err = -11 ) >> Log: Internal Error: Storing X86 DLL failed! >> > > Omg, this looks like the OpenCL SDK died. I had some other user report on > a similar topic on Windows, which I was never able to reproduce on Linux. > Can you please make sure that you use the latest drivers and OpenCL SDK? We > might have to file a bug report here... > > > > -then a lot of source code, with this in the middle: >> ViennaCL: FATAL ERROR: Could not find kernel >> >> -and finally, this: >> Number of kernels in program: 0 >> >> vec_mul' from program 'float_ell_matrix' >> >> Invalid parameter passed to C runtime function. >> >> Invalid parameter passed to C runtime function. >> >> terminate called after throwing an instance of 'char const*' >> > > Any chance you can send me the full output? > > > > OK scratch that. And scratch everything I've written so far. I just >> attempted to query contexts 4,5,6,... . And it unfortunately worked! I >> seem to have mysterious extra contexts! I'm totally confused now. >> >> Context id: 0 Context value: 0xc5e168 >> >> Context id: 0 Device name: Tahiti >> >> Context id: 1 Context value: 0xc5e510 >> >> Context id: 1 Device name: Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz >> >> Context id: 2 Context value: 0x61051e8 >> >> Context id: 2 Device name: Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz >> >> Context id: 3 Context value: 0xa9bdd90 >> >> Context id: 3 Device name: Tahiti >> >> Context id: 4 Context value: 0xa9be0a8 >> >> Context id: 4 Device name: Tahiti >> >> Context id: 5 Context value: 0xa9be3c0 >> >> Context id: 5 Device name: Tahiti >> >> Context id: 6 Context value: 0xa9be6d8 >> >> Context id: 6 Device name: Tahiti >> >> Context id: 7 Context value: 0xa9be9f0 >> >> Context id: 7 Device name: Tahiti >> >> and so on... >> >> What's going on here? >> > > This is a fallback mechanism: you can switch to *any* context ID you want. > If the context has been customized using setup_context() and friends, then > it will create the context with this customized setup. Otherwise it will > create a context with just the default device. This is mostly convenience > for multi-threaded use case scenarios or applications where totally > unrelated operations should be fed to different contexts (rather than just > command queues). > > Best regards, > Karli > >
------------------------------------------------------------------------------
_______________________________________________ ViennaCL-devel mailing list ViennaCL-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/viennacl-devel