I'm having an issue with a bit of boost compute code that I have running on two machines. My dev machine is running windows 7 using a radeon WX9100 gpu, and everything is running fine. Another lab machine I am using is nearly identical, but is running windows 10 and has the windows 10 version of the radeon driver.
The windows 7 machine shows the openCL device name being "GFX900" and the windows 10 machine shows the name as "GFX901". A bitcoin mining site i found said this is fine for that model.
What is not fine is that the boost compute/opencl memory buffers do not free from device memory on the windows 10 machine, even (especially) if i use "BUFFERNAME.~buffer()".
Im thinking this might be a driver issue, but I'm really not sure.
Thanks in advance for any help!
Eric
Related
I am looking to start programming using OpenCL. I currently have a laptop running Ubuntu Linux. (More specifically it's Linux Mint however they are similar in many respects and I will be changing back to Xubuntu shortly, so I am hoping any info will work for both.)
This laptop is a "difficult" laptop because it has both an on-chip Intel graphics processor (side by side with the CPU) and a dedicated NVIDIA Graphics Card. (I believe it is a GTX 670?) I say difficult because it was pretty complicated to install the drivers to allow me to develop using OpenGL... Even now I get confused sometimes when I run my program and it explodes because I didn't run it using 'optirun'.
Anyway, back to the question in hand, I researched the required software, and continually keep being pointed at NVIDIA's site to download their OpenCL drivers / toolkits. However I would prefer to use Khronos OpenCL rather than NVIDIA's Cuda. I don't fully understand what the difference is however*, and online info is either limited or cryptic.
The actual programming / problem vectorization I have already done, I'm just a bit lost at the moment as to what software I should / must install and how to go about doing so.
*Edit: I find the OpenCL syntax more intuitive.
I wish to write C/C++ code to communicate between a HP 15-d004au laptop and a DISTO D510 laser measuring device, which requires Bluetooth 4 Low Energy (BLE).
The laptop is supposed to have Bluetooth 4, and indeed I can pair with my device via Windows 8.1, but I can't access it in C/C++.
If I call BluetoothIsVersionAvailable(), the highest version it returns true for is 2.1, not 4.0 as required for BLE.
What's the deal?
Is this the wrong API to be using, or is it a configuration problem on the device?
Turns out that even though BluetoothIsVersionAvailable() said the laptop only has support for up to Bluetooth 2.1, the other API calls still function, so I was able to get it working anyway.
Thanks,
Rob.
I have just recently installed Windows 8, and I tried to compile and build a simple c++ game project in VS 2010, but when I did, it was running at 5 fps. On windows 7, it runs at a solid 60 fps. Nothing has been changed in the code, but there is just horrible slow down.
I have updated my video drivers, but there is still horrible lag. I thought the problem was to do with compatibility issues with windows 8 and OpenGL, but I can't find anything to confirm this. I was wondering if anyone else has had this problem, and if you have solved it.
I would recommend you test your graphics card / drivers first. All sorts of driver issues could arise when you upgrade operating systems. One of the best tests would be to download Cinebench and see how it performs. Cinebench will evaluate your OpenGL performance. If you get poor results, then you know it's a hardware / driver issue and not an issue with your application.
If the Cinebench results are good, then you can move on to the recommendations made by #Robert Rouhani (comments).
http://www.maxon.net/products/cinebench/overview.html
What sort of video card do you have in the Win8 machine?
If it's a laptop you might be battling against nVidia Optimus (or an equivalent technology?). Basically programs have to tell the OS in advance that they want to use the video card or they get defaulted to using the low power GPU embedded in the CPU (note: over-simplification).
If this is the case, there's some options in the nVidia control panel to let you create a profile telling the OS to run your app with the discrete GPU, rather than the embedded one.
We get an app that was working fine until update Windows from Vista Home Basic to 7 Home Premium. We use mscomm32.ocx to control serial port, but it seems it's not supported for 64 bits OS.
Each time we try to read the port: Thisform.msCommControl.Input We got the following:
OLE IDispath exception code 0 from MSComm: Error reading comm devide
We've made a lot of unsuccessful tests. Does any one know how to fix this problem?
The solution is to use an updated control that is contantly under development so newer Windows are also supported. ADONTEC's SuperCom ActiveX is a MSComm compatible ActiveX that developers use for many years in order to replace the MSComm. It is compatible with 32 and 64 bit of Windows 2000/XP/7/8 and Windows 10. You are almost done in few minutes. In many cases the application runs not only faster but is by far more stable and it also offers by far more functionality. See more info here.
that MSCOMM32.OCX will not work with Windows 7 64 bit machines. However, strange as it may seem I have a VB6 program controlling equipment from a virtual comm port (USB ~ serial converter)
It works fine on windows 8.64 bit machine.
The only thing is that the converter driver had to be modified to run on 64 bit.
If you are using a real com port that doesn't matter.
Try it on a 64 bit machine with Windows 8
i wrote a cuda program and i am testing it on ubuntu as a virtual machine. the reason for this is i have windows 7, i don't want to install ubuntu as a secondary operating system, and i need to use a linux operating system for testing.
my question is: will the virtual machine limit the gpu resources? So will my cuda code be faster if i run it under my primary operating system than running it on a virtual machine?
I faced a similar task once. What I ended up doing was installing Ubuntu on a 8GB thumb drive with persistent mode enabled.
That gave me 4GB to install CUDA and everything else I needed.
Having a bootable USB stick around can be very useful. I recommend reading this.
Also, this link has some very interesting material if you're looking for other distros.
Unfortunately the virtual machine simulates a graphics device and as such you won't have access to the real GPU. This is because of the way the virtualisation handles multiple VMs accessing the same device - it provides a layer in between to share the real device.
It is possible to get true access to the hardware, but only if you have the right combination of software and hardware, see the SLI Multi-OS site for details.
So you're probably out of luck with the virtualisation route - if you really can't run your app in Windows then you're limited to the following:
Unrealistic: Install Linux instead
Unrealistic: Install Linux alongside (not an option)
Boot into a live CD, you could prepare a disk image with CUDA and mount the image each time
Setup (or beg/borrow) a separate box with Linux and access it remotely
I just heard a talk at NVIDIA's GPU technology conference by a researcher named Xiaohui Cui (Oak Ridge National Laboratory). Among other things, he described accessing GPUs from Virtual machines using something called gVirtuS. He did not create gVirtuS, but described it as an opensource "virtual cuda" driver. See following link:
http://osl.uniparthenope.it/projects/gvirtus/
I have not tried gVirtuS, but sounds like it might do what you want.
As of CUDA 3.1 it's virtualization capabilities are not vivid, so the only usable approach is to run CUDA programs directly on the target HW+SW
Use rCUDA to add a virtual GPU to your VM.