Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning 对于并行执行和内存共享,是否有pthreads for linux的替代方案? 我编写了一个使用p螺纹库的C++ Linux应用程序。但它对我不起作用,因为它没有启动100个线程,而是只启动了98个线程: 除了“fork”之外,还有其他方法可以并行化我的代码吗?线程的一个优点是,我共享了所有的全局变量,并且可以将互斥体放在需要编写共享变量的地方_Machine Learning_G++_Pthreads_Fork_Loss Function - Fatal编程技术网

Machine learning 对于并行执行和内存共享,是否有pthreads for linux的替代方案? 我编写了一个使用p螺纹库的C++ Linux应用程序。但它对我不起作用,因为它没有启动100个线程,而是只启动了98个线程: 除了“fork”之外,还有其他方法可以并行化我的代码吗?线程的一个优点是,我共享了所有的全局变量,并且可以将互斥体放在需要编写共享变量的地方

Machine learning 对于并行执行和内存共享,是否有pthreads for linux的替代方案? 我编写了一个使用p螺纹库的C++ Linux应用程序。但它对我不起作用,因为它没有启动100个线程,而是只启动了98个线程: 除了“fork”之外,还有其他方法可以并行化我的代码吗?线程的一个优点是,我共享了所有的全局变量,并且可以将互斥体放在需要编写共享变量的地方,machine-learning,g++,pthreads,fork,loss-function,Machine Learning,G++,Pthreads,Fork,Loss Function,除了“fork”之外,还有其他方法可以并行化我的代码吗 > STD::线程,这里的C++用户往往倾向于告诉人们使用PthPro代替。但是,这很可能是在较低级别的线程库上实现的,最有可能是在首先提供pthreads的系统上的pthreads 也有OpenMP,但这也是围绕较低级别线程机制的包装 除了通过多线程进行并行化之外,唯一可用的替代方法是通过多个进程进行并行化,这就是我所指的fork 线程的一个优点是,我共享了所有的全局变量,并且可以将互斥体放在需要编写共享变量的地方 可以在多个进程之间

除了“fork”之外,还有其他方法可以并行化我的代码吗

<> > <代码> STD::线程,这里的C++用户往往倾向于告诉人们使用PthPro代替。但是,这很可能是在较低级别的线程库上实现的,最有可能是在首先提供pthreads的系统上的pthreads

也有OpenMP,但这也是围绕较低级别线程机制的包装

除了通过多线程进行并行化之外,唯一可用的替代方法是通过多个进程进行并行化,这就是我所指的
fork

线程的一个优点是,我共享了所有的全局变量,并且可以将互斥体放在需要编写共享变量的地方

可以在多个进程之间共享内存,也可以在进程之间共享互斥体。这比仅仅使用一个常规的共享变量要复杂一些,但也不是那么简单。这种机制被称为“共享内存”,在POSIX世界中有两种风格:较旧的,所谓的SystemV共享内存段,以及较新的POSIX共享内存


但是,我建议,更好的解决方案可能只是减少线程的数量。在大多数机器上,100个线程对于并行计算来说太多了,因为真正的并发性受到机器的执行单元(核心)数量的限制。如果您希望线程在相当长的一段时间内定期阻塞I/O(在不同的文件上),那么多线程可能会有一定的意义,但即使这样,100个线程也可能超出了合理的阈值。如果争用执行时间的线程比调度它们的执行单元多,那么性能可能会比线程少时差。

我有个问题。即使有10个线程,当我要求启动10个线程时n@FilippoPortera,在这种情况下,我倾向于怀疑您启动线程的方式有问题,或者您计算线程的方式有问题。也可能是线程函数中的某些东西让一些线程在启动后立即终止。这将是一个不同问题的主题,如果你想得到有用的答案,你需要提供一个与这样一个问题相关的答案。