I need your help to check if my 2012 cMBP is faulty or if there is a bug in the GT 650M's OpenCL drivers. The only way I can do this is asking you kind folk to run this code (zipped and attached) and compare the output with mine.
You'll have to hold down "control" when clicking on the executable so you can run it.
OpenCL is reporting that my GT 650M is running at 0 MHz, which is clearly not the case. A kind chap on the Programming forum [thread link] tried it on an rMBP, and found that the GT 650M in the rMBP reports itself to be running at 405 MHz.
If I could get one or two (or more) 2012 cMPB owners (the ones with the GT 650M, but not the retina screen) to run this code and post the results, I'll have a better idea if my cMBP is faulty (or if it's a bug).
The results my machine produce are:
It's a small and insignificant thing, and probably only affects me, but if it's an indication that my cMBP is faulty I'll get it fixed, and if it's a bug I'd like Apple to fix it.
For the sake of transparency, the code is:
Please don't ridicule my code too much, it's only purpose is to show this - potential - bug.
P.S. Yes, I know this looks like it should be in the Programming forum, but it's actually about the possibility my cMBP is faulty, so it's here.
P.P.S. I'm a little uncomfortable attaching an executable to this post (malware & trojans etc), but I can't expect people to compile the code. If I've broken any rules (I had a quick look, but couldn't see anything) please PM me and I'll remove the executable.
You'll have to hold down "control" when clicking on the executable so you can run it.
OpenCL is reporting that my GT 650M is running at 0 MHz, which is clearly not the case. A kind chap on the Programming forum [thread link] tried it on an rMBP, and found that the GT 650M in the rMBP reports itself to be running at 405 MHz.
If I could get one or two (or more) 2012 cMPB owners (the ones with the GT 650M, but not the retina screen) to run this code and post the results, I'll have a better idea if my cMBP is faulty (or if it's a bug).
The results my machine produce are:
Code:
Number of available OpenCL devices: 2
1. Intel Intel(R) Core(TM) i7-3720QM CPU @ 2.60GHz
- Max Clock Frequency: 2600
- Max Compute Units: 8
2. NVIDIA GeForce GT 650M
- [COLOR="Red"][B]Max Clock Frequency: 0[/B][/COLOR]
- Max Compute Units: 2
For the sake of transparency, the code is:
Code:
#include <iostream>
#include <OpenCL/OpenCL.h>
int main(int argc, const char * argv[])
{
cl_device_id* devices = NULL;
cl_uint num_of_devices = 0;
size_t returned_size = 0;
cl_char device_vendor[1024] = {0};
cl_char device_name[1024] = {0};
cl_uint device_max_clock = 0;
cl_uint device_max_compute = 0;
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, 0, NULL, &num_of_devices);
devices = new cl_device_id [num_of_devices];
clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, num_of_devices, devices, NULL);
std::cout << "Number of available OpenCL devices: " << num_of_devices << std::endl;
for (int i = 0; i < num_of_devices; i++)
{
clGetDeviceInfo(devices[i], CL_DEVICE_VENDOR, sizeof(device_vendor), device_vendor, &returned_size);
clGetDeviceInfo(devices[i], CL_DEVICE_NAME, sizeof(device_name), device_name, &returned_size);
clGetDeviceInfo(devices[i], CL_DEVICE_MAX_CLOCK_FREQUENCY, sizeof(device_max_clock), &device_max_clock, &returned_size);
clGetDeviceInfo(devices[i], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(device_max_compute), &device_max_compute, &returned_size);
std::cout << i+1 << ". " << device_vendor << " " << device_name << std::endl;
std::cout << "\t- Max Clock Frequency: " << device_max_clock << std::endl;
std::cout << "\t- Max Compute Units: " << device_max_compute << std::endl;
}
return 0;
}
P.S. Yes, I know this looks like it should be in the Programming forum, but it's actually about the possibility my cMBP is faulty, so it's here.
P.P.S. I'm a little uncomfortable attaching an executable to this post (malware & trojans etc), but I can't expect people to compile the code. If I've broken any rules (I had a quick look, but couldn't see anything) please PM me and I'll remove the executable.