AI-TensorFlow-Libtensorflow

 view release on metacpan or  search on metacpan

t/lib/TF_Utils.pm  view on Meta::CPAN


	if( $device ) {
		$ctx->note("Setting op Min on device $device");
	}
	my $min = TF_Utils::MinWithDevice( $feed, $one, $graph, $device, $s );
	TF_Utils::AssertStatusOK($s);

	$ctx->note('Run the graph.');
	$csession->SetInputs( [ $feed, TF_Utils::Int32Tensor([3, 2, 5]) ]);
	$csession->SetOutputs($min);
	$csession->Run($s);
	TF_Utils::AssertStatusOK($s);
	is($csession->output_tensor(0), object {
		call Type => INT32;
		call NumDims => 0; # scalar
		call ByteSize => INT32->Size;
		call sub {
			[ unpack "l*", ${ shift->Data } ];
		} => [ 2 ];
	}, 'Min( Feed() = [3, 2, 5] )');

	$ctx->release;
}

sub GPUDeviceName {
	my ($session) = @_;

	my $s = AI::TensorFlow::Libtensorflow::Status->New;
	my $graph;
	if( ! $session ) {
		my $opts = AI::TensorFlow::Libtensorflow::SessionOptions->New;
		$graph = AI::TensorFlow::Libtensorflow::Graph->New;
		$session ||= AI::TensorFlow::Libtensorflow::Session->New($graph, $opts, $s);
	}

	my $device_list = $session->ListDevices($s);
	my $device_idx = first { my $type = $device_list->Type( $_, $s ) eq 'GPU' } 0..$device_list->Count - 1;

	return "" unless $device_idx;

	return $device_list->Name( $device_idx, $s );
}

sub DumpDevices {
	my ($session) = @_;

	my $s = AI::TensorFlow::Libtensorflow::Status->New;
	my $graph;
	if( ! $session ) {
		my $opts = AI::TensorFlow::Libtensorflow::SessionOptions->New;
		$graph = AI::TensorFlow::Libtensorflow::Graph->New;
		$session ||= AI::TensorFlow::Libtensorflow::Session->New($graph, $opts, $s);
	}

	my $device_list = $session->ListDevices($s);
	my @devices = map {
		my $idx = $_;
		my %h = map { ( $_ => $device_list->$_( $idx, $s ) ) } qw(Name Type MemoryBytes Incarnation);
		\%h;
	} 0..$device_list->Count - 1;
	use Data::Dumper; print Dumper(\@devices);
}

1;

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 1.351 second using v1.00-cache-2.02-grep-82fe00e-cpan-9f2165ba459b )