小编Ale*_*iad的帖子

在AMD GPU中使用Python + Theano和OpenCL

我正在尝试使用Python与Theano来加速OpenCL的一些代码.我安装libgpuarraypygpu按照指示(我认为),并没有错误.安装检测到安装的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".我安装Theanopip,后来libgpuarray按照他们网站上的说明安装.

我究竟做错了什么?

python opencl theano

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

避免在C#中调用反射的用户代码

我正在为我正在教授的课程实施一个自动"评估员".总的想法是每个学生都提供了一些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在课堂上看到一个字段.问题是,我不希望我的学生能够通过反射或任何其他技术访问xoptfopt领域,因为这将是作弊,或至少,如果他们这样做,所以我可以相应地惩罚他们;) .

因此,一般的问题是:是否有任何方法可以禁止在我动态加载的代码中使用Reflection,或者在任何其他意义上禁止此代码访问私有字段(作弊).

提前致谢.

c# reflection code-security

13
推荐指数
1
解决办法
464
查看次数

为什么一些python内置"函数"实际上是类型?

__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,以防万一差异很重要.

提前致谢.

python

12
推荐指数
1
解决办法
325
查看次数

在Flask模板上下文中获取当前函数名称

我基本上需要的是以下内容:

{{ 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"如果你在西班牙语页面.

python flask

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

在Windows窗体用户控件中嵌入XNA游戏

我有一个简单的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似乎对我不起作用(它表示"错误的结构大小")

有任何想法吗?

提前致谢.

c# graphics xna winforms

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

标签 统计

python ×3

c# ×2

code-security ×1

flask ×1

graphics ×1

opencl ×1

reflection ×1

theano ×1

winforms ×1

xna ×1