我正在尝试使用Python与Theano来加速OpenCL的一些代码.我安装libgpuarray并pygpu按照指示(我认为),并没有错误.安装检测到安装的OpenCL运行时.
我只是不能为OpenCL运行Theano示例,主要是因为我不知道如何指定我的GPU.据我所知Radeon HD 5340/5450/5470,我的GPU是一款inxi.Theano文档中的所有代码都是使用的device=cuda0,也是唯一提到OpenCL的地方,它说的是数字device=openclN在哪里N.
我尝试device=opencl0了一个pygpu错误,说正确的格式是opencl<int>:<int>.我已经尝试过任意数量的数字组合(opencl0:0等等),而且总是一个GpuArrayException: Unknown error.
我的系统是Ubuntu 14.04 x64,我的硬件是东芝Satellite,15".我安装Theano了pip,后来libgpuarray按照他们网站上的说明安装.
我究竟做错了什么?
我正在为我正在教授的课程实施一个自动"评估员".总的想法是每个学生都提供了一些DLL,并实现了一些算法.我的评估者使用Reflection加载所有这些DLL,找到学生实现并在锦标赛中评估它们.所有这些算法都是黑盒优化器,它们实现了以下接口
public interface IContinuousMetaheuristic
{
// ... Some unimportant properties
Vector Evaluate(Function function, int maxEvaluations, ...);
}
Run Code Online (Sandbox Code Playgroud)
Function(至少相关部分)的类定义是:
public class Function:
{
private Vector xopt; // The optimum point
private double fopt; // The optimum value
public double Evaluate(Vector x);
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我需要将一个Function实例传递给这些元启发式.这些功能由我自己实现.其中大多数在某种意义上是随机的,也就是说,我在函数构造函数中选择一个随机最优点.这就是为什么你可以xopt在课堂上看到一个字段.问题是,我不希望我的学生能够通过反射或任何其他技术访问xopt或fopt领域,因为这将是作弊,或至少,如果他们这样做,所以我可以相应地惩罚他们;) .
因此,一般的问题是:是否有任何方法可以禁止在我动态加载的代码中使用Reflection,或者在任何其他意义上禁止此代码访问私有字段(作弊).
提前致谢.
__builtin__模块中的许多迭代器"函数" 实际上都是作为类型实现的,即使文档将它们称为"函数".举个例子enumerate.文档说它相当于:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
Run Code Online (Sandbox Code Playgroud)
当然,这与我实施的完全一样.但是,我使用之前的定义运行了以下测试,并得到了:
>>> x = enumerate(range(10))
>>> x
<generator object enumerate at 0x01ED9F08>
Run Code Online (Sandbox Code Playgroud)
这是我的期望.但是,在使用该__builtin__版本时,我得到了这个:
>>> x = enumerate(range(10))
>>> x
<enumerate object at 0x01EE9EE0>
Run Code Online (Sandbox Code Playgroud)
由此我推断它被定义为
class enumerate:
def __init__(self, sequence, start=0):
# ....
def __iter__(self):
# ...
Run Code Online (Sandbox Code Playgroud)
而不是文档显示的标准形式.现在我可以理解它是如何工作的,以及它是如何与标准形式相同的,我想知道的是这样做的原因是什么.这种方式更有效吗?它是否与在C中实现的这些函数有关(我不知道它们是否存在,但我怀疑如此)?
我正在使用Python 2.7.2,以防万一差异很重要.
提前致谢.
我基本上需要的是以下内容:
{{ url_for(current_view) }}
Run Code Online (Sandbox Code Playgroud)
在Jinja2模板中,如果响应来自:
@app.route('/')
def index():
return render('index.html')
Run Code Online (Sandbox Code Playgroud)
然后current_view等于"index",即实际的视图名称,这样就url_for可以了.
为了提供一些上下文,使用时实际上出现了这个问题flask-babel.我希望有一个"切换语言按钮",基本上重定向到相同的URL,但使用不同的语言代码,如:
{{ url_for(current_view, lang_code="es") }}
Run Code Online (Sandbox Code Playgroud)
如果你在英文页面,lang_code="en"如果你在西班牙语页面.
我有一个简单的XNA 4.0游戏.我想制作一个Windows窗体用户控件来渲染这个游戏,并提供必要的交互反馈(键盘和鼠标)回XNA.
我尝试过以下方法:
在XNA中:
将XNA的Game.GraphicsDevice重定向到RenderTarget2D.
发送一个事件,发送一个具有KeyboardState和MouseState的对象,由Windows Forms填写,在Update()的开头
在WinForms中:
捕获事件,使用Windows窗体中常用的键盘和鼠标事件获取的数据填充KeyboardState和MouseState.
在OnPaint上,调用Game.RunOnFrame()
从游戏中获取RenderTarget2D(作为纹理).
锁定纹理的数据,并尝试在我的用户控件的图形中逐个像素地绘制它.
另一个想法是调用Game.Run()(新的线程)并在游戏中发送一个发送RenderTarget2D的事件.
我发现了以下问题:
如果我调用Game.Run()我无法隐藏游戏的窗口(显示为黑色,因为我正在重定向渲染)
Game.Run()必须在不同的线程上调用,因为它启动一个新的事件循环(它调用Application方法),然后我在我的用户控件中绘制它创建的不同线程(坏,坏)
使用Color,Vector4甚至Rgba32锁定RenderTarget2D似乎对我不起作用(它表示"错误的结构大小")
有任何想法吗?
提前致谢.