我正在尝试使用测量函数的运行时间clock_gettime().我包括time.h,我添加-lrt到Makefile,并在Eclipse CDT上添加了正确的路径.但是,当我尝试编译时,我会遇到这些错误:
experiments.c: In function ‘main’:
experiments.c:137:2: error: unknown type name ‘timespec’
timespec time1, time2;
^
experiments.c:139:2: warning: implicit declaration of function ‘clock_gettime’ [-Wimplicit-function-declaration]
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
^
experiments.c:139:16: error: ‘CLOCK_PROCESS_CPUTIME_ID’ undeclared
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1);
Run Code Online (Sandbox Code Playgroud)
这种情况发生在CLOCK_我试图使用的任何类型.我一直在阅读大量的问题/答案和教程,但却找不到有用的东西.
我包括的标题是:
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
Run Code Online (Sandbox Code Playgroud)
我在Ubuntu 13.10 32位上gcc并使用以下内容进行编译CFLAGS:-g -Wall -pedantic -std=c99
如果我添加-D_POSIX_C_SOURCE=199309L我得到的标志error: unknown type name ‘timespec’和有关使用的警告timespec.
这是代码的一部分,以防它有帮助:
timespec time1, time2;
int temp;
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, …Run Code Online (Sandbox Code Playgroud) 我正在使用的实现图像查看器matplotlib.这个想法是对图像进行的更改(例如过滤器应用程序)将自动更新.
我创建了一个图来显示初始图像,并添加了一个pyQt用于更新数据的按钮.数据确实发生了变化,我已经检查过,但图中没有.但是,如果在我按下过滤器应用程序按钮后,我使用标准工具栏移动图像matplotlib,则会更新图像.
我认为在更新图像时我做错了,但由于移动它实际上会强制更新,因此它会显示数据更改.但是,当我按下按钮时,我希望这种情况发生.
下面是一些代码.这是初始数字初始化,显示原始图像:
self.observableFig = Figure((4.0, 4.0), dpi=100)
self.canvas = FigureCanvas(self.observableFig)
self.canvas.setParent(self.observableWindow)
self.canvas.setFocusPolicy(Qt.StrongFocus)
self.canvas.setFocus()
self.canvas.mpl_connect('button_press_event', self.on_click)
# Showing initial data on Window
self.observableFig.clear()
self.observableAxes = self.observableFig.add_subplot(1, 1, 1)
min, max = self.min, self.max
self.observableAxes.imshow(self.data, vmin=min, vmax=max, origin='lower')
Run Code Online (Sandbox Code Playgroud)
这是按下更改数据的按钮时的事件:
self.observableAxes.imshow(self.data/2, origin='lower')
# plt.clf()
# plt.draw()
# plt.show()
Run Code Online (Sandbox Code Playgroud)
我已经尝试了draw(),show()基本上我发现的任何事情pyplot.我在开始时也尝试过plt.ion(),但是在这方面没有任何区别.
提前致谢.
我有一个Intel HD Graphics 4000第三代处理器,我的操作系统是Linux Mint 17.1 64位。我安装beignet了能够OpenCL在GPU上运行的程序。我在使用pyOpenCL绑定时遇到了很多问题,所以我决定卸载当前beignet版本并安装最新版本(您可以在此处查看我问过的上一个问题并回答自己的问题)。
升级beignet工作正常,现在我可以OpenCL通过python和C/C++绑定在我的GPU上运行代码。但是,我只能以root用户身份运行程序,否则它们不会将我的GPU检测为有效设备。
该程序可以正常运行,这很不错,但是现在我试图解决必须以root用户身份运行所有程序的烦恼。
当我不以超级用户身份运行它们时,出现以下错误:
/dev/dri/card0 not authenticated
Device open failed, aborting...
/dev/dri/card0 not authenticated
Device open failed, aborting...
cl_get_gt_device(): error, unknown device: ffffffff
Run Code Online (Sandbox Code Playgroud)
当我以root用户身份运行它们时,它们可以工作,但首先它们显示以下消息:
modprobe: FATAL: Module nvidia not found.
Run Code Online (Sandbox Code Playgroud)
我尝试sudo apt-get purge nvidia*了一下,但由于某种原因,它也卸载了pyOpenCL,当然我的python程序停止了工作。我在这里还找到了一个建议检查/dev/nvidia*/文件夹权限的答案,但该文件夹在我的计算机中不存在。
提前致谢。
编辑:添加一些请求的输出。
来自的输出lspci | grep -i vga:
00:02.0 VGA …Run Code Online (Sandbox Code Playgroud)