Skip to content
This repository has been archived by the owner on Nov 17, 2023. It is now read-only.

Commit

Permalink
[Perl] Updates mapping between PDL and MX types (#20852)
Browse files Browse the repository at this point in the history
* [Perl] Updates mapping between PDL and MX types

This removes the hardcoded values and uses PDL::Type instead.

Upgrades minimum PDL dependency to PDL v2.064 which provides
the int8 (PDL: sbyte) type.

Fix tests by allowing some PDL data alongside Perl scalars.

Fixes <#20851>.

* [Perl] Release AI-MXNet v1.6
  • Loading branch information
zmughal authored Feb 1, 2022
1 parent 5ef830f commit 58c9368
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 35 deletions.
2 changes: 1 addition & 1 deletion ci/docker/install/ubuntu_perl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ set -ex
# install libraries for mxnet's perl package on ubuntu
apt-get update || true
apt-get install -y libmouse-perl pdl cpanminus swig libgraphviz-perl
cpanm -q Function::Parameters Hash::Ordered CHM/PDL-2.019.tar.gz PDL::CCS
cpanm -q Function::Parameters Hash::Ordered PDL~2.064 PDL::CCS
2 changes: 1 addition & 1 deletion docker/install/perl.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@

# install libraries for mxnet's perl package on ubuntu
apt-get update && apt-get install -y libmouse-perl pdl cpanminus swig libgraphviz-perl
cpanm -q Function::Parameters Hash::Ordered PDL::CCS
cpanm -q Function::Parameters Hash::Ordered PDL~2.064 PDL::CCS
5 changes: 5 additions & 0 deletions perl-package/AI-MXNet/Changes
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
Revision history for Perl extension AI::MXNet
1.6 Fri Jan 28 15:50:00 EST 2022
- Update mapping between PDL and MX types - Zakariyya Mughal
- Upgrade minimum PDL dependency to PDL v2.064 for
int8 (PDL: sbyte) type - Zakariyya Mughal

1.5 Sun Feb 16 19:56:17 PST 2020
- Runtime features
- INT64 Tensor support
Expand Down
4 changes: 2 additions & 2 deletions perl-package/AI-MXNet/META.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
"Hash::Ordered" : "0.012",
"GraphViz" : "2.14",
"Mouse" : "v2.1.0",
"PDL" : "2.007",
"PDL" : "2.064",
"PDL::CCS" : "1.23.4",
"Archive::Tar": "0",
"Digest::SHA": "0",
Expand All @@ -51,5 +51,5 @@
}
},
"release_status" : "stable",
"version" : "1.5"
"version" : "1.6"
}
4 changes: 2 additions & 2 deletions perl-package/AI-MXNet/META.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ requires:
Hash::Ordered: '0.012'
GraphViz: '2.14'
Mouse: v2.1.0
PDL: '2.007'
PDL: '2.064'
PDL::CCS: '1.23.4'
Archive::Tar: '0'
Digest::SHA: '0'
HTTP::Tiny: '0'
IO::Zlib: '0'
JSON::PP: '0'
parent: '0'
version: '1.5'
version: '1.6'
6 changes: 3 additions & 3 deletions perl-package/AI-MXNet/Makefile.PL
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ my %WriteMakefileArgs = (
"Function::Parameters" => "1.0705",
"Hash::Ordered" => "0.012",
"Mouse" => "v2.1.0",
"PDL" => "2.007",
"PDL" => "2.064",
"PDL::CCS" => "1.23.4",
"GraphViz" => "2.14"
},
"TEST_REQUIRES" => {},
"VERSION" => "1.5",
"VERSION" => "1.6",
"test" => {
"TESTS" => "t/*.t"
}
Expand All @@ -59,7 +59,7 @@ my %FallbackPrereqs = (
"Function::Parameters" => "1.0705",
"Hash::Ordered" => "0.012",
"Mouse" => "v2.1.0",
"PDL" => "2.007",
"PDL" => "2.064",
"PDL::CCS" => "1.23.4",
"GraphViz" => "2.14"
);
Expand Down
2 changes: 1 addition & 1 deletion perl-package/AI-MXNet/README
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
This archive contains the distribution AI-MXNet,
version 1.5:
version 1.6:

Perl interface to MXNet machine learning library

Expand Down
2 changes: 1 addition & 1 deletion perl-package/AI-MXNet/lib/AI/MXNet.pm
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ use AI::MXNet::Gluon 'gluon';
use AI::MXNet::NDArray::Sparse;
use AI::MXNet::Symbol::Sparse;
use AI::MXNet::Engine 'engine';
our $VERSION = '1.5';
our $VERSION = '1.6';

sub cpu { AI::MXNet::Context->cpu($_[1]//0) }
sub cpu_pinned { AI::MXNet::Context->cpu_pinned($_[1]//0) }
Expand Down
39 changes: 20 additions & 19 deletions perl-package/AI-MXNet/lib/AI/MXNet/Base.pm
Original file line number Diff line number Diff line change
Expand Up @@ -60,27 +60,28 @@ use constant DTYPE_MX_TO_STR => {
6 => 'int64'
};
use constant DTYPE_MX_TO_PDL => {
0 => 6,
1 => 7,
2 => 6,
3 => 0,
4 => 3,
5 => 0,
6 => 5,
float32 => 6,
float64 => 7,
float16 => 6,
uint8 => 0,
int32 => 3,
int8 => 0,
int64 => 5
0 => PDL::Type->new('float')->enum,
1 => PDL::Type->new('double')->enum,
2 => PDL::Type->new('float')->enum,
3 => PDL::Type->new('byte')->enum,
4 => PDL::Type->new('long')->enum,
5 => PDL::Type->new('sbyte')->enum,
6 => PDL::Type->new('longlong')->enum,
float32 => PDL::Type->new('float')->enum,
float64 => PDL::Type->new('double')->enum,
float16 => PDL::Type->new('float')->enum,
uint8 => PDL::Type->new('byte')->enum,
int32 => PDL::Type->new('long')->enum,
int8 => PDL::Type->new('sbyte')->enum,
int64 => PDL::Type->new('longlong')->enum,
};
use constant DTYPE_PDL_TO_MX => {
6 => 0,
7 => 1,
0 => 3,
3 => 4,
5 => 6
PDL::Type->new('float')->enum => 0,
PDL::Type->new('double')->enum => 1,
PDL::Type->new('byte')->enum => 3,
PDL::Type->new('long')->enum => 4,
PDL::Type->new('sbyte')->enum => 5,
PDL::Type->new('longlong')->enum => 6,
};
use constant DTYPE_MX_TO_PERL => {
0 => 'f',
Expand Down
10 changes: 5 additions & 5 deletions perl-package/AI-MXNet/lib/AI/MXNet/Metric.pm
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ use overload '""' => sub {
has 'name' => (is => 'rw', isa => 'Str');
has 'num' => (is => 'rw', isa => 'Int');
has 'num_inst' => (is => 'rw', isa => 'Maybe[Int|ArrayRef[Int]]');
has 'sum_metric' => (is => 'rw', isa => 'Maybe[Num|ArrayRef[Num]]');
has 'sum_metric' => (is => 'rw', isa => 'Maybe[Num|ArrayRef[Num]|PDL]');
has '_kwargs' => (is => 'rw', init_arg => undef);
around BUILDARGS => \&AI::MXNet::Base::process_arguments;

Expand Down Expand Up @@ -168,8 +168,8 @@ method get()
method get_name_value()
{
my ($name, $value) = $self->get;
$name = [$name] unless ref $name;
$value = [$value] unless ref $value;
$name = [$name] unless ref $name eq 'ARRAY';
$value = [$value] unless ref $value eq 'ARRAY';
my %ret;
@ret{ @$name } = @$value;
return \%ret;
Expand Down Expand Up @@ -221,8 +221,8 @@ method get()
for my $metric (@{ $self->metrics })
{
my ($name, $result) = $metric->get;
$name = [$name] unless ref $name;
$result = [$result] unless ref $result;
$name = [$name] unless ref $name eq 'ARRAY';
$result = [$result] unless ref $result eq 'ARRAY';
push @$names, @$name;
push @$results, @$result;
}
Expand Down

0 comments on commit 58c9368

Please sign in to comment.