Monte Carlo实验
方法一:使用multiprocessing包
使用python进行monte carlo实验,如下图所示,有16个进程可以设置

使用模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| from multiprocessing import Pool import argparse def run_trial(trial_idx): """ 此处填写实验内容,需要在之前global变量 """ return 1 if success else 0
if __name__ =="__main__": total_epochs = parser = argparse.ArgumentParser(description='Process some arguments.') parser.add_argument('--snr', type=float, default=-5, help='set the signal-noise ratio') parser.add_argument('-o','--output', type=str, default='results.txt', help='保存结果的文件名') args = parser.parse_args() with Pool(processes=4) as pool: results = list(tqdm(pool.imap(run_trial, range(total_epochs)), total=total_epochs, desc="Running CFAR experiments")) success_count = sum(results) with open(args.output, 'a') as f: f.write(f"虚警概率为: {P_f}\n") f.write(f"SNR: {args.snr}\n") f.write(f"蒙特卡洛实验次数: {total_epochs}\n") f.write(f"检测成功次数: {success_count}\n") f.write(f"检测成功率: {success_count / total_epochs * 100:.2f}%\n") f.write("---------------------------------------------------------\n")
print(f"结果已保存到 {args.output}")
|
方法二:使用cupy(推荐)
这个不是默认的,需要额外安装,安装好后按如下步骤调试,即可看运算能力。

本人使用的是Nvidia-GeForce4060,运算能力是8.9,正好对应

此包和numpy是镜像的,所以许多函数是通用的,直接使用即可。cupy在默认情况下,所有的数组操作都是在 GPU 上进行的。CuPy 的设计理念是直接在 GPU 上创建和操作数组,因此不需要显式地将数据从 CPU 转移到 GPU。CuPy 的数组(cupy.ndarray)本身就是存储在 GPU 上的,而 NumPy 的数组(numpy.ndarray)是存储在 CPU 上的。输出:(表示在 GPU 上)
