opencl-bindings 1.0.0pre2 → 1.0.0pre3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog +5 -0
- data/README.md +1 -1
- data/lib/opencl.rb +1 -1
- data/sample/report_env.rb +12 -12
- data/sample/util/clu.rb +231 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d8cf2f7b42d28415dce84ced6ebfab2d1799aa37
|
4
|
+
data.tar.gz: 37e5a5b0b377d61c94e7df9b5f9e9ce235298b16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0b55bca3fe471829448760b6630c7120aaa2290a0cdf22ab7119cf89922c3de328175e7b4640d16494e4ec13f7cb9dbca6eafa056b2b854963c947f7bd49bec
|
7
|
+
data.tar.gz: 996d769c1593283e05b3c7eabd2d14a9238596fe3e0b878ec67543e8e0f854183009caa86bbeecb0ff99442908d99d13d5f4ec5158ba3d973331191fcbf8e489
|
data/ChangeLog
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
2015-11-26 vaiorabbit <http://twitter.com/vaiorabbit>
|
2
|
+
|
3
|
+
* sample/Mandelbrot/mandelbrot_prof.rb, mandelbrot_prof.cl: Added.
|
4
|
+
* sample/util/clu.rb (CLUEvent.getEventProfilingInfo): Added.
|
5
|
+
|
1
6
|
2015-11-23 vaiorabbit <http://twitter.com/vaiorabbit>
|
2
7
|
|
3
8
|
* sample/report_env.rb: Added.
|
data/README.md
CHANGED
data/lib/opencl.rb
CHANGED
data/sample/report_env.rb
CHANGED
@@ -94,8 +94,8 @@ $enum2pack = {
|
|
94
94
|
OpenCL::CL_DEVICE_VENDOR_ID => "L",
|
95
95
|
OpenCL::CL_DEVICE_MAX_COMPUTE_UNITS => "L",
|
96
96
|
OpenCL::CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS => "L",
|
97
|
-
OpenCL::CL_DEVICE_MAX_WORK_GROUP_SIZE => "
|
98
|
-
OpenCL::CL_DEVICE_MAX_WORK_ITEM_SIZES => "
|
97
|
+
OpenCL::CL_DEVICE_MAX_WORK_GROUP_SIZE => "Q",
|
98
|
+
OpenCL::CL_DEVICE_MAX_WORK_ITEM_SIZES => "Q3",
|
99
99
|
OpenCL::CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR => "L",
|
100
100
|
OpenCL::CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT => "L",
|
101
101
|
OpenCL::CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT => "L",
|
@@ -107,13 +107,13 @@ $enum2pack = {
|
|
107
107
|
OpenCL::CL_DEVICE_MAX_READ_IMAGE_ARGS => "L",
|
108
108
|
OpenCL::CL_DEVICE_MAX_WRITE_IMAGE_ARGS => "L",
|
109
109
|
OpenCL::CL_DEVICE_MAX_MEM_ALLOC_SIZE => "L",
|
110
|
-
OpenCL::CL_DEVICE_IMAGE2D_MAX_WIDTH => "
|
111
|
-
OpenCL::CL_DEVICE_IMAGE2D_MAX_HEIGHT => "
|
112
|
-
OpenCL::CL_DEVICE_IMAGE3D_MAX_WIDTH => "
|
113
|
-
OpenCL::CL_DEVICE_IMAGE3D_MAX_HEIGHT => "
|
114
|
-
OpenCL::CL_DEVICE_IMAGE3D_MAX_DEPTH => "
|
110
|
+
OpenCL::CL_DEVICE_IMAGE2D_MAX_WIDTH => "Q",
|
111
|
+
OpenCL::CL_DEVICE_IMAGE2D_MAX_HEIGHT => "Q",
|
112
|
+
OpenCL::CL_DEVICE_IMAGE3D_MAX_WIDTH => "Q",
|
113
|
+
OpenCL::CL_DEVICE_IMAGE3D_MAX_HEIGHT => "Q",
|
114
|
+
OpenCL::CL_DEVICE_IMAGE3D_MAX_DEPTH => "Q",
|
115
115
|
OpenCL::CL_DEVICE_IMAGE_SUPPORT => "cl_bool",
|
116
|
-
OpenCL::CL_DEVICE_MAX_PARAMETER_SIZE => "
|
116
|
+
OpenCL::CL_DEVICE_MAX_PARAMETER_SIZE => "Q",
|
117
117
|
OpenCL::CL_DEVICE_MAX_SAMPLERS => "L",
|
118
118
|
OpenCL::CL_DEVICE_MEM_BASE_ADDR_ALIGN => "L",
|
119
119
|
OpenCL::CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE => "L",
|
@@ -127,7 +127,7 @@ $enum2pack = {
|
|
127
127
|
OpenCL::CL_DEVICE_LOCAL_MEM_TYPE => "L",
|
128
128
|
OpenCL::CL_DEVICE_LOCAL_MEM_SIZE => "L",
|
129
129
|
OpenCL::CL_DEVICE_ERROR_CORRECTION_SUPPORT => "cl_bool",
|
130
|
-
OpenCL::CL_DEVICE_PROFILING_TIMER_RESOLUTION => "
|
130
|
+
OpenCL::CL_DEVICE_PROFILING_TIMER_RESOLUTION => "Q",
|
131
131
|
OpenCL::CL_DEVICE_ENDIAN_LITTLE => "cl_bool",
|
132
132
|
OpenCL::CL_DEVICE_AVAILABLE => "cl_bool",
|
133
133
|
OpenCL::CL_DEVICE_COMPILER_AVAILABLE => "cl_bool",
|
@@ -153,8 +153,8 @@ $enum2pack = {
|
|
153
153
|
OpenCL::CL_DEVICE_OPENCL_C_VERSION => "Z*",
|
154
154
|
OpenCL::CL_DEVICE_LINKER_AVAILABLE => "cl_bool",
|
155
155
|
OpenCL::CL_DEVICE_BUILT_IN_KERNELS => "Z*",
|
156
|
-
OpenCL::CL_DEVICE_IMAGE_MAX_BUFFER_SIZE => "
|
157
|
-
OpenCL::CL_DEVICE_IMAGE_MAX_ARRAY_SIZE => "
|
156
|
+
OpenCL::CL_DEVICE_IMAGE_MAX_BUFFER_SIZE => "Q",
|
157
|
+
OpenCL::CL_DEVICE_IMAGE_MAX_ARRAY_SIZE => "Q",
|
158
158
|
OpenCL::CL_DEVICE_PARENT_DEVICE => "Q",
|
159
159
|
OpenCL::CL_DEVICE_PARTITION_MAX_SUB_DEVICES => "L",
|
160
160
|
OpenCL::CL_DEVICE_PARTITION_PROPERTIES => "L",
|
@@ -162,7 +162,7 @@ $enum2pack = {
|
|
162
162
|
OpenCL::CL_DEVICE_PARTITION_TYPE => "L",
|
163
163
|
OpenCL::CL_DEVICE_REFERENCE_COUNT => "L",
|
164
164
|
OpenCL::CL_DEVICE_PREFERRED_INTEROP_USER_SYNC => "L",
|
165
|
-
OpenCL::CL_DEVICE_PRINTF_BUFFER_SIZE => "
|
165
|
+
OpenCL::CL_DEVICE_PRINTF_BUFFER_SIZE => "Q",
|
166
166
|
OpenCL::CL_DEVICE_IMAGE_PITCH_ALIGNMENT => "L",
|
167
167
|
OpenCL::CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT => "L"
|
168
168
|
}
|
data/sample/util/clu.rb
CHANGED
@@ -255,8 +255,8 @@ end
|
|
255
255
|
class CLUContext
|
256
256
|
attr_reader :context
|
257
257
|
|
258
|
-
def initialize
|
259
|
-
@context =
|
258
|
+
def initialize(h = nil)
|
259
|
+
@context = h # cl_context
|
260
260
|
end
|
261
261
|
|
262
262
|
def handle
|
@@ -411,8 +411,8 @@ end
|
|
411
411
|
class CLUMemory
|
412
412
|
attr_reader :mem # cl_mem
|
413
413
|
|
414
|
-
def initialize
|
415
|
-
@mem =
|
414
|
+
def initialize(h = nil)
|
415
|
+
@mem = h
|
416
416
|
end
|
417
417
|
|
418
418
|
def handle
|
@@ -691,8 +691,8 @@ end
|
|
691
691
|
class CLUCommandQueue
|
692
692
|
attr_reader :command_queue # cl_command_queue
|
693
693
|
|
694
|
-
def initialize
|
695
|
-
@command_queue =
|
694
|
+
def initialize(h = nil)
|
695
|
+
@command_queue = h # cl_command_queue
|
696
696
|
end
|
697
697
|
|
698
698
|
def handle
|
@@ -720,7 +720,7 @@ class CLUCommandQueue
|
|
720
720
|
|
721
721
|
def self.newCommandQueue(context, device, properties = 0, error_info: nil)
|
722
722
|
obj = CLUCommandQueue.new
|
723
|
-
ret = obj.createCommandQueue(context, device,
|
723
|
+
ret = obj.createCommandQueue(context, device, properties, error_info: error_info)
|
724
724
|
return ret == nil ? nil : obj
|
725
725
|
end
|
726
726
|
|
@@ -1134,8 +1134,8 @@ end
|
|
1134
1134
|
class CLUProgram
|
1135
1135
|
attr_reader :program # cl_program
|
1136
1136
|
|
1137
|
-
def initialize
|
1138
|
-
@program =
|
1137
|
+
def initialize(h = nil)
|
1138
|
+
@program = h
|
1139
1139
|
end
|
1140
1140
|
|
1141
1141
|
def handle
|
@@ -1216,8 +1216,8 @@ end
|
|
1216
1216
|
class CLUKernel
|
1217
1217
|
attr_reader :kernel, :name # cl_kernel and the name of '__kernel' entry point
|
1218
1218
|
|
1219
|
-
def initialize
|
1220
|
-
@kernel =
|
1219
|
+
def initialize(h = nil)
|
1220
|
+
@kernel = h
|
1221
1221
|
@name = nil
|
1222
1222
|
end
|
1223
1223
|
|
@@ -1497,6 +1497,226 @@ end
|
|
1497
1497
|
|
1498
1498
|
################################################################################
|
1499
1499
|
|
1500
|
+
class CLUEvent
|
1501
|
+
attr_reader :event # cl_event
|
1502
|
+
|
1503
|
+
def initialize(h = nil)
|
1504
|
+
@event = h
|
1505
|
+
end
|
1506
|
+
|
1507
|
+
def handle
|
1508
|
+
@event
|
1509
|
+
end
|
1510
|
+
|
1511
|
+
# const cl_event * : event_list
|
1512
|
+
def self.waitForEvents(event_list)
|
1513
|
+
event_list.collect! {|event| event.kind_of?(CLUEvent) ? event.handle.to_i : event}
|
1514
|
+
# cl_uint : num_events
|
1515
|
+
num_events = event_list.length
|
1516
|
+
|
1517
|
+
err = OpenCL.clWaitForEvents(num_events, event_list.pack("Q*"))
|
1518
|
+
return err
|
1519
|
+
end
|
1520
|
+
|
1521
|
+
def wait(event: @event)
|
1522
|
+
return self.class.waitForEvents([event])
|
1523
|
+
end
|
1524
|
+
|
1525
|
+
# cl_context : context
|
1526
|
+
def createUserEvent(context, error_info: nil)
|
1527
|
+
context = context.handle if context.kind_of? CLUContext
|
1528
|
+
errcode_ret_buf = ' ' * 4
|
1529
|
+
|
1530
|
+
cl_event = OpenCL.clCreateUserEvent(context, errcode_ret_buf)
|
1531
|
+
errcode_ret = errcode_ret_buf.unpack("l")[0]
|
1532
|
+
error_info << errcode_ret if error_info != nil
|
1533
|
+
|
1534
|
+
if errcode_ret == OpenCL::CL_SUCCESS
|
1535
|
+
@event = cl_event
|
1536
|
+
return @event
|
1537
|
+
else
|
1538
|
+
return nil
|
1539
|
+
end
|
1540
|
+
end
|
1541
|
+
|
1542
|
+
def self.newUserEvent(context, error_info: nil)
|
1543
|
+
obj = CLUEvent.new
|
1544
|
+
ret = obj.createUserEvent(context, error_info: error_info)
|
1545
|
+
return ret == nil ? nil : obj
|
1546
|
+
end
|
1547
|
+
|
1548
|
+
# cl_event : event
|
1549
|
+
# cl_int : execution_status
|
1550
|
+
def setUserEventStatus(execution_status, event: @event)
|
1551
|
+
err = OpenCL.clSetUserEventStatus(event, execution_status)
|
1552
|
+
return err
|
1553
|
+
end
|
1554
|
+
|
1555
|
+
# cl_event : event
|
1556
|
+
# cl_int : command_exec_callback_type
|
1557
|
+
# void * : pfn_notify(cl_program, void*)
|
1558
|
+
# void * : user_data
|
1559
|
+
def setEventCallback(command_exec_callback_type, pfn_notify, user_data, event: @event)
|
1560
|
+
err = OpenCL.clSetEventCallback(event, command_exec_callback_type, pfn_notify, user_data)
|
1561
|
+
return err
|
1562
|
+
end
|
1563
|
+
|
1564
|
+
# cl_event : event
|
1565
|
+
def retainEvent(event: @event)
|
1566
|
+
return OpenCL.clRetainEvent(event)
|
1567
|
+
end
|
1568
|
+
|
1569
|
+
alias_method :retain, :retainEvent
|
1570
|
+
|
1571
|
+
# cl_event : event
|
1572
|
+
def releaseEvent(event: @event)
|
1573
|
+
return OpenCL.clReleaseEvent(event)
|
1574
|
+
end
|
1575
|
+
|
1576
|
+
alias_method :release, :releaseEvent
|
1577
|
+
|
1578
|
+
# cl_event : event
|
1579
|
+
# cl_event_info : param_name
|
1580
|
+
def getEventInfo(param_name, event: @event, error_info: nil)
|
1581
|
+
# size_t : param_value_size
|
1582
|
+
# void * : param_value
|
1583
|
+
# size_t * : param_value_size_ret
|
1584
|
+
param_value_buf_length = 1024
|
1585
|
+
param_value_buf = ' ' * param_value_buf_length
|
1586
|
+
param_value_size_ret_buf = ' ' * 4
|
1587
|
+
|
1588
|
+
err = OpenCL.clGetEventInfo(event, param_name, param_value_buf_length, param_value_buf, param_value_size_ret_buf)
|
1589
|
+
error_info << err if error_info != nil
|
1590
|
+
|
1591
|
+
param_value_size_ret = param_value_size_ret_buf.unpack("L")[0]
|
1592
|
+
|
1593
|
+
unpack_format = @@event_info_param2unpack[param_name]
|
1594
|
+
return param_value_buf.unpack(unpack_format)[0]
|
1595
|
+
end
|
1596
|
+
|
1597
|
+
@@event_info_param2unpack = {
|
1598
|
+
OpenCL::CL_EVENT_COMMAND_QUEUE => "Q",
|
1599
|
+
OpenCL::CL_EVENT_CONTEXT => "Q",
|
1600
|
+
OpenCL::CL_EVENT_COMMAND_TYPE => "L",
|
1601
|
+
OpenCL::CL_EVENT_COMMAND_EXECUTION_STATUS => "l",
|
1602
|
+
OpenCL::CL_EVENT_REFERENCE_COUNT => "L",
|
1603
|
+
}
|
1604
|
+
|
1605
|
+
# cl_event : event
|
1606
|
+
# cl_profiling_info : param_name
|
1607
|
+
def getEventProfilingInfo(param_name, event: @event, error_info: nil)
|
1608
|
+
# size_t : param_value_size
|
1609
|
+
# void * : param_value
|
1610
|
+
# size_t * : param_value_size_ret
|
1611
|
+
param_value_buf_length = 1024
|
1612
|
+
param_value_buf = ' ' * param_value_buf_length
|
1613
|
+
param_value_size_ret_buf = ' ' * 4
|
1614
|
+
|
1615
|
+
err = OpenCL.clGetEventProfilingInfo(event, param_name, param_value_buf_length, param_value_buf, param_value_size_ret_buf)
|
1616
|
+
error_info << err if error_info != nil
|
1617
|
+
|
1618
|
+
param_value_size_ret = param_value_size_ret_buf.unpack("L")[0]
|
1619
|
+
|
1620
|
+
unpack_format = @@event_profinfo_param2unpack[param_name]
|
1621
|
+
return param_value_buf.unpack(unpack_format)[0]
|
1622
|
+
end
|
1623
|
+
|
1624
|
+
@@event_profinfo_param2unpack = {
|
1625
|
+
OpenCL::CL_PROFILING_COMMAND_QUEUED => "Q",
|
1626
|
+
OpenCL::CL_PROFILING_COMMAND_SUBMIT => "Q",
|
1627
|
+
OpenCL::CL_PROFILING_COMMAND_START => "Q",
|
1628
|
+
OpenCL::CL_PROFILING_COMMAND_END => "Q",
|
1629
|
+
}
|
1630
|
+
end
|
1631
|
+
|
1632
|
+
################################################################################
|
1633
|
+
|
1634
|
+
class CLUSampler
|
1635
|
+
attr_reader :sampler # cl_sampler
|
1636
|
+
|
1637
|
+
def initialize(h = nil)
|
1638
|
+
@sampler = h
|
1639
|
+
end
|
1640
|
+
|
1641
|
+
def handle
|
1642
|
+
@sampler
|
1643
|
+
end
|
1644
|
+
|
1645
|
+
# cl_context : context
|
1646
|
+
# cl_bool : normalized_coords
|
1647
|
+
# cl_addressing_mode : addressing_mode
|
1648
|
+
# cl_filter_mode : filter_mode
|
1649
|
+
def createSampler(context, normalized_coords, addressing_mode, filter_mode, error_info: nil)
|
1650
|
+
context = context.handle if context.kind_of? CLUContext
|
1651
|
+
errcode_ret_buf = ' ' * 4
|
1652
|
+
|
1653
|
+
cl_smp = OpenCL.clCreateSampler(context, normalized_coords, addressing_mode, filter_mode, errcode_ret_buf)
|
1654
|
+
errcode_ret = errcode_ret_buf.unpack("l")[0]
|
1655
|
+
error_info << errcode_ret if error_info != nil
|
1656
|
+
|
1657
|
+
if errcode_ret == OpenCL::CL_SUCCESS
|
1658
|
+
@sampler = cl_smp
|
1659
|
+
return @sampler
|
1660
|
+
else
|
1661
|
+
return nil
|
1662
|
+
end
|
1663
|
+
end
|
1664
|
+
|
1665
|
+
def self.newSampler(context, normalized_coords, addressing_mode, filter_mode, error_info: nil)
|
1666
|
+
obj = CLUSampler.new
|
1667
|
+
ret = obj.createSampler(context, normalized_coords, addressing_mode, filter_mode, error_info: error_info)
|
1668
|
+
return ret == nil ? nil : obj
|
1669
|
+
end
|
1670
|
+
|
1671
|
+
# cl_sampler : sampler
|
1672
|
+
def retainSampler(sampler: @sampler)
|
1673
|
+
return OpenCL.clRetainSampler(sampler)
|
1674
|
+
end
|
1675
|
+
|
1676
|
+
alias_method :retain, :retainSampler
|
1677
|
+
|
1678
|
+
# cl_sampler : sampler
|
1679
|
+
def releaseSampler(sampler: @sampler)
|
1680
|
+
return OpenCL.clReleaseSampler(sampler)
|
1681
|
+
end
|
1682
|
+
|
1683
|
+
alias_method :release, :releaseSampler
|
1684
|
+
|
1685
|
+
# cl_sampler : sampler
|
1686
|
+
# cl_sampler_info : param_name
|
1687
|
+
def getSamplerInfo(param_name, sampler: @sampler, error_info: nil)
|
1688
|
+
# size_t : param_value_size
|
1689
|
+
# void * : param_value
|
1690
|
+
# size_t * : param_value_size_ret
|
1691
|
+
param_value_buf_length = 1024
|
1692
|
+
param_value_buf = ' ' * param_value_buf_length
|
1693
|
+
param_value_size_ret_buf = ' ' * 4
|
1694
|
+
|
1695
|
+
err = OpenCL.clGetSamplerInfo(sampler, param_name, param_value_buf_length, param_value_buf, param_value_size_ret_buf)
|
1696
|
+
error_info << err if error_info != nil
|
1697
|
+
|
1698
|
+
param_value_size_ret = param_value_size_ret_buf.unpack("L")[0]
|
1699
|
+
|
1700
|
+
unpack_format = @@param2unpack[param_name]
|
1701
|
+
case unpack_format
|
1702
|
+
when "cl_bool"
|
1703
|
+
return param_value_buf.unpack("L")[0] == 0 ? false : true
|
1704
|
+
else
|
1705
|
+
return param_value_buf.unpack(unpack_format)[0]
|
1706
|
+
end
|
1707
|
+
end
|
1708
|
+
|
1709
|
+
@@param2unpack = {
|
1710
|
+
OpenCL::CL_SAMPLER_REFERENCE_COUNT => "L",
|
1711
|
+
OpenCL::CL_SAMPLER_CONTEXT => "Q",
|
1712
|
+
OpenCL::CL_SAMPLER_NORMALIZED_COORDS => "cl_bool",
|
1713
|
+
OpenCL::CL_SAMPLER_ADDRESSING_MODE => "L",
|
1714
|
+
OpenCL::CL_SAMPLER_FILTER_MODE => "L",
|
1715
|
+
}
|
1716
|
+
end
|
1717
|
+
|
1718
|
+
################################################################################
|
1719
|
+
|
1500
1720
|
class CLU
|
1501
1721
|
|
1502
1722
|
@@image_format = {
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: opencl-bindings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.0pre3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vaiorabbit
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: |
|
14
14
|
Ruby bindings for OpenCL 1.2 using Fiddle (For MRI >= 2.0.0).
|