sách gpt4 ai đã đi

multithreading - 是否可以在没有Mex的情况下在Matlab中并行加载数据文件以进行计算

In lại 作者:行者123 更新时间:2023-12-03 13:20:20 25 4
mua khóa gpt4 Nike

我有一个Matlab程序,该程序从磁盘上的物理文件中读取大量数据并执行如下密集计算:

data = load('myfile.dat');
results = intensiveCompute(data);

计算是在GPU上完成的,需要很长时间。我想做的是能够在计算运行时从下一个文件中加载数据(因为加载文件也是一个瓶颈)。从我到目前为止收集的数据来看,这可以使用Mex(例如_beginthread等...)来实现。但是,如果可能的话,最好保留在Matlab环境中。也许有某种方法可以在Matlab中产生一个线程来读取数据,而另一种方法可以执行计算。任何帮助是极大的赞赏。

1 Câu trả lời

hiện hữuthis answer中,我详细介绍了一种使用taskjob函数进行异步执行的方法,但是我认为对于一个简单的load来说, parfeval 可能是最简单的。例如,

f = parfeval(@load,1,'myfile.dat'); % asynchronous, move on to intensiveCompute
results = intensiveCompute(data);
data = fetchOutputs(f); % Blocks until complete

注意:确保在Windows防火墙中允许MATLAB.exe,smpd.exe和mpiexec.exe的传入连接。应该在池启动的第一时间提示您(由 parfeval自动启动)。

这是一个简单的示例,说明其工作方式:
>> x = magic(5);
>> save x.mat x
>> f = parfeval(@load,1,'x.mat');
Starting parallel pool (parpool) using the 'local' profile ... connected ...
>> f
f =
FevalFuture with properties:

ID: 1
Function: @load
State: running
ErrorIdentifier:
ErrorMessage:

至此,我们看到该命令仍在工作线程上运行。显然,我们可以做的事情比简单地检查工作更有用……但这是短暂的等待之后发生的事情:
>> f
f =
FevalFuture with properties:

ID: 1
Function: @load
State: finished (unread)
ErrorIdentifier:
ErrorMessage:
>> % all done, load the data
>> data = fetchOutputs(f) % Blocks until complete
data =
x: [5x5 double]

关于multithreading - 是否可以在没有Mex的情况下在Matlab中并行加载数据文件以进行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19572440/

25 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com