… | |
… | |
493 | =cut |
493 | =cut |
494 | |
494 | |
495 | package OpenCL; |
495 | package OpenCL; |
496 | |
496 | |
497 | use common::sense; |
497 | use common::sense; |
|
|
498 | use Carp (); |
498 | use Async::Interrupt (); |
499 | use Async::Interrupt (); |
499 | |
500 | |
500 | our $POLL_FUNC; # set by XS |
501 | our $POLL_FUNC; # set by XS |
501 | |
502 | |
502 | BEGIN { |
503 | BEGIN { |
503 | our $VERSION = '0.97'; |
504 | our $VERSION = '0.98'; |
504 | |
505 | |
505 | require XSLoader; |
506 | require XSLoader; |
506 | XSLoader::load (__PACKAGE__, $VERSION); |
507 | XSLoader::load (__PACKAGE__, $VERSION); |
507 | |
508 | |
508 | @OpenCL::Platform::ISA = |
509 | @OpenCL::Platform::ISA = |
… | |
… | |
1003 | =cut |
1004 | =cut |
1004 | |
1005 | |
1005 | sub OpenCL::Context::build_program { |
1006 | sub OpenCL::Context::build_program { |
1006 | my ($self, $prog, $options) = @_; |
1007 | my ($self, $prog, $options) = @_; |
1007 | |
1008 | |
1008 | require Carp; |
|
|
1009 | |
|
|
1010 | $prog = $self->program_with_source ($prog) |
1009 | $prog = $self->program_with_source ($prog) |
1011 | unless ref $prog; |
1010 | unless ref $prog; |
1012 | |
1011 | |
1013 | eval { $prog->build (undef, $options); 1 } |
1012 | eval { $prog->build (undef, $options); 1 } |
1014 | or errno == BUILD_PROGRAM_FAILURE |
1013 | or errno == BUILD_PROGRAM_FAILURE |
1015 | or Carp::croak "OpenCL::Context->build_program: " . err2str; |
1014 | or Carp::croak "OpenCL::Context->build_program: " . err2str; |
1016 | |
1015 | |
1017 | # we check status for all devices |
1016 | # we check status for all devices |
1018 | for my $dev ($self->devices) { |
1017 | for my $dev ($self->devices) { |
1019 | $prog->build_status ($dev) == BUILD_SUCCESS |
1018 | $prog->build_status ($dev) == BUILD_SUCCESS |
1020 | or Carp::croak ("Building OpenCL program for device '" . $dev->name . "' failed:\n" |
1019 | or Carp::croak "Building OpenCL program for device '" . $dev->name . "' failed:\n" |
1021 | . $prog->build_log ($dev)); |
1020 | . $prog->build_log ($dev); |
1022 | } |
1021 | } |
1023 | |
1022 | |
1024 | $prog |
1023 | $prog |
1025 | } |
1024 | } |
1026 | |
1025 | |