小编Fra*_*rez的帖子

尝试使用clock_gettime(),但是从time.h获得了大量"未声明"的错误

我正在尝试使用测量函数的运行时间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)

c time libraries

6
推荐指数
1
解决办法
1万
查看次数

Matplotlib图未更新数据更改

我正在使用的实现图像查看器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(),但是在这方面没有任何区别.

提前致谢.

python matplotlib pyqt4

3
推荐指数
1
解决办法
5929
查看次数

已安装beignet以在Intel上使用OpenCL,但是OpenCL程序仅在以root用户身份运行时才能工作

我有一个Intel HD Graphics 4000第三代处理器,我的操作系统是Linux Mint 17.1 64位。我安装beignet了能够OpenCL在GPU上运行的程序。我在使用pyOpenCL绑定时遇到了很多问题,所以我决定卸载当前beignet版本并安装最新版本(您可以在此处查看我问过的上一个问题并回答自己的问题)。

升级beignet工作正常,现在我可以OpenCL通过pythonC/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)

python gpu gpgpu intel opencl

3
推荐指数
1
解决办法
2145
查看次数

标签 统计

python ×2

c ×1

gpgpu ×1

gpu ×1

intel ×1

libraries ×1

matplotlib ×1

opencl ×1

pyqt4 ×1

time ×1