Write the collected export data to disk.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | file |
Output file name |
||
| integer, | intent(in) | :: | ifmt |
Export format selector |
||
| type(onnx_node_type), | intent(in) | :: | nodes(:) |
Exported ONNX nodes |
||
| integer, | intent(in) | :: | num_nodes |
Number of exported nodes |
||
| type(onnx_initialiser_type), | intent(in) | :: | inits(:) |
Exported ONNX initialisers |
||
| integer, | intent(in) | :: | num_inits |
Number of exported initialisers |
||
| type(onnx_tensor_type), | intent(in) | :: | graph_inputs(:) |
Graph input tensor specifications |
||
| integer, | intent(in) | :: | num_inputs |
Number of graph inputs |
||
| type(onnx_tensor_type), | intent(in) | :: | graph_outputs(:) |
Graph output tensor specifications |
||
| integer, | intent(in) | :: | num_outputs |
Number of graph outputs |
||
| character(len=4096), | intent(in) | :: | gnn_metadata(:) |
GNN metadata strings |
||
| integer, | intent(in) | :: | num_gnn_meta |
Number of metadata entries |
subroutine write_onnx_json_file( & file, ifmt, nodes, num_nodes, inits, num_inits, & graph_inputs, num_inputs, graph_outputs, num_outputs, & gnn_metadata, num_gnn_meta) !! Write the collected export data to disk. use athena__onnx_utils, only: write_json_nodes, write_json_initialisers, & write_json_tensors implicit none ! Arguments character(*), intent(in) :: file !! Output file name integer, intent(in) :: ifmt !! Export format selector type(onnx_node_type), intent(in) :: nodes(:) !! Exported ONNX nodes integer, intent(in) :: num_nodes !! Number of exported nodes type(onnx_initialiser_type), intent(in) :: inits(:) !! Exported ONNX initialisers integer, intent(in) :: num_inits !! Number of exported initialisers type(onnx_tensor_type), intent(in) :: graph_inputs(:) !! Graph input tensor specifications integer, intent(in) :: num_inputs !! Number of graph inputs type(onnx_tensor_type), intent(in) :: graph_outputs(:) !! Graph output tensor specifications integer, intent(in) :: num_outputs !! Number of graph outputs character(4096), intent(in) :: gnn_metadata(:) !! GNN metadata strings integer, intent(in) :: num_gnn_meta !! Number of metadata entries ! Local variables integer :: unit, i !! Output unit and loop index open(newunit=unit, file=file, status='replace') write(unit, '(A)') '{' if(ifmt .eq. 2)then write(unit, '(A)') ' "irVersion": "7",' write(unit, '(A)') ' "producerName": "pytorch",' write(unit, '(A)') ' "producerVersion": "2.7.1",' else write(unit, '(A)') ' "irVersion": "8",' write(unit, '(A)') ' "producerName": "Athena",' write(unit, '(A,A,A)') ' "producerVersion": "', & trim(athena__version__), '",' end if write(unit, '(A)') ' "graph": {' call write_json_nodes(unit, nodes, num_nodes) write(unit, '(A)') ',' if(ifmt .eq. 2)then write(unit, '(A)') ' "name": "main_graph",' else write(unit, '(A)') ' "name": "athena_network",' end if call write_json_initialisers(unit, inits, num_inits) write(unit, '(A)') ',' call write_json_tensors(unit, 'input', graph_inputs, num_inputs) write(unit, '(A)') ',' call write_json_tensors(unit, 'output', graph_outputs, num_outputs) if(ifmt .ne. 2 .and. num_gnn_meta .gt. 0)then write(unit, '(A)') ',' write(unit, '(A)') ' "metadataProps": [' do i = 1, num_gnn_meta if(i .gt. 1) write(unit, '(A)') ',' write(unit, '(A)') trim(gnn_metadata(i)) end do write(unit, '(A)') '' write(unit, '(A)') ' ]' end if write(unit, '(A)') ' },' write(unit, '(A)') ' "opsetImport": [' write(unit, '(A)') ' {' write(unit, '(A)') ' "version": "17"' write(unit, '(A)') ' }' write(unit, '(A)') ' ]' write(unit, '(A)') '}' close(unit) end subroutine write_onnx_json_file