小编use*_*513的帖子

Linux 帧缓冲区查看器

我想在未连接到任何物理显示器的帧缓冲区设备上测试一些文本绘制功能。有没有办法实时查看我正在绘制到 /dev/fb0 的内容?

linux framebuffer

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

一些特定用例的C ++原子存储顺序

在下一种情况下,我将a atomic<uint64_t>用作计数器,并从5个或更多线程中对其进行递增,并在递增之前使用该值来做出一些决定。

atomic<uint64_t> global_counter;

void thread_funtion(){
    uint64_t local_counter = global_counter.fetch_add(1,std::memory_order_relaxed);
    if(local_counter == 24)
       do_somthing(local_counter);
}
Run Code Online (Sandbox Code Playgroud)

thread_funtion()将由5个不同的线程执行。一旦我知道了,local_counter我的代码就不再关心global_counterthread_funtion()运行时是否再次进行更改(业务逻辑的方式是每次thread_function()调用仅需要一个唯一的递增值)。

std::memory_order_relaxed安全的,在这种情况下使用?

c++ multithreading thread-safety compare-and-swap stdatomic

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

CUDA 流每线程和库行为

我正在每个线程使用 --default 流,以便从 2 个非默认流中的 2 个主机线程发出内核。一切正常,直到我想在两个线程中使用 cudnn,因为对 cudnn api 的任何调用都会在默认线程上执行该 api。

我想在与进行 cudnn api 调用的主机线程关联的流中运行每个 cudnn api。我知道我可以使用 cudnnSetStream() 设置非默认流,但我需要获取与主机线程关联的流,以便将其传递给 cudnnSetStream()。

在主机端,如何获取由 cuda 关联到我想要从中调用 cudnn api 的当前主机线程的流?

编辑:我正在使用 C 和 ubuntu。

谢谢。

multithreading cuda

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

Scala function return behaviour

I'm trying to solve this epfl scala course homework where they ask me to write the sum of a list. I can do it if I use return statements or if use match statement but I can't understand why it wouldn't work using if/else without return statement.

def sum(xs: List[Int]): Int = xs {
  if (xs.isEmpty) {
    0
  } else {
    xs.head + sum(xs.tail)
  }
}
Run Code Online (Sandbox Code Playgroud)

The run time error that I get when I run sum(List(1,3,2)) is

java.lang.IndexOutOfBoundsException: 0 …
Run Code Online (Sandbox Code Playgroud)

recursion scala

0
推荐指数
1
解决办法
46
查看次数

使用 std::variants 的 std::variant 可以吗

我试图将两种变体合并为一种变体,只是为了便于阅读。这是代码:

using VariantType_basic = std::variant<int8_t, uint8_t, int16_t, uint16_t, int32_t, uint32_t, int64_t, uint64_t, std::string>;
using VariantType_vector = std::variant<vector<int8_t>, vector<uint8_t>, vector<int16_t>, vector<uint16_t>, vector<int32_t>, vector<uint32_t>, vector<int64_t>, vector<uint64_t>, vector<std::string>>;
using VariantType_all = std::variant<VariantType_basic, VariantType_vector>;

class Container {
    public:
        Container(){}
        template<typename T>
        T get(string key, bool &found){
            found = false;
            T result;
            auto elem = m_internal_map.find(key);
            if(elem != m_internal_map.end())
                std::visit( 
                    [&](const auto& v){ 
                        // if(holds_alternative<T>(v)){

                        result = std::get<T>(v);
                        found = true;
                    //} 
                },  
                    elem->second 
                    );

            return result;
        }

        template<typename T>
        void put(string key, T&elem){

        } …
Run Code Online (Sandbox Code Playgroud)

c++ variant

0
推荐指数
1
解决办法
1891
查看次数