如何在Mathematica 8中进行并行积分
有人有想法如何使用所有内核来计算集成?我需要使用并行的或并行表,但是如何? f[r_] := Sum[(((-1)^n*(2*r - 2*n - 7)!!)/(2^n*n!*(r - 2*n - 1)!))* x^(r - 2*n - 1), {n, 0, r/2}]; Nw := Transpose[Table[f[j], {i, 1}, {j, 5, 200, 1}]]; X1 = Integrate[Nw . Transpose[Nw], {x, -1, 1}]; Y1 = Integrate[D[Nw, {x, 2}] . Transpose[D[Nw, {x, 2}]], {x, -1, 1}]; X1//MatrixForm Y1//MatrixForm 解决方案 如果首先通过扩展矩阵元素来帮助积分一点, 事情可以通过一点点努力来完成. 在带有Windows和Mathematica的四核笔记本电脑上8.0.4以下代码运行 对于
0 2023-12-11
编程技术问答社区
Mathematica中的子内核内存控制
我有一个类似的问题与: Mathematica用完存储器 我对这样的事情感兴趣: ParallelTable[F[i], {i, 0, 14.9, 0.001}] 其中F[i]是一个复杂的数值积分(我尚未找到一种简单的方法来复制问题,而无需页面填充积分的定义). 我的问题是子内数在内存中爆炸,如果不让机器交换,我必须停止评估. 但是,即使我停止评估,内核也不会免费提供他们的占领记忆. ClearSystemCache[] 我什至尝试过 ParallelEvaluate[ClearSystemCache[]] 但是 ParallelEvaluate[MemoryInUse[]] 留在 {823185944, 833146832, 812429208, 840150336, 850057024, 834441704, 847068768, 850424224} 似乎所有控制的内存仅适用于主内核? 到目前为止,唯一的方法是
0 2023-12-11
编程技术问答社区
在Mathematica中监控并行计算的进度
我正在构建一个大型ParallelTable,并希望对计算的进行一感.对于非平行表,以下代码做得很好: counter = 1; Timing[ Monitor[ Table[ counter++ , {n, 10^6}]; , ProgressIndicator[counter, {0, 10^6}] ] ] 结果{0.943512, Null}.但是,对于平行情况,有必要在内核之间共享counter: counter = 1; SetSharedVariable[counter]; Timing[ Monitor[ ParallelTable[ counter++ , {n, 10^4}]; , ProgressIndicator[counter, {0, 10^4}] ] ] 结果{6.33388, Null}.由于在每次更新时都需要在内核之间来回传递counter的价值,因此性能命中率是严重的.关于如何对计算的进展有何了
0 2023-12-11
编程技术问答社区
如何使用Delphi和WMI找到可用的并行端口和它们的I/O地址
我看到WMI非常强大,似乎能够返回PC硬件的大多数属性.我想在任何PC上显示可用的并行端口并找到其I/O地址 - 我知道通常是使用内核驱动程序完成的,但这是旧的需求 - 不要问!目前,我们查看设备管理器,然后必须输入其中显示的地址.我想使用WMI查找此信息. 1 ,有一组出色的WMI课程. 谢谢. 解决方案 必须尝试从WMI中提取复杂信息.我试图在我的PC上找到并行端口地址,这是报告: 首先,我询问了Win32_ParallealportPort类以找到所有并行端口. (在他的帖子中使用与Pruz相同的代码):"从Win32_Parallealtorport中选择 * *.结果是(我的系统中只有一个并行端口): instance of Win32_ParallelPort { Availability = 3; Caption = "LPT1"; ConfigManagerErrorCode = 0; ConfigManagerU
0 2023-12-10
编程技术问答社区
Parallel.Foreach开始用Invoke进行空转
我对Parallel.ForEach循环有问题.它的工作原理,只要我不Invoke增加了增加父gui程序的ProgressBar.Value的方法. 其中KeinPapierVersand是一个简单的List对象,而EinzelnachweisDruckDatum是DateTime. Parallel.ForEach(KeinPapierVersand, partner => { generate_PCL_nachweis(partner, EinzelnachweisDruckDatum, true, false); generate_BGF_Report(partner, EinzelnachweisDruckDatum, false); //If the following line is uncommented, the loop starts to idle after about 200 // processed I
0 2023-12-09
编程技术问答社区
如何等待后台工作者完成处理?
我有3位背景工人每个处理一个24位位图图像的通道(y,cb,cr).每个8位图像的处理需要几秒钟,并且可能无法同时完成. 完成后,我想将频道合并为一个图像.单击按钮时,每个backgroundWorkerN.RunWorkerAsync()启动了,当它们完成时,我为True设置了一个标志.我尝试使用一段时间循环while (!y && !cb && !cr) { }不断检查标志,直到它们为真,然后退出循环并继续处理下面的代码,这是将通道重新合并的代码.但是,当我运行它时,该过程永远不会结束. private void button1_Click(object sender, EventArgs e) { backgroundWorker1.RunWorkerAsync(); backgroundWorker2.RunWorkerAsync(); backgroundWorker3.RunWorkerAsync();
0 2023-12-09
编程技术问答社区
在.net中如何在另一台电脑上运行一个进程?
假设我有一个名为" MyService"的Windows服务,并且位于网络上的多台计算机上的可执行文件称为" Myexe". 是否有可能(从" MyService"中)在另一台/同一计算机上启动" myexe"的几个实例,是否执行某些任务并将true/false结果返回到" myService"中的回调方法?/p> 类似这样的东西 class MyService : ServiceBase { delegate void UpdateCallBack(int id, bool updated) void CheckForUpdates() { bool updatesExist = someService.GetCurrentVersion() != currentVersion; if(updatesExist) { UpdatePC("C:\Program Files\MyA
0 2023-12-08
编程技术问答社区
运行异步代码的Windows服务没有等待工作的完成
简短 我有一个Windows服务,可以并行执行几个作业作为异步任务.但是,当称呼脚踩时,似乎这些都是立即终止的,而不是被允许以更亲切的方式停止. 更详细地 每个作业都代表着工作的迭代,因此完成工作后需要再次运行. 为了实现这一目标,我正在编写概念验证Windows服务: 作为等待的异步TPL任务运行每个作业(这些都是I/O绑定任务) 每个作业都在循环中迭代运行 每个作业的循环在并行运行 运行服务时,我会看到一切都按照我的期望执行.但是,当我停止服务时,似乎一切都停止了. 好的 - 那么该如何工作? 在服务中,我有一个取消令牌和一个任务完成来源: private static CancellationTokenSource _cancelSource = new CancellationTokenSource(); private TaskCompletionSource _jobCompletion = new Tas
如何在Windows Phone上运行并行任务?
我正在构建一个WP8应用程序,我需要执行大约30个Web请求.这些请求不会彼此依赖,因此可以并行化. 我的代码看起来像这样(简化/伪代码): foreach (Uri uri in uris) { var rawData = await Task.Run(() => httpClient.GetStringAsync(uri).ConfigureAwait(false)); var processedData = dataProcessor.Process(rawData); processedDataCollection.Add(processedData); } 当我看提琴手时,请求都是执行序列的;执行和处理所有这些都需要几秒钟.但是,我不希望代码等到1个请求完成之前,然后再转到下一个请求,我想同时执行多个请求. 通常,我会使用Parallel.Invoke()或Parallel.ForEach()或类似的事情来执行此操作,但是显然并行
0 2023-12-08
编程技术问答社区
如何并行运行三个批处理文件,并在完成第一组后运行另三个批处理文件?
我有大约24个批次文件,我必须一次运行3个文件,然后完成第3个文件,然后我运行下一个3个文件,依此类推. 假设我有1.bat,2.bat,3.bat等文件,等等,我需要它们在完成前3个文件后运行前3个文件,我需要下一个3个文件才能运行,依此类推,直到所有24个文件. 解决方案 start 1.bat start 2.bat start /wait 3.bat start 4.bat start 5.bat start /wait 6.bat 等等.这假设带有/wait开关的批处理是最长的一个.如果不可能,您可以在此处使用此脚本: @echo off start bat1.bat start bat2.bat start bat3.bat call waitForFinish start bat4.bat start bat5.bat start bat6.bat call waitForFinish Goto:eof :waitForFinish set coun
0 2023-12-07
编程技术问答社区
用户界面在JavaFx中没有响应
我们有与网络设备集成的应用程序,以进行性能和调整相关的功能. ,当我连接到网络设备时,我们正在为UI使用Javafx,以进行登录并获得响应UI显示"不响应". 任何人都可以建议如何解决这个问题. 解决方案 UI无法响应,因为程序正在连接到网络设备,并且UI以相同的Thread运行.您需要启动一个新的Thread才能连接网络设备.当UI和与网络设备的连接在两个不同的线程中时,UI不会冻结. class YourThread extends Thread{ public void run(){ // Your code to connect to network device } public static void main(String args[]){ YourThread thread = new YourThread(); thread.start(); }
0 2023-12-07
编程技术问答社区
并行执行批处理文件,并从每个文件中获得退出代码。
如何并行执行单个批处理文件的批处理文件集,并从每个文件中获取退出代码.当我使用启动时,它会并行执行批处理文件(新的CMD窗口),但不要从每个窗口返回退出代码.在使用呼叫时,我可以获取退出代码,但是批处理文件执行依次进行.我有以下代码: ECHO ON setlocal EnableDelayedExpansion sqlcmd -S server_name -E -i select_code.sql >\path\output.txt for /f "skip=2 tokens=1-3 delims= " %%a in ('findstr /v /c:"-" \path\output.txt') do ( echo $$src=%%a>\path1\%%c.prm echo $$trg=%%b>>\path1\%%c.prm set param_name=%%c start cmd \k \path\exec_pmcmd_ctrm.bat workflow_name
0 2023-12-07
编程技术问答社区
XGBoost没有使用Windows下可用的最大内核数?
我正在通过R软件包使用XGBOOST,并且未指定nthread参数(默认情况下应默认为可用内核的最大数量,它在Ubuntu中使用). 在带有i7-4770 CPU的Windows PC上(具有4个核心= 8个线程),但是,只有最大值.即使我手动设置nthread = 8,也达到了最大CPU级别的50%(完全相同的代码在Ubuntu下使用最大CPU级别的100%,因此这不是我认为的实现问题).我还尝试了nthread = 4最大CPU使用的30%. 如何让XGBoost在Windows下使用所有可用线程? 解决方案 我发现,从Cran通过install.packages("xgboost")安装Windows XGBoost R软件包时,它没有MPI支持.如果没有MPI,您将无法获得并行处理的全部好处,并且您的CPU将不足.您可以在 xgboost.dll 文件上使用诸如depentency Walker之类的软件在您的方案中确认这一点 - 您会注意到它不会与任何MPI
0 2023-12-07
编程技术问答社区
如何制作一个带有并行运行命令行工具功能的python模块(不使用if __name__ == '__main__':所以它'可以导入)?
我想制作一个带有便利功能的Python模块,用于使用Windows上的Python 3.7并行运行命令. (对于AZ CLI命令) 我希望a能够制作一个函数: 易于使用:只需将命令列表作为字符串列表,然后并行执行. 让我看看命令生成的输出. python库中使用的构建 在Windows和Linux上工作得同样好(Python多处理用法fork(),Windows没有fork(),因此有时多处理代码会在Linux上使用,但不能在Windows上使用.) ) 为了更大的方便,可以将作为可进口模块. 这很困难,我认为也许在Python的较旧版本中可能无法做到这一点? (我看到了几个2-8岁的问答,如您所说,您必须使用if __name__==__main__:进行并行处理,但是我发现在制造一个可进口的模块时,这并不能以一致的可预测方式工作. def removeExtraLinesFromString(inputstring): stringtoretur
2 2023-12-06
编程技术问答社区
我怎样才能使这个单词计数功能并行化?
我有一些类似这样的串行代码,可以计算单词一致性,即计数相交的单词对.以下程序有效,除了用于说明目的的句子列表. import sys from collections import defaultdict GLOBAL_CONCORDANCE = defaultdict(lambda: defaultdict(lambda: defaultdict(lambda: []))) def BuildConcordance(sentences): global GLOBAL_CONCORDANCE for sentenceIndex, sentence in enumerate(sentences): words = [word for word in sentence.split()] for index, word in enumerate(words): for i, collocate in enume
2 2023-12-06
编程技术问答社区
R中的doMC和foreach循环不工作
我正在尝试获取foreach软件包,以便在r工作中并行处理,我有几个问题: 在Windows的cran上不存在进行操作所需的DOMC软件包.一些博客表明,Dosnow应该做同样的工作.但是,当我使用dosnow运行foreach命令时,%dopar%的工作速度似乎不超过%do%.实际上,这要慢得多.我的CPU是Intel I7 860 @ 2.80GHz,带有8 GB的RAM.以下是我的代码: ##Run example in 1 core require(foreach) require(doSNOW) x= iris[which(iris[,5] != "setosa"),c(1,5)] trials = 10000 system.time({ r= foreach(icount(trials), .combine=cbind) %do% { ind=sample(100,100,replace=TRUE) results1 = glm(x[ind,2]~x[ind,1
0 2023-12-06
编程技术问答社区
并行运行Python脚本,等待所有脚本完成后再执行更多的并行脚本
我需要并行执行我的python脚本,因此我使用以下批处理文件: start python C:\myfolder\1.py start python C:\myfolder\2.py start python C:\myfolder\3.py 它可以正常工作,但是现在我需要在上述前三个完成后再同时运行三个脚本.如何在同一批处理文件中指定它? 解决方案 您可以在Python中轻松地执行此操作,而无需使用Windows Batch命令. 您可以使用subprocess库同时运行外部脚本,然后等待它们全部完成. processes = [] scripts = [ r'C:\myfolder\1.py', r'C:\myfolder\2.py', r'C:\myfolder\3.py', ] for script in scripts: p = subprocess.Popen(['python', script]) pro
0 2023-12-06
编程技术问答社区
基本并行的python程序在Windows上冻结
这是from multiprocessing import Pool def f(x): return x*x if __name__ == '__main__': p = Pool(5) print(p.map(f, [1, 2, 3])) 我无法在PC上运行的原因.当我尝试执行第三个块时,程序冻结.我的操作系统是Windows10.我在Spyder IDE上运行该程序,并且安装了Anaconda.问题可能是什么? 解决方案 这是Windows用户遇到的问题,并且与Anaconda环境无关.我找到了解决方案.首先,您必须创建另一个.py文件才能保存f(x)函数.然后,您导入创建的功能,并且程序运行顺利.
0 2023-12-06
编程技术问答社区
在没有Visual Studio的情况下编译CUDA | "无法在路径中找到编译器cl.exe"
我刚刚开始在库达(Cuda)开始一个小项目. 我需要知道以下内容: 是否可以在不使用/购买Microsoft Visual Studio的情况下编译CUDA代码? 使用nvcc.exe我获得错误" 在路径中找不到编译器Cl.exe ". 我尝试安装cuda 插件用于NetBeans,但它不起作用. (与当前版本的Netbeans) 平台:Windows 7 预先感谢. 解决方案 按照上一条评论,我安装了Studio Express&VS2010. 这没有解决" Cl.exe不在路径中"问题. 我通过包括 c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64在路径中, 在安装Windows SDK之前. 这个问题还包含有价值的信息. 由于某种原因,即使执行vsvars32.bat. 谢谢大家的宝贵帮助. 其他解决方案 更新 如评论中所述,Windows
2 2023-12-06
编程技术问答社区
python joblib Parallel on Windows即使添加了 "if __name__ == '__main__': "也无法工作。
我正在Windows上的Python中运行并行处理.这是我的代码: from joblib import Parallel, delayed def f(x): return sqrt(x) if __name__ == '__main__': a = Parallel(n_jobs=2)(delayed(f)(i) for i in range(10)) 这是错误消息: Process PoolWorker-2: Process PoolWorker-1: Traceback (most recent call last): File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.4.3105.win-x86_64\lib\multiprocessing\process.py", line 258, in _boo
0 2023-12-06
编程技术问答社区