小编Bug*_*ler的帖子

GPU代码运行速度比CPU版本慢

我正在开发一个应用程序,它将一个字符串分成几个部分并将每个字符串分配给一个块.在每个块内,逐个字符地扫描文本,并且基于读取的字符,由不同的线程并行地更新int,D的共享数组.在每次迭代结束时,检查D的最后一个元素,如果满足条件,则在对应于文本的位置将全局int数组m设置为1.此代码在NVIDIA GEForce Fermi 550上执行,运行速度甚至比CPU版本慢.我刚刚在这里包含了内核:

__global__ void match(uint32_t* BB_d,const char* text_d,int n, int m,int k,int J,int lc,int start_addr,int tBlockSize,int overlap ,int* matched){
    __shared__ int D[MAX_THREADS+2];
    __shared__ char Text_S[MAX_PATTERN_SIZE];
    __shared__ int DNew[MAX_THREADS+2];
    __shared__ int BB_S[4][MAX_THREADS];
    int w=threadIdx.x+1;

    for(int i=0;i<4;i++)
    {
        BB_S[i][threadIdx.x]= BB_d[i*J+threadIdx.x];
    }

    {
        D[threadIdx.x] = 0;
        {
            D[w] = (1<<(k+1)) -1;

            for(int i = 0; i < lc - 1; i++)
            {
                D[w] = (D[w] << k+2) + (1<<(k+1)) -1;
            }
        }
        D[J+1] = (1<<((k+2)*lc)) - 1;
    }
    int startblock=(blockIdx.x == …
Run Code Online (Sandbox Code Playgroud)

c cuda gpgpu

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

使用HMM进行离线字符识别

我已提取的特征从分离的字符(如梯度许多图像,相邻像素的重量和几何性质.如何使用的HMM作为训练该数据分类?所有文献我读到HMM是指状态和状态转换但是我"t将其连接到的功能和一流的标签.这个例子上JAHMM的主页没有涉及到我的问题.我需要使用HMM不是因为它会比其他方法对这个问题好,但因为项目课题的约束.

这个问题有一个在线识别的答案,但我想要离线和更详细的相同

编辑:我将每个字符分区为具有固定数量的正方形的网格.现在我计划在每个网格块上执行特征提取,从而通过从左到右和从上到下移动来获得每个样本的一系列特征.

  1. 这是否代表HMM的足够"序列",即HMM是否能够猜测数据的时间变化,即使角色不是从左到右,从上到下绘制的?如果不建议替代方式.

  2. 我应该提供很多功能还是从一些功能开始?我怎么知道HMM是否表现不佳或者功能是否不好?我正在使用JAHMM.

  3. 提取笔划特征很困难,并且逻辑上不能与网格特征相结合?(因为HMM需要一些随机过程生成的序列)

ocr classification hidden-markov-models

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

间歇性错误org.hibernate.PersistentObjectException:传递给persist的分离实体

我收到异常org.hibernate.PersistentObjectException:传递给persist的分离实体.从本论坛和其他地方的众多帖子中,我了解到这种情况发生在两种情况下(不考虑One-One注释等),

  1. 超出范围的交易存在问题
  2. 将id设置为应自动生成的位置.

我看到这些都没有发生在我的代码中.我无法重现错误,因为我没有最初触发它的数据.在其他数据上,它运行得很好.我在下面提供了一个SCCE:

public class MyProcessor {
    private MyImportEJB myEJB = MyImportEJB.getInstance();
    private List<MyClass> saveQueue = new ArrayList<MyClass>();
    public void process() {
        List<X> rawData = getListOfX();
        for(X x:rawData) {
             processX();
         }
         saveFoos(saveQueue);   
     }

     public void saveOrUpdateFoos(List<Foo> foos) {

        for(MyClass foo:foos) {
              MyClass existingFoo = myEJB.getFoosForWidAndDates(foo.getWid(), foo.getEffBeginDt(),foo.getEffEndDt());
              if(existingFoo == null) saveQueue.add(foo);
              else {
                   existingFoo.updateIfDifferent(foo);
                   saveQueue.add(existingFoo);
              }
         }

         if(saveQueue.size() > 5000) {
             myEJB.saveObjects(saveQueue);
             saveQueue.clear();
         }
     }

     public void processX() {
          ArrayList<MyClass> foos = new ArrayList<MyClass>();

          if(x.reportPeriod != null && x.gravity != …
Run Code Online (Sandbox Code Playgroud)

java hibernate ejb jpa javabeans

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

测量datanode的吞吐量

我想通过测量每次读/写操作所花费的时间来测量每个datanode的吞吐量.阅读百万个函数并找出其发生的位置非常令人困惑.有人可以列出在读/写数据块时进行的一系列调用吗?我正在使用1.0.1版.或者,如果已经有一个API在datanode上测量它,我可以使用该信息.

hadoop hdfs

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

Java和Javascript之间的计算结果的差异

我正在尝试用Java实现JS函数.我几乎逐字地复制了代码,因为它们都使用浮点/双精度类型的64位浮点数和数学运算符的相同运算符优先级(http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.htmlhttps://msdn.microsoft.com/en-us/library/ie/z3ks45k7(v=vs.94).aspx).但是,我看到两者在调试时的结果有所不同.具体来说,JavaScript中的这一行:

 var mu = M / (this.a * (1 - esq * (1 / 4 + esq * (3 / 64 + 5 * esq / 256)))); 
Run Code Online (Sandbox Code Playgroud)

和它的Java等价物:

Double mu = M / (a * (1 - esq * (1 / 4 + esq * (3 / 64 + 5 * esq / 256))));
Run Code Online (Sandbox Code Playgroud)

具有以下值:

M=4373246.298519407, esq=0.006694379989312105, a=6378137.0
Run Code Online (Sandbox Code Playgroud)

结果分别为0.6856620239020387和0.6868129133457879.有人可以解释这个并提供正确的Java代码吗?这种不准确性正在转化为函数最终输出的巨大差异

javascript java math floating-point operator-precedence

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