小编dre*_*ash的帖子

被机器学习淹没 - 有 ML101 的书吗?

似乎有很多与机器学习相关的子领域。是否有一本书或博客概述了这些不同的领域以及每个领域的工作,也许如何开始,以及需要哪些背景知识?

machine-learning data-mining

207
推荐指数
8
解决办法
3万
查看次数

为什么OpenMP不允许使用!=运算符?

我试图编译以下代码:

#pragma omp parallel shared (j)
{
   #pragma omp for schedule(dynamic)
   for(i = 0; i != j; i++)
   {
    // do something
   }
}
Run Code Online (Sandbox Code Playgroud)

我收到此错误:错误:控制谓词无效.

我检查了openMP 参考指南,它说对于它的并行"仅"允许以下运算符之一:<=>> =.

我不明白为什么不允许i != j.我可以理解它是否是静态调度,因为openMP需要预先计算分配给每个线程的迭代次数.但我无法理解为什么在这种情况下这种限制为例.有线索吗?


编辑:即使我做for(i = 0; i != 100; i++),虽然我可以把"<"或"<=".

c c++ parallel-processing multithreading openmp

69
推荐指数
3
解决办法
5515
查看次数

可以/我应该在GPU上运行此代码吗?

我正在研究一个统计应用程序,它在一个数组中包含大约10-30万个浮点值.

有几种方法在嵌套循环中对数组执行不同但独立的计算,例如:

Dictionary<float, int> noOfNumbers = new Dictionary<float, int>();

for (float x = 0f; x < 100f; x += 0.0001f) {
    int noOfOccurrences = 0;

    foreach (float y in largeFloatingPointArray) {
        if (x == y) {
            noOfOccurrences++;
        }
    }

    noOfNumbers.Add(x, noOfOccurrences);
}
Run Code Online (Sandbox Code Playgroud)

当前的应用程序是用C#编写的,在Intel CPU上运行,需要几个小时才能完成.我不了解GPU编程概念和API,所以我的问题是:

  • 是否有可能(并且有意义)利用GPU来加速这样的计算?
  • 如果是:有没有人知道任何教程或获得任何示例代码(编程语言无关紧要)?

任何帮助将受到高度赞赏.

c c++ parallel-processing cuda gpu

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

是否可以将LLVM字节码转换为Java字节码?

我听说谷歌应用程序引擎可以运行任何可以通过它转换为Java字节码的编程语言JVM.我想知道是否可以将LLVM字节码转换为Java字节码,因为运行LLVM支持Google App Engine的语言会很有趣JVM.

java compiler-construction llvm

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

IntStream 导致数组元素被错误地设置为 0(JVM 错误,Java 11)

P下面的类中,该方法test似乎返回相同false

import java.util.function.IntPredicate;
import java.util.stream.IntStream;

public class P implements IntPredicate {
    private final static int SIZE = 33;

    @Override
    public boolean test(int seed) {
        int[] state = new int[SIZE];
        state[0] = seed;
        for (int i = 1; i < SIZE; i++) {
            state[i] = state[i - 1];
        }
        return seed != state[SIZE - 1];
    }

    public static void main(String[] args) {
        long count = IntStream.range(0, 0x0010_0000).filter(new P()).count();
        System.out.println(count);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,将 classP与结合使用 …

java arrays simd java-stream java-11

22
推荐指数
1
解决办法
572
查看次数

在Ubuntu 11.10上的数学链接器问题

我将Ubuntu升级(10.11, 11.04 i dont know)到11.10 后出现了一些奇怪的错误.

我正在undefined reference to 'sqrt'使用math.h 并使用-lm进行链接

我正在编译gcc -Wall -Werror -g -Iinclude/ -lm lib/matrix.c src/analyse.c -o bin/analyse.o两个源文件使用并包括math.h.

这段代码编译没有问题,自升级以来我没有太大变化,但现在它不起作用.

你有什么建议我可以做,找到错误?

对不起,如果以前问过这个问题; 关于数学链接器错误的帖子太多了,我找不到匹配的错误

c ubuntu linker gcc math.h

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

对于数组中的每个元素,我们如何计算右侧大于该元素的元素数?

给定一个A具有 n 个值的数组,设XA 是一个数组,该数组在索引 i 中保存比A[i]原始数组中其右侧更大且位于其右侧的元素数A

例如,如果 A 是:[10,12,8,17,3,24,19],则 X(A) 是:[4,3,3,2,2,0,0]

如何在O(n log(n))时间和O(n)空间复杂度中解决这个问题?

我可以通过使用循环在O(n^2)Time and O(1)Space 中轻松解决这个问题,并且对于每个元素,计算右侧有多少元素比它大,但我没有成功满足这些要求。

我正在考虑使用快速排序O(n log(n)),最坏的情况是可以完成,但我不知道排序数组在这里有什么帮助。

注意:关于快速排序算法需要一些调整以确保 O(n log(n)) 在最坏情况下而不是平均情况下。

c c++ arrays algorithm big-o

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

避免死锁示例

我想知道在以下示例中有哪些替代方法可以避免死锁.以下示例是传输死锁问题的典型银行帐户.在实践中有哪些更好的解决方法?

class Account {
     double balance;
     int id;
     public Account(int id, double balance){
          this.balance = balance;
          this.id = id;
     }
     void withdraw(double amount){
          balance -= amount;
     } 
     void deposit(double amount){
          balance += amount;
     }
}
class Main{
     public static void main(String [] args){
           final Account a = new Account(1,1000);
           final Account b = new Account(2,300);
           Thread a = new Thread(){
                 public void run(){
                     transfer(a,b,200);
                 }
           };
           Thread b = new Thread(){
                 public void run(){
                     transfer(b,a,300);
                 }
           };
           a.start();
           b.start();
     } …
Run Code Online (Sandbox Code Playgroud)

java parallel-processing multithreading deadlock

18
推荐指数
4
解决办法
9726
查看次数

如何为2D阵列动态分配连续的内存块

如果我像这样分配一个2D数组[N] [N] ; 它将分配一个连续的内存块.

但是,如果我尝试动态这样做:

int **a = malloc(rows * sizeof(int*));
for(int i = 0; i < rows; i++) 
   a[i] = malloc(cols * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

这样可以在行中的元素之间保持单位跨度,但行之间可能不是这种情况.

一种解决方案是从2D转换为1D,除此之外,还有另一种方法吗?

c arrays multidimensional-array

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

函数'time'的隐式声明[-Wimplicit-function-declaration] |

每当我尝试使用srand功能时,我都会收到此警告

"implicit declaration of function 'time' [-Wimplicit-function-declaration]|" 
Run Code Online (Sandbox Code Playgroud)

运行编译文件时出现一个Windows错误报告, 我是c编程的新手,我在教科书上发现了这个,但它对我不起作用.

  srand (time());  
  int x= (rand()%10) +1;  
  int y= (rand()%10) +1;  
  printf("\nx=%d,y=%d", x,y); 
Run Code Online (Sandbox Code Playgroud)

我需要做些什么才能纠正这个问题?

c srand

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