小编mch*_*hen的帖子

CUDA共享和全局内存之间有什么区别?

我对如何在CUDA中使用共享和全局内存感到困惑,尤其是对于以下内容:

  • 当我们使用时cudaMalloc(),我们得到一个指向共享或全局内存的指针吗?
  • 全局内存是否驻留在主机或设备上?
  • 是否有任何尺寸限制?
  • 哪个访问速度更快?
  • 将变量存储在共享内存中与通过内核传递其地址相同吗?也就是说,而不是

    __global__ void kernel() {
       __shared__ int i;
       foo(i);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    为什么不等同呢

    __global__ void kernel(int *i_ptr) {
       foo(*i_ptr);
    }
    
    int main() {
       int *i_ptr;
       cudaMalloc(&i_ptr, sizeof(int));
       kernel<<<blocks,threads>>>(i_ptr);
    }
    
    Run Code Online (Sandbox Code Playgroud)

关于全局与共享内存中的特定速度问题存在很多问题,但没有一个问题包含何时在实践中使用任何一个内容的概述.

非常感谢

memory cuda global shared-memory

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

如何在R Shiny中使用tabPanel作为输入?

如果用户点击特定内容,是否可以执行操作tabPanel

例如,如果用户点击tabPanel("A", ...)然后显示弹出说法You are viewing tab "A".

r shiny

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

为什么这个Java代码在花括号({})之外的方法?

我正在为java认证考试做准备,我在其中一个练习测试中看到了类似的代码:

class Foo {  
    int x = 1;  
    public static void main(String [] args) {  
        int x = 2;  
        Foo f = new Foo();  
        f.whatever();  
    }  
    { x += x; }  // <-- what's up with this?
    void whatever() {  
        ++x;  
        System.out.println(x);  
    }  
}
Run Code Online (Sandbox Code Playgroud)

我的问题是......在方法之外的花括号中编写代码是否有效?这些(如果有的话)有什么影响?

java syntax braces

30
推荐指数
3
解决办法
2万
查看次数

R避免"重新启动中断的承诺评估"警告

问题

似乎在函数中,当您评估一个多次产生错误的表达式时,您会收到警告restarting interrupted promise evaluation.例如:

foo <- function() stop("Foo error")
bar <- function(x) {
    try(x)
    x
}
bar(foo())
Run Code Online (Sandbox Code Playgroud)

产量

Error in foo() : Foo error
Error in foo() : Foo error
In addition: Warning message:
In bar(foo()) : restarting interrupted promise evaluation
Run Code Online (Sandbox Code Playgroud)

如何避免此警告并妥善处理?

背景

特别是对于写入数据库等操作,您可能会遇到锁定错误,需要您重试几次操作.因此,我正在创建一个包装器tryCatch,重新计算表达式n直到成功为止:

tryAgain <- function(expr, n = 3) {
    success <- T
    for (i in 1:n) {
        res <- tryCatch(expr,
            error = function(e) {
                print(sprintf("Log error to file: %s", conditionMessage(e)))
                success …
Run Code Online (Sandbox Code Playgroud)

error-handling r try-catch

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

如何重试错误声明?

如果错误,我怎么能简单地告诉R重试一次语句?我希望做的事情如下:

tryCatch(dbGetQuery(...),           # Query database
    error = function(e) {
        if (is.locking.error(e))    # If database is momentarily locked
            retry(times = 3)        # retry dbGetQuery(...) 3 more times
        else {
            # Handle other errors
        }
    }
)
Run Code Online (Sandbox Code Playgroud)

error-handling r

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

为什么matplotlib不能在不同的线程中绘图?

最低工作示例

我希望以下内容能够显示一个情节,但我看不到情节,而且解释器只是悬挂(我的后端报告自己TkAgg).

import matplotlib.pyplot as plt
from threading import Thread

def plot():
    fig, ax = plt.subplots()
    ax.plot([1,2,3], [1,2,3])
    plt.show()

def main():
    thread = Thread(target=plot)
    thread.setDaemon(True)
    thread.start()
    print 'Done'
Run Code Online (Sandbox Code Playgroud)

如何显示情节?

上下文

我正在运行一个包含大量迭代的模拟,并希望每1000次迭代更新我的绘图,以便我可以监视我的模拟是如何演变的.

Psuedocode如下:

iterations = 100000
for i in iterations:
    result = simulate(iteration=i)
    if not i % 1000:
        # Update/redraw plot here:
        # Add some lines, add some points, reset axis limits, change some colours
Run Code Online (Sandbox Code Playgroud)

在主线程中使用绘图会导致绘图GUI挂起/崩溃,大概是因为我正在进行其他工作.所以我的想法是在一个单独的线程中进行绘图.

我已经看到使用进程而不是线程的建议(例如这里).但是当我的模拟运行时,我无法操纵图形或轴来添加线等,因为图形对象在远程过程中.

编辑

我不相信这个问题是另一个问题的重复,因为这个问题涉及为什么pyplotapi不能用于操纵两个不同的图,每个都在一个单独的线程上.这是因为同时执行两个图所产生的竞争条件阻止 …

python plot matplotlib

21
推荐指数
3
解决办法
2万
查看次数

R包 - 'zzz.R'用于什么文件?

我打算将我的一些代码压缩成一个包,并且正在查看CRAN上一些已发布包的来源作为指南.我注意到很多包都包含了这个文件R\zzz.R,所以我认为必须有一些约定.

但是,我zzz.R在官方写作R扩展指南中找不到任何提及.这个文件是什么,我需要在我的包中加入一个吗?为什么命名它的方式 - 为什么不zzzz.R呢?

r package

20
推荐指数
2
解决办法
4677
查看次数

在转置时澄清CUBLAS中的主要维度

对于矩阵A,文档仅声明相应的前导维度参数lda引用:

用于存储矩阵A的二维阵列的前导维度

因此,我认为这只是A给定CUBLAS列主要存储格式的行数.但是,当我们考虑时Op(A),领导维度现在指的是什么?

c cuda gpgpu matrix cublas

19
推荐指数
2
解决办法
7961
查看次数

为什么CUDA代码在NVIDIA Visual Profiler中运行得如此之快?

在NVIDIA Visual Profiler(运行相同的 .exe)中,在命令行上花费超过1分钟的代码片段在几秒钟内完成.所以自然的问题是为什么?命令行是否有问题,或者Visual Profiler是否做了不同的事情并且没有真正执行命令行中的所有内容?

我正在使用CUBLAS,Thrust和cuRAND.

顺便说一句,最近我的机器上的编译代码明显减慢,甚至以前运行得很快的旧代码,因此我开始怀疑.

更新:

  • 我已经检查过命令行和Visual Profiler上的计算输出是否相同 - 即在两种情况下都运行了所有必需的代码.
  • GPU-鲨鱼表示,我的性能状态不变的P0,当我从命令行切换到Visual探查.
  • 但是,使用Visual Profiler运行时,GPU使用率报告为0.0%,但在命令行运行时,报告率高达98%.
  • 此外,Visual Profiler使用的内存 少得多.当运行命令行时,任务管理器指示使用650-700MB内存(第一次cudaFree(0)调用时出现峰值).在Visual Profiler中,这个数字下降到~100MB.

performance cuda gpgpu

17
推荐指数
2
解决办法
2300
查看次数

如何在R Shiny中实现清理程序?

例如,我闪亮的应用程序可能会打开数据库连接

# server.R
db <- dbConnect("SQLite", DB_PATH)
shinyServer(
    ...  # things involving db
)
Run Code Online (Sandbox Code Playgroud)

现在,当Shiny会话结束时,如何确保连接db正确关闭(通过dbDisconnect(db))?实际上,应该为连接到服务器的每个客户端执行清理,还是仅执行一次?

我只是担心多个用户一直连接和断开Shiny应用程序,如果没有正确清理,他们将留下悬空的数据库连接.实际上,客户只需关闭浏览器就可以在没有警告的情

r shiny

17
推荐指数
3
解决办法
6313
查看次数