小编ein*_*ica的帖子

cudaStreamWaitEvent会阻止主机吗?

我知道cudaEventSynchronize将阻止主机,直到事件被触发.但是,cudaStreamWaitEvent怎么样?cudaStreamWaitEvent是否仅阻止指定的流,而主机将继续,或者主机也将被阻止?

cuda cuda-events

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

在toString()中使用∞而不是"infinity"

在打印/ toString'浮点值(float,double,Float,Double)时,如何让Java使用∞符号而不是字符串"infinity"?

java numbers tostring special-characters infinity

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

如何让gnuplot使用居中的多行标题,左对齐的行?

我希望我的(gnu)情节有一个多行标题.我希望标题居中(即从最宽标题行的中心到边缘的距离应该相等),但不要让每一行独立于其他行,这是默认行为; 我希望标题行左对齐并且仅作为块居中.

我怎样才能做到这一点?

gnuplot alignment title centering

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

Java静态块的C++替代品

我正在写一个日期类,我想要一个静态地图将"Jan"映射到1,依此类推.我想知道如何初始化静态地图.这就是我目前正在做的事情,但我只是觉得与Java中的静态块相比,额外的if语句是不优雅的.我理解C++程序的编译要复杂得多,但我仍然想知道是否存在更好的解决方案.

class date {
    static map<string, int> month_map;
    int month;
    int year;
public:
    class input_format_exception {};
    date(const string&);
    bool operator< (const date&) const;
    string tostring() const;
};

map<string, int> date::month_map = map<string,int>();

date::date(const string& s) {
    static bool first = true;
    if (first)  {
        first = false;
        month_map["Jan"] = 1;
        month_map["Feb"] = 2;
        month_map["Mar"] = 3;
        month_map["Apr"] = 4;
        month_map["May"] = 5;
        month_map["Jun"] = 6;
        month_map["Jul"] = 7;
        month_map["Aug"] = 8;
        month_map["Sep"] = 9;
        month_map["Oct"] = 10;
        month_map["Nov"] = 11; …
Run Code Online (Sandbox Code Playgroud)

c++ java idioms static-initialization

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

试图证明二进制搜索的复杂性是O(log(n))

我试图证明二进制搜索的复杂性.维基百科说,最糟糕的情况是log(n).这意味着:

如果我有16个元素的数组,log(16)是4.我应该有最多4次调用来查找数组中的元素.

我的java代码:

class Main{
      int search(int[] array, int number, int start, int end) {
            System.out.println("Method call");
            int half = (end - start) / 2;

            if (array[start + half] == number) {
                return array[start + half];
            }
            if (array[start + half] < number) {
                return search(array, number, start + half, end);
            } else {
                return search(array, number, start, end - half);
            }
        }

        public static void main(String[] args) {
            int[] array = new int[] { 1, 2, 3, 4, 5, …
Run Code Online (Sandbox Code Playgroud)

java algorithm complexity-theory big-o binary-search

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

CUDA流和并发内核执行

我想使用流来并行化在单独的设备数据阵列上工作的内核的执行.数据在设备上分配并从先前的内核填充.

我写了以下程序,显示到目前为止我无法达到目标.实际上,两个非默认流上的内核在它们各自的流中顺序执行.

在具有最新Debian linux版本的2台Intel机器上观察到相同的行为.其中一款配备了CUDA 4.2的Tesla C2075,另一款配备了带有CUDA 5.0的Geforce 460GT.Visual Profiler显示4.2和5.0 CUDA版本中的顺序执行.

这是代码:

#include <iostream>
#include <stdio.h>
#include <ctime>

#include <curand.h>

using namespace std;

// compile and run this way:
// nvcc cuStreamsBasics.cu  -arch=sm_20  -o testCuStream   -lcuda -lcufft -lcurand 
// testCuStream  1024 512 512


/* -------------------------------------------------------------------------- */
//  "useful" macros
/* -------------------------------------------------------------------------- */


#define MSG_ASSERT( CONDITION, MSG )                    \
  if (! (CONDITION))                            \
    {                                   \
    std::cerr << std::endl << "Dynamic assertion `" #CONDITION "` failed in " << __FILE__ \
          << " …
Run Code Online (Sandbox Code Playgroud)

concurrency cuda cuda-streams

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

std :: generate - 如何使用随机数生成器?

在我的编程中,我需要创建一个用户定义数量的ublas向量.我想这样做

"的std ::生成".但是我遇到编译错误,这使我无法做到.

我使用的代码是这样的:

for (size_t a_= 0; a_ < p_; a_++)
{
    ublas::vector<double> next_vhat(size_of_vec);
    std::generate(next_vhat.begin(), next_vhat.end(), mygen.give_rnd);
    v_hat_.push_back(next_vhat);
}
Run Code Online (Sandbox Code Playgroud)

我不得不std::generate为函数调用创建一个专门的函数,因为class不允许我使用带参数的函数作为第三个参数("gen",参见这里.我需要数字是正态分布的,所以函数调用分布函数必须包含随机数生成器作为参数.因为它不允许我用参数调用它,所以我必须写一个类来为我做这个.

我写的课是这样的:

class RandGen
{
public:
RandGen()
: generator()
, norm_dist(0.0,1.0)
, random_seed(static_cast<unsigned>(std::time(NULL)))
{}

double give_rnd() { return (double) norm_dist(generator); }

private:
base_gen_t generator;
boost::random::normal_distribution<double> norm_dist; //Standard normal    distribution
unsigned random_seed;
};
Run Code Online (Sandbox Code Playgroud)

在尝试编译整个事情时,我收到以下错误:

 error: cannot convert ‘RandGen::give_rnd’ from type ‘double (RandGen::)()’ to type ‘double (RandGen::*)()’
Run Code Online (Sandbox Code Playgroud)

我不知道编译器要我在这里做什么,或者为什么它在这方面有这么多麻烦.任何建议都非常感谢.

c++ random boost std ublas

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

什么是OpenCL最快的memset()替代品?

我正在使用OpenCL,我需要memset()一些全局设备内存中的数组.CUDA具有类似memset()API的功能,但OpenCL没有.我读了这篇文章,在那里我发现了两种可能的选择

  1. 使用memset()与一些临时缓冲区在主机上,然后clEnqueueWriteBuffer()该复制到设备上的缓冲区.
  2. 排队(sp?)以下内核:

    __kernel void memset_uint4(__ global uint4*mem,__ private uint4 val){mem [get_global_id(0)] = val; }

哪个更好?或者更确切地说,在哪种情况下/哪个平台比另一个更好?

注意:如果零记忆的特殊情况值得特别对待,那也很高兴知道.

performance memset opencl

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

SELECT'ING INTO新表时如何添加NULL列?

我有这样的声明:

SELECT field1, field2, MyField = NULL
INTO NewTable
FROM OldTable
Run Code Online (Sandbox Code Playgroud)

这样做我想要的只有一个例外:我创建MyField和填充的字段NULL是一个INT类型,我希望它是一个VARCHAR类型.我不知道如何修改相同的语句来创建具有该VARCHAR类型的新字段.

谢谢.

sql null select field select-into

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

CUDA原子操作和并发内核启动

目前,我开发了一个基于GPU的程序,该程序使用多个内核,这些内核通过使用多个流同时启动.

在我的应用程序中,多个内核需要访问队列/堆栈,我计划使用原子操作.

但我不知道原子操作是否在多个内核同时启动之间起作用.请帮助我了解GPU上的原子操作的确切机制或有此问题经验的人.

concurrency cuda gpu-atomics

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