thu-nics / MNSIM-2.0

A Behavior-Level Modeling Tool for Memristor-based Neuromorphic Computing Systems
133 stars 37 forks source link

User guides for MNSIM-2.0 #7

Open hanm2019 opened 12 months ago

hanm2019 commented 12 months ago

The IEEE TCAD 2023 paper"MNSIM 2.0: A Behavior-Level Modeling Tool for Processing-In-Memory Architectures" seems a useful work for PIM architecture design and evaluation. However, After cloned the project, I found the manual was for MNSIM 1.0. I still don't know how to design an SRAM-based PIM and evaluate the area, power, and performance on this tool. Would you please update the manual?

24367452 commented 3 months ago

Hello, when I was using MNSIM and replacing the model I defined myself, I had already made the modifications according to the operation manual. However, it seems that the operation manual is no longer used for MNSIM 2.0 because I encountered an issue where I couldn't find the key. May I know which files I still need to change?

Traceback (most recent call last):
  File "E:\MNSIM-2.0-master\main.py", line 141, in <module>
    main()
  File "E:\MNSIM-2.0-master\main.py", line 73, in main
    __TestInterface = TrainTestInterface(network_module=args.NN, dataset_module='MNSIM.Interface.cifar10',  
  File "E:\MNSIM-2.0-master\MNSIM\Interface\interface.py", line 101, in __init__
    self.net.load_change_weights(torch.load(weights_file, map_location=self.device))
  File "E:\MNSIM-2.0-master\MNSIM\Interface\network.py", line 183, in load_change_weights
    self.load_state_dict(tmp_state_dict)
  File "C:\Users\Administrator\.conda\envs\torchh\lib\site-packages\torch\nn\modules\module.py", line 1406, in load_state_dict
    raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for NetworkGraph:
    Missing key(s) in state_dict: "layer_list.0.last_value", "layer_list.0.bit_scale_list", "layer_list.0.sublayer_list.0.weight", "layer_list.1.last_value", "layer_list.1.layer.weight", "layer_list.1.layer.bias", "layer_list.1.layer.running_mean", "layer_list.1.layer.running_var", "layer_list.2.last_value", "layer_list.3.last_value", "layer_list.3.bit_scale_list", "layer_list.3.sublayer_list.0.weight", "layer_list.3.sublayer_list.1.weight", "layer_list.3.sublayer_list.2.weight", "layer_list.3.sublayer_list.3.weight", "layer_list.3.sublayer_list.4.weight", "layer_list.4.last_value", "layer_list.4.layer.weight", "layer_list.4.layer.bias", "layer_list.4.layer.running_mean", "layer_list.4.layer.running_var", "layer_list.5.last_value", "layer_list.6.last_value", "layer_list.6.bit_scale_list", "layer_list.6.sublayer_list.0.weight", "layer_list.6.sublayer_list.1.weight", "layer_list.6.sublayer_list.2.weight", "layer_list.7.last_value", "layer_list.7.layer.weight", "layer_list.7.layer.bias", "layer_list.7.layer.running_mean", "layer_list.7.layer.running_var", "layer_list.8.last_value", "layer_list.9.last_value", "layer_list.10.last_value", "layer_list.11.last_value", "layer_list.11.bit_scale_list", "layer_list.11.sublayer_list.0.weight". 
    Unexpected key(s) in state_dict: "conv1.weight", "conv1.bias", "conv2.weight", "conv2.bias", "conv3.weight", "conv3.bias", "fc.weight", "fc.bias".