Error -1001 in clGetPlatformIDs Call !

心已入冬 提交于 2019-11-27 07:35:12

问题


I am trying to start working with OpenCL. I have two NVidia graphics card, I installed "developer driver" as well as SDK from NVidia website. I compiled the demos but when I run

./oclDeviceQuery

I see:

OpenCL SW Info:

Error -1001 in clGetPlatformIDs Call !!!

How can I fix it? Does it mean my nvidia cards cannot be detected? I am running Ubuntu 10.10 and X server works properly with nvidia driver.

I am pretty sure the problem is not related to file permissions as it doesn't work with sudo either.


回答1:


In my case I have solved it by installing nvidia-modprobe package available in ubuntu (utopic/multiverse). And the driver itself (v346) was installed from
https://launchpad.net/~mamarley/+archive/ubuntu/nvidia

Concretely, I have installed nvidia-opencl-icd-346, nvidia-libopencl1-346, nvidia-346-uvm, nvidia-346 and libcuda1-346. Not sure if they are all needed for OpenCL.




回答2:


This is a result of not installing the ICD portion of Nvidia's openCL runtime. The ICD profile will instruct your application of the different openCL implementations installed on the system as multiple implementations from different vendors can coexist. Whe your application does not find the ICD information it gives the Error -1001.




回答3:


Run your program as root. In case of success: you have trouble with cl_khr_icd- extension to load the vendor driver. If you not running X11, you have to create device files manually or by (boot-)script: ERROR: clGetPlatformIDs -1001 when running OpenCL code (Linux)




回答4:


Same problem for me on a Linux system. Solution is to add the user to the video group:

# sudo usermod -aG video your-user-name



回答5:


Since I just spend a couple of hours on this, I thought I would share: I got the error because I was connected to the machine per remote desktop (mstsc). On the machine itself everything worked fine.

I have been told that it should work with TeamViewer by the way.




回答6:


Dont know if you ever solved this problem, but I had the same issue and solved it in this post: ERROR: clGetPlatformIDs -1001 when running OpenCL code (Linux)

Hope it helps!




回答7:


I have solved it in Ubuntu 13.10 saucy for intel opencl by created link:

sudo ln -s /opt/intel/opencl-1.2-3.2.1.16712/etc/intel64.icd /etc/OpenCL/vendors/nvidia.icd



回答8:


I just ran into this problem on ubuntu 14.04 and I could not find ANY working answers anywhere online including this thread (though this was the first to show up on google). What ended up working for me was to remove ALL previous nvidia software and then to reinstall it using the .run file provided on the nvidia website. Installing the components through apt-get seems to fail for some reason.

1) Download CUDA .run file: https://developer.nvidia.com/cuda-downloads

2) Purge all previous nvidia packages

sudo apt-get purge nvidia-*

3) Install all run file components (you will likely have to stop X or restart in recovery mode to run this)

sudo sh cuda_X.X.XX_linux.run



回答9:


This might be due to querying clGetPlatformIDs by multiple threads at the same time




回答10:


You should get number of platforms, allocate the memory for platforms, again get this platforms and then create context from this platform. There is good example: http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=71



来源:https://stackoverflow.com/questions/4959621/error-1001-in-clgetplatformids-call

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!