首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >英特尔i5处理器比更好?

英特尔i5处理器比更好?
EN

Stack Overflow用户
提问于 2014-03-18 13:54:04
回答 2查看 156关注 0票数 1

在我的应用程序中,我展示了所有可用的OpenCL设备,以便用户能够选择他想要执行计算的设备。我在笔记本电脑上得到的结果让我迷惑不解。

以下是产生这些结果的代码的摘录:

代码语言:javascript
运行
复制
//CL_DEVICE_TYPE
            {
                cl_device_type devtype;
                QString temp = "Unknown";
                err = clGetDeviceInfo(devices[i][j], CL_DEVICE_TYPE, sizeof(devtype), &devtype, NULL);
                if(err == CL_SUCCESS)
                {
                    if(devtype == CL_DEVICE_TYPE_CPU)
                        temp = "CPU";
                    else if(devtype == CL_DEVICE_TYPE_GPU)
                        temp = "GPU";
                    else if(devtype == CL_DEVICE_TYPE_ACCELERATOR)
                        temp = "Accelerator";
                    else
                        temp = "Unkown";
                }
                ilist->append(temp);
            }

            //CL_DEVICE_MAX_CLOCK_FREQUENCY
            {
                cl_uint devfreq;
                err = clGetDeviceInfo(devices[i][j], CL_DEVICE_MAX_CLOCK_FREQUENCY, sizeof(devfreq), &devfreq, NULL);
                if(err == CL_SUCCESS)
                    ilist->append(QString::number((unsigned int)devfreq));
                else
                    ilist->append("Unknown");
            }

            //CL_DEVICE_GLOBAL_MEM_SIZE
            {
                cl_ulong devmem;
                err = clGetDeviceInfo(devices[i][j], CL_DEVICE_GLOBAL_MEM_SIZE, sizeof(devmem), &devmem, NULL);
                devmem /= 1000000;
                if(err == CL_SUCCESS)
                    ilist->append(QString::number((unsigned int)(devmem)));
                else
                    ilist->append("Unkown");
            }

            //CL_DEVICE_MAX_COMPUTE_UNITS * CL_DEVICE_MAX_WORK_GROUP_SIZE
            {
                cl_uint devcores;
                err = clGetDeviceInfo(devices[i][j], CL_DEVICE_MAX_COMPUTE_UNITS, sizeof(devcores), &devcores, NULL);
                if(err == CL_SUCCESS)
                {
                    size_t devcores2;
                    err = clGetDeviceInfo(devices[i][j], CL_DEVICE_MAX_WORK_GROUP_SIZE, sizeof(devcores2), &devcores2, NULL);
                    if(err == CL_SUCCESS)
                        ilist->append(QString::number(((unsigned int)(devcores)) * ((unsigned int)(devcores2))));
                    else
                        ilist->append("Unkown");
                }
                else
                    ilist->append("Unknown");
            }

我不明白的是内存和并行计算的no显示的CPU。知道我为什么会得到这些结果吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-18 14:15:22

这是因为CL_DEVICE_MAX_WORK_GROUP_SIZE不是并行计算能力的指标。

票数 2
EN

Stack Overflow用户

发布于 2014-03-18 18:03:26

测量设备性能是一项复杂的任务。

您使用的度量标准不适合确定设备的速度。此外,像矩阵乘法这样的简单任务也不能显示出来。您需要使用基准测试来确定计算能力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22481502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档